#include "CmPrerequisites.h" #include "CmGameObject.h" #include "CmGameObjectHandle.h" #include "CmException.h" #include "CmGameObjectHandleRTTI.h" namespace BansheeEngine { GameObjectHandleBase::GameObjectHandleBase(const std::shared_ptr& data) :mData(data) { } GameObjectHandleBase::GameObjectHandleBase(const std::shared_ptr ptr) { mData = cm_shared_ptr(ptr->mInstanceData); } GameObjectHandleBase::GameObjectHandleBase(std::nullptr_t ptr) { mData = cm_shared_ptr(nullptr); } GameObjectHandleBase::GameObjectHandleBase() { mData = cm_shared_ptr(nullptr); } void GameObjectHandleBase::resolve(const GameObjectHandleBase& object) { mData->mPtr = object.mData->mPtr; mData->mInstanceId = object.mData->mInstanceId; } void GameObjectHandleBase::throwIfDestroyed() const { if(isDestroyed()) { CM_EXCEPT(InternalErrorException, "Trying to access an object that has been destroyed."); } } RTTITypeBase* GameObjectHandleBase::getRTTIStatic() { return GameObjectHandleRTTI::instance(); } RTTITypeBase* GameObjectHandleBase::getRTTI() const { return GameObjectHandleBase::getRTTIStatic(); } }