BsManagedResource.h 1.0 KB

123456789101112131415161718192021222324252627282930313233343536373839
  1. #pragma once
  2. #include "BsScriptEnginePrerequisites.h"
  3. #include "BsResource.h"
  4. #include <mono/jit/jit.h>
  5. #include <mono/metadata/object.h>
  6. namespace BansheeEngine
  7. {
  8. class BS_SCR_BE_EXPORT ManagedResource : public Resource
  9. {
  10. public:
  11. ManagedResource(MonoReflectionType* runtimeType);
  12. void construct(MonoObject* object, MonoReflectionType* runtimeType);
  13. MonoObject* getManagedInstance() const { return mManagedInstance; }
  14. MonoReflectionType* getRuntimeType() const { return mRuntimeType; }
  15. static ManagedResourcePtr createEmpty();
  16. private:
  17. void destroy_internal();
  18. MonoObject* mManagedInstance;
  19. MonoReflectionType* mRuntimeType;
  20. uint32_t mManagedHandle;
  21. /************************************************************************/
  22. /* RTTI */
  23. /************************************************************************/
  24. public:
  25. friend class ManagedResourceRTTI;
  26. static RTTITypeBase* getRTTIStatic();
  27. virtual RTTITypeBase* getRTTI() const;
  28. protected:
  29. ManagedResource() {} // Serialization only
  30. };
  31. }