CmGameObjectHandle.cpp 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. #include "CmPrerequisites.h"
  2. #include "CmGameObject.h"
  3. #include "CmGameObjectHandle.h"
  4. #include "CmException.h"
  5. #include "CmGameObjectHandleRTTI.h"
  6. namespace CamelotFramework
  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 = cm_shared_ptr<GameObjectHandleData, PoolAlloc>(ptr->mInstanceData);
  14. }
  15. GameObjectHandleBase::GameObjectHandleBase(std::nullptr_t ptr)
  16. {
  17. mData->mPtr = nullptr;
  18. }
  19. GameObjectHandleBase::GameObjectHandleBase()
  20. { }
  21. void GameObjectHandleBase::resolve(const GameObjectHandleBase& object)
  22. {
  23. mData = object.mData;
  24. }
  25. void GameObjectHandleBase::throwIfDestroyed() const
  26. {
  27. if(isDestroyed())
  28. {
  29. CM_EXCEPT(InternalErrorException, "Trying to access an object that has been destroyed.");
  30. }
  31. }
  32. RTTITypeBase* GameObjectHandleBase::getRTTIStatic()
  33. {
  34. return GameObjectHandleRTTI::instance();
  35. }
  36. RTTITypeBase* GameObjectHandleBase::getRTTI() const
  37. {
  38. return ResourceHandleBase::getRTTIStatic();
  39. }
  40. }