BsManagedComponent.h 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. #pragma once
  2. #include "BsScriptEnginePrerequisites.h"
  3. #include "BsComponent.h"
  4. #include <mono/jit/jit.h>
  5. namespace BansheeEngine
  6. {
  7. class BS_SCR_BE_EXPORT ManagedComponent : public Component
  8. {
  9. public:
  10. MonoObject* getManagedInstance() const { return mManagedInstance; }
  11. MonoReflectionType* getRuntimeType() const { return mRuntimeType; }
  12. const String& getManagedFullTypeName() const { return mFullTypeName; }
  13. private:
  14. MonoObject* mManagedInstance;
  15. MonoReflectionType* mRuntimeType;
  16. uint32_t mManagedHandle;
  17. String mNamespace;
  18. String mTypeName;
  19. String mFullTypeName;
  20. /************************************************************************/
  21. /* COMPONENT OVERRIDES */
  22. /************************************************************************/
  23. protected:
  24. friend class SceneObject;
  25. /** Standard constructor.
  26. */
  27. ManagedComponent(const HSceneObject& parent, MonoReflectionType* runtimeType);
  28. void construct(MonoObject* object, MonoReflectionType* runtimeType);
  29. void onDestroyed();
  30. public:
  31. virtual void update() {}
  32. /************************************************************************/
  33. /* RTTI */
  34. /************************************************************************/
  35. public:
  36. friend class ManagedComponentRTTI;
  37. static RTTITypeBase* getRTTIStatic();
  38. virtual RTTITypeBase* getRTTI() const;
  39. protected:
  40. ManagedComponent() {} // Serialization only
  41. };
  42. }