BsGameObjectHandle.cpp 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. //__________________________ Banshee Project - A modern game development toolkit _________________________________//
  2. //_____________________________________ www.banshee-project.com __________________________________________________//
  3. //________________________ Copyright (c) 2014 Marko Pintera. All rights reserved. ________________________________//
  4. #include "BsCorePrerequisites.h"
  5. #include "BsGameObject.h"
  6. #include "BsGameObjectHandle.h"
  7. #include "BsException.h"
  8. #include "BsGameObjectHandleRTTI.h"
  9. namespace BansheeEngine
  10. {
  11. GameObjectHandleBase::GameObjectHandleBase(const std::shared_ptr<GameObjectHandleData>& data)
  12. :mData(data)
  13. { }
  14. GameObjectHandleBase::GameObjectHandleBase(const std::shared_ptr<GameObject> ptr)
  15. {
  16. mData = bs_shared_ptr<GameObjectHandleData, PoolAlloc>(ptr->mInstanceData);
  17. }
  18. GameObjectHandleBase::GameObjectHandleBase(std::nullptr_t ptr)
  19. {
  20. mData = bs_shared_ptr<GameObjectHandleData, PoolAlloc>(nullptr);
  21. }
  22. GameObjectHandleBase::GameObjectHandleBase()
  23. {
  24. mData = bs_shared_ptr<GameObjectHandleData, PoolAlloc>(nullptr);
  25. }
  26. void GameObjectHandleBase::_resolve(const GameObjectHandleBase& object)
  27. {
  28. mData->mPtr = object.mData->mPtr;
  29. mData->mInstanceId = object.mData->mInstanceId;
  30. }
  31. void GameObjectHandleBase::throwIfDestroyed() const
  32. {
  33. if(isDestroyed())
  34. {
  35. BS_EXCEPT(InternalErrorException, "Trying to access an object that has been destroyed.");
  36. }
  37. }
  38. RTTITypeBase* GameObjectHandleBase::getRTTIStatic()
  39. {
  40. return GameObjectHandleRTTI::instance();
  41. }
  42. RTTITypeBase* GameObjectHandleBase::getRTTI() const
  43. {
  44. return GameObjectHandleBase::getRTTIStatic();
  45. }
  46. }