2
0

BsScriptGizmoManager.h 856 B

123456789101112131415161718192021222324252627282930313233343536373839404142
  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. MonoClass* componentType;
  18. MonoMethod* drawGizmosMethod;
  19. UINT32 flags;
  20. };
  21. public:
  22. ScriptGizmoManager(ScriptAssemblyManager& scriptObjectManager);
  23. ~ScriptGizmoManager();
  24. void update();
  25. private:
  26. void reloadAssemblyData();
  27. bool isValidDrawGizmoMethod(MonoMethod* method, MonoClass*& componentType, UINT32& drawGizmoFlags);
  28. ScriptAssemblyManager& mScriptObjectManager;
  29. HEvent mDomainLoadedConn;
  30. MonoClass* mDrawGizmoAttribute;
  31. MonoField* mFlagsField;
  32. Map<String, GizmoData> mGizmoDrawers;
  33. };
  34. }