BsScriptObject.cpp 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. //********************************** Banshee Engine (www.banshee3d.com) **************************************************//
  2. //**************** Copyright (c) 2016 Marko Pintera ([email protected]). All rights reserved. **********************//
  3. #include "BsScriptObject.h"
  4. #include "BsScriptObjectManager.h"
  5. #include "BsMonoManager.h"
  6. #include "BsCrashHandler.h"
  7. #include "BsMonoField.h"
  8. namespace BansheeEngine
  9. {
  10. ScriptObjectBase::ScriptObjectBase(MonoObject* instance)
  11. :mManagedInstance(instance)
  12. {
  13. ScriptObjectManager::instance().registerScriptObject(this);
  14. }
  15. ScriptObjectBase::~ScriptObjectBase()
  16. {
  17. if(mManagedInstance != nullptr)
  18. BS_EXCEPT(InvalidStateException, "Script object is being destroyed without its instance previously being released.");
  19. ScriptObjectManager::instance().unregisterScriptObject(this);
  20. }
  21. ScriptObjectBackup ScriptObjectBase::beginRefresh()
  22. {
  23. return ScriptObjectBackup();
  24. }
  25. void ScriptObjectBase::endRefresh(const ScriptObjectBackup& data)
  26. {
  27. }
  28. void ScriptObjectBase::_onManagedInstanceDeleted()
  29. {
  30. mManagedInstance = nullptr;
  31. bs_delete(this);
  32. }
  33. PersistentScriptObjectBase::PersistentScriptObjectBase(MonoObject* instance)
  34. :ScriptObjectBase(instance)
  35. {
  36. }
  37. PersistentScriptObjectBase::~PersistentScriptObjectBase()
  38. {
  39. }
  40. }