NetworkIDObject.cpp 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  1. /*
  2. * Copyright (c) 2014, Oculus VR, Inc.
  3. * All rights reserved.
  4. *
  5. * This source code is licensed under the BSD-style license found in the
  6. * LICENSE file in the root directory of this source tree. An additional grant
  7. * of patent rights can be found in the PATENTS file in the same directory.
  8. *
  9. */
  10. /// \file
  11. ///
  12. #include "NetworkIDObject.h"
  13. #include "NetworkIDManager.h"
  14. #include "RakAssert.h"
  15. #include "RakAlloca.h"
  16. using namespace RakNet;
  17. NetworkIDObject::NetworkIDObject()
  18. {
  19. networkID=UNASSIGNED_NETWORK_ID;
  20. parent=0;
  21. networkIDManager=0;
  22. nextInstanceForNetworkIDManager=0;
  23. }
  24. NetworkIDObject::~NetworkIDObject()
  25. {
  26. if (networkIDManager)
  27. networkIDManager->StopTrackingNetworkIDObject(this);
  28. }
  29. void NetworkIDObject::SetNetworkIDManager( NetworkIDManager *manager)
  30. {
  31. if (manager==networkIDManager)
  32. return;
  33. if (networkIDManager)
  34. networkIDManager->StopTrackingNetworkIDObject(this);
  35. networkIDManager=manager;
  36. if (networkIDManager==0)
  37. {
  38. networkID = UNASSIGNED_NETWORK_ID;
  39. return;
  40. }
  41. if (networkID == UNASSIGNED_NETWORK_ID)
  42. {
  43. // Prior ID not set
  44. networkID = networkIDManager->GetNewNetworkID();
  45. }
  46. networkIDManager->TrackNetworkIDObject(this);
  47. }
  48. NetworkIDManager * NetworkIDObject::GetNetworkIDManager( void ) const
  49. {
  50. return networkIDManager;
  51. }
  52. NetworkID NetworkIDObject::GetNetworkID( void )
  53. {
  54. return networkID;
  55. }
  56. void NetworkIDObject::SetNetworkID( NetworkID id )
  57. {
  58. if (networkID==id)
  59. return;
  60. if ( id == UNASSIGNED_NETWORK_ID )
  61. {
  62. SetNetworkIDManager(0);
  63. return;
  64. }
  65. if ( networkIDManager )
  66. networkIDManager->StopTrackingNetworkIDObject(this);
  67. networkID = id;
  68. if (networkIDManager)
  69. networkIDManager->TrackNetworkIDObject(this);
  70. }
  71. void NetworkIDObject::SetParent( void *_parent )
  72. {
  73. parent=_parent;
  74. }
  75. void* NetworkIDObject::GetParent( void ) const
  76. {
  77. return parent;
  78. }
粤ICP备19079148号