BsScriptInputConfiguration.h 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. #pragma once
  2. #include "BsScriptEnginePrerequisites.h"
  3. #include "BsScriptObject.h"
  4. #include "BsInputConfiguration.h"
  5. namespace BansheeEngine
  6. {
  7. /**
  8. * @brief Interop class between C++ & CLR for InputConfiguration.
  9. */
  10. class BS_SCR_BE_EXPORT ScriptInputConfiguration : public ScriptObject<ScriptInputConfiguration>
  11. {
  12. public:
  13. SCRIPT_OBJ(ENGINE_ASSEMBLY, "BansheeEngine", "InputConfiguration")
  14. /**
  15. * @brief Returns the internal wrapped InputConfiguration object.
  16. */
  17. InputConfigurationPtr getInternalValue() const { return mInputConfig; }
  18. /**
  19. * @brief Attempts to find a existing interop object for the provided input configuration.
  20. * Returns null if one cannot be found.
  21. */
  22. static ScriptInputConfiguration* getScriptInputConfig(const InputConfigurationPtr& inputConfig);
  23. /**
  24. * @brief Creates a new interop object for the provided input configuration. Caller should first
  25. * call ::getScriptInputConfig to ensure one doesn't already exist.
  26. */
  27. static ScriptInputConfiguration* createScriptInputConfig(const InputConfigurationPtr& inputConfig);
  28. private:
  29. ScriptInputConfiguration(MonoObject* instance, const InputConfigurationPtr& inputConfig);
  30. /**
  31. * @copydoc ScriptObjectBase::_onManagedInstanceDeleted
  32. */
  33. void _onManagedInstanceDeleted() override;
  34. InputConfigurationPtr mInputConfig;
  35. static Map<UINT64, ScriptInputConfiguration*> ScriptInputConfigurations;
  36. /************************************************************************/
  37. /* CLR HOOKS */
  38. /************************************************************************/
  39. static void internal_CreateInstance(MonoObject* object);
  40. static void internal_RegisterButton(ScriptInputConfiguration* thisPtr, MonoString* name, ButtonCode buttonCode,
  41. ButtonModifier modifiers, bool repeatable);
  42. static void internal_UnregisterButton(ScriptInputConfiguration* thisPtr, MonoString* name);
  43. static void internal_RegisterAxis(ScriptInputConfiguration* thisPtr, MonoString* name, InputAxis type, float deadZone,
  44. float sensitivity, bool invert);
  45. static void internal_UnregisterAxis(ScriptInputConfiguration* thisPtr, MonoString* name);
  46. static void internal_SetRepeatInterval(ScriptInputConfiguration* thisPtr, UINT64 milliseconds);
  47. static UINT64 internal_GetRepeatInterval(ScriptInputConfiguration* thisPtr);
  48. };
  49. /**
  50. * @brief Interop class between C++ & CLR for VirtualAxis.
  51. */
  52. class BS_SCR_BE_EXPORT ScriptVirtualAxis : public ScriptObject <ScriptVirtualAxis>
  53. {
  54. public:
  55. SCRIPT_OBJ(ENGINE_ASSEMBLY, "BansheeEngine", "VirtualAxis")
  56. private:
  57. ScriptVirtualAxis(MonoObject* instance);
  58. /************************************************************************/
  59. /* CLR HOOKS */
  60. /************************************************************************/
  61. static UINT32 internal_InitVirtualAxis(MonoString* name);
  62. };
  63. }