BsScriptGUIEnumField.h 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. #pragma once
  2. #include "BsScriptEditorPrerequisites.h"
  3. #include "BsScriptGUIElement.h"
  4. namespace BansheeEngine
  5. {
  6. /**
  7. * @brief Interop class between C++ & CLR for GUIListBoxField, with some specific functionality
  8. * meant for displaying managed enumeration values.
  9. */
  10. class BS_SCR_BED_EXPORT ScriptGUIEnumField : public TScriptGUIElement<ScriptGUIEnumField>
  11. {
  12. public:
  13. SCRIPT_OBJ(EDITOR_ASSEMBLY, "BansheeEditor", "GUIEnumField")
  14. private:
  15. /**
  16. * @brief Triggered when the value in the native list box selection changes.
  17. *
  18. * @param instance Managed GUIEnumField instance.
  19. * @param newIndex New selection index.
  20. */
  21. static void onSelectionChanged(MonoObject* instance, UINT32 newIndex);
  22. ScriptGUIEnumField(MonoObject* instance, GUIListBoxField* listBoxField, const Vector<UINT32>& values);
  23. Vector<UINT32> mValues;
  24. /************************************************************************/
  25. /* CLR HOOKS */
  26. /************************************************************************/
  27. static void internal_createInstance(MonoObject* instance, MonoArray* names, MonoArray* values, MonoObject* title,
  28. UINT32 titleWidth, MonoString* style, MonoArray* guiOptions, bool withTitle);
  29. static UINT32 internal_getValue(ScriptGUIEnumField* nativeInstance);
  30. static void internal_setValue(ScriptGUIEnumField* nativeInstance, UINT32 value);
  31. static void internal_setTint(ScriptGUIEnumField* nativeInstance, Color color);
  32. typedef void(__stdcall *OnSelectionChangedThunkDef) (MonoObject*, UINT32, MonoException**);
  33. static OnSelectionChangedThunkDef onSelectionChangedThunk;
  34. };
  35. }