| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465 |
- //********************************** Banshee Engine (www.banshee3d.com) **************************************************//
- //**************** Copyright (c) 2016 Marko Pintera ([email protected]). All rights reserved. **********************//
- #include "Wrappers/BsScriptEditorVirtualInput.h"
- #include "BsMonoManager.h"
- #include "BsMonoClass.h"
- #include "BsMonoMethod.h"
- #include "BsMonoUtil.h"
- #include "Input/BsVirtualInput.h"
- #include "Wrappers/BsScriptVirtualButton.h"
- namespace bs
- {
- 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);
- }
- }
|