| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263 |
- #include "BsScriptEditorVirtualInput.h"
- #include "BsMonoManager.h"
- #include "BsMonoClass.h"
- #include "BsMonoMethod.h"
- #include "BsMonoUtil.h"
- #include "BsVirtualInput.h"
- #include "BsScriptVirtualButton.h"
- namespace BansheeEngine
- {
- ScriptEditorVirtualInput::OnButtonEventThunkDef ScriptEditorVirtualInput::OnButtonUpThunk;
- ScriptEditorVirtualInput::OnButtonEventThunkDef ScriptEditorVirtualInput::OnButtonDownThunk;
- ScriptEditorVirtualInput::OnButtonEventThunkDef ScriptEditorVirtualInput::OnButtonHeldThunk;
- HEvent ScriptEditorVirtualInput::OnButtonPressedConn;
- HEvent ScriptEditorVirtualInput::OnButtonReleasedConn;
- HEvent ScriptEditorVirtualInput::OnButtonHeldConn;
- ScriptEditorVirtualInput::ScriptEditorVirtualInput(MonoObject* instance)
- :ScriptObject(instance)
- { }
- void ScriptEditorVirtualInput::initRuntimeData()
- {
- OnButtonUpThunk = (OnButtonEventThunkDef)metaData.scriptClass->getMethodExact("Internal_TriggerButtonDown", "VirtualButton,int")->getThunk();
- OnButtonDownThunk = (OnButtonEventThunkDef)metaData.scriptClass->getMethodExact("Internal_TriggerButtonUp", "VirtualButton,int")->getThunk();
- OnButtonHeldThunk = (OnButtonEventThunkDef)metaData.scriptClass->getMethodExact("Internal_TriggerButtonHeld", "VirtualButton,int")->getThunk();
- }
- void ScriptEditorVirtualInput::startUp()
- {
- VirtualInput& input = VirtualInput::instance();
- OnButtonPressedConn = input.onButtonDown.connect(&ScriptEditorVirtualInput::onButtonDown);
- OnButtonReleasedConn = input.onButtonUp.connect(&ScriptEditorVirtualInput::onButtonUp);
- OnButtonHeldConn = input.onButtonHeld.connect(&ScriptEditorVirtualInput::onButtonHeld);
- }
- void ScriptEditorVirtualInput::shutDown()
- {
- OnButtonPressedConn.disconnect();
- OnButtonReleasedConn.disconnect();
- OnButtonHeldConn.disconnect();
- }
- void ScriptEditorVirtualInput::onButtonDown(const VirtualButton& btn, UINT32 deviceIdx)
- {
- MonoObject* virtualButton = ScriptVirtualButton::box(btn);
- MonoUtil::invokeThunk(OnButtonDownThunk, virtualButton, deviceIdx);
- }
- void ScriptEditorVirtualInput::onButtonUp(const VirtualButton& btn, UINT32 deviceIdx)
- {
- MonoObject* virtualButton = ScriptVirtualButton::box(btn);
- MonoUtil::invokeThunk(OnButtonUpThunk, virtualButton, deviceIdx);
- }
- void ScriptEditorVirtualInput::onButtonHeld(const VirtualButton& btn, UINT32 deviceIdx)
- {
- MonoObject* virtualButton = ScriptVirtualButton::box(btn);
- MonoUtil::invokeThunk(OnButtonHeldThunk, virtualButton, deviceIdx);
- }
- }
|