2
0

BsScriptObject.cpp 1.0 KB

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