BsGameObjectHandle.cpp 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. #include "BsCorePrerequisites.h"
  2. #include "BsGameObject.h"
  3. #include "BsGameObjectHandle.h"
  4. #include "BsException.h"
  5. #include "BsGameObjectHandleRTTI.h"
  6. namespace BansheeEngine
  7. {
  8. GameObjectHandleBase::GameObjectHandleBase(const std::shared_ptr<GameObjectHandleData>& data)
  9. :mData(data)
  10. { }
  11. GameObjectHandleBase::GameObjectHandleBase(const std::shared_ptr<GameObject> ptr)
  12. {
  13. mData = bs_shared_ptr<GameObjectHandleData, PoolAlloc>(ptr->mInstanceData);
  14. }
  15. GameObjectHandleBase::GameObjectHandleBase(std::nullptr_t ptr)
  16. {
  17. mData = bs_shared_ptr<GameObjectHandleData, PoolAlloc>(nullptr);
  18. }
  19. GameObjectHandleBase::GameObjectHandleBase()
  20. {
  21. mData = bs_shared_ptr<GameObjectHandleData, PoolAlloc>(nullptr);
  22. }
  23. void GameObjectHandleBase::_resolve(const GameObjectHandleBase& object)
  24. {
  25. mData->mPtr = object.mData->mPtr;
  26. mData->mInstanceId = object.mData->mInstanceId;
  27. }
  28. void GameObjectHandleBase::throwIfDestroyed() const
  29. {
  30. if(isDestroyed())
  31. {
  32. BS_EXCEPT(InternalErrorException, "Trying to access an object that has been destroyed.");
  33. }
  34. }
  35. RTTITypeBase* GameObjectHandleBase::getRTTIStatic()
  36. {
  37. return GameObjectHandleRTTI::instance();
  38. }
  39. RTTITypeBase* GameObjectHandleBase::getRTTI() const
  40. {
  41. return GameObjectHandleBase::getRTTIStatic();
  42. }
  43. }