BsScriptObject.cpp 717 B

123456789101112131415161718192021222324252627282930313233
  1. #include "BsScriptObject.h"
  2. #include "BsMonoManager.h"
  3. #include "BsMonoField.h"
  4. namespace BansheeEngine
  5. {
  6. ScriptObjectBase::ScriptObjectBase(MonoObject* instance)
  7. :mManagedInstance(instance)
  8. {
  9. }
  10. ScriptObjectBase::~ScriptObjectBase()
  11. {
  12. if(mManagedInstance != nullptr)
  13. CM_EXCEPT(InvalidStateException, "Script object is being destroyed without its instance previously being released.");
  14. }
  15. static Vector<UINT64> dbgList;
  16. void ScriptObjectBase::_onManagedInstanceDeleted()
  17. {
  18. auto iterFind = std::find(dbgList.begin(), dbgList.end(), (UINT64)this);
  19. if (iterFind != dbgList.end())
  20. {
  21. assert(false);
  22. }
  23. dbgList.push_back((UINT64)this);
  24. mManagedInstance = nullptr;
  25. cm_delete(this);
  26. }
  27. }