BsScriptGizmoManager.h 1012 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. #pragma once
  2. #include "BsScriptEditorPrerequisites.h"
  3. #include "BsModule.h"
  4. namespace BansheeEngine
  5. {
  6. enum class DrawGizmoFlags
  7. {
  8. Selected = 0x01,
  9. ParentSelected = 0x02,
  10. NotSelected = 0x04,
  11. Pickable = 0x08
  12. };
  13. class BS_SCR_BED_EXPORT ScriptGizmoManager : public Module<ScriptGizmoManager>
  14. {
  15. struct GizmoData
  16. {
  17. UINT32 assemblyId;
  18. MonoClass* componentType;
  19. MonoMethod* drawGizmosMethod;
  20. UINT32 flags;
  21. };
  22. public:
  23. ScriptGizmoManager(RuntimeScriptObjects& scriptObjectManager);
  24. ~ScriptGizmoManager();
  25. void update();
  26. private:
  27. void reloadAssemblyMethods(MonoAssembly* assembly);
  28. bool isValidDrawGizmoMethod(MonoMethod* method, MonoClass*& componentType, UINT32& drawGizmoFlags);
  29. RuntimeScriptObjects& mScriptObjectManager;
  30. HEvent mAssemblyRefreshedConn;
  31. MonoClass* mDrawGizmoAttribute;
  32. MonoField* mFlagsField;
  33. Map<String, UINT32> mAssemblyNameToId;
  34. Map<String, GizmoData> mGizmoDrawers;
  35. UINT32 mNextAssemblyId;
  36. Vector<MonoAssembly*> mDelayedLoad;
  37. };
  38. }