BsScriptObject.cpp 1.0 KB

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