コード例 #1
0
	void ScriptInput::onButtonUp(const ButtonEvent& ev)
	{
		if (PlayInEditorManager::instance().getState() != PlayInEditorState::Playing)
			return;

		MonoUtil::invokeThunk(OnButtonReleasedThunk, ev.buttonCode, ev.deviceIdx, ev.isUsed());
	}
コード例 #2
0
EventResult InputEventHandler::ReceiveEvent(InputEvent ** evns, InputEventDispatcher * dispatcher)
{
	// Function is called periodically, if no buttons pressed/held *evns == NULL
	if (! *evns)
		return kEvent_Continue;

	for (InputEvent * e = *evns; e; e = e->next)
	{
		switch(e->eventType)
		{
			case InputEvent::kEventType_Button:
				{
					ButtonEvent * t = DYNAMIC_CAST(e, InputEvent, ButtonEvent);

					UInt32	keyCode;
					UInt32	deviceType = t->deviceType;
					UInt32	keyMask = t->keyMask;

					// Mouse
					if (deviceType == kDeviceType_Mouse)
						keyCode = InputMap::kMacro_MouseButtonOffset + keyMask; 
					// Gamepad
					else if (deviceType == kDeviceType_Gamepad)
						keyCode = InputMap::GamepadMaskToKeycode(keyMask);
					// Keyboard
					else
						keyCode = keyMask;

					// Valid scancode?
					if (keyCode >= InputMap::kMaxMacros)
						continue;

					BSFixedString	control	= *t->GetControlID();
					float			timer	= t->timer;

					bool isDown	= t->flags != 0 && timer == 0.0;
					bool isUp	= t->flags == 0 && timer != 0;

					if (isDown)
					{
						// Used by scaleform skse.GetLastControl
						SetLastControlDown(control.data, keyCode);

						g_inputKeyEventRegs.ForEach(
							keyCode,
							EventQueueFunctor1<SInt32>(BSFixedString("OnKeyDown"), (SInt32)keyCode)
							);
						g_inputControlEventRegs.ForEach(
							control,
							EventQueueFunctor1<BSFixedString>(BSFixedString("OnControlDown"), control)
							);
					}
					else if (isUp)
					{
						SetLastControlUp(control.data, keyCode);

						g_inputKeyEventRegs.ForEach(
							keyCode,
							EventQueueFunctor2<SInt32, float>(BSFixedString("OnKeyUp"), (SInt32)keyCode, timer)
							);
						g_inputControlEventRegs.ForEach(
							control,
							EventQueueFunctor2<BSFixedString, float>(BSFixedString("OnControlUp"), control, timer)
							);
					}
				}
				break;

			/*case InputEvent::kEventType_Thumbstick:
				{
					ThumbstickEvent * t = DYNAMIC_CAST(e, InputEvent, ThumbstickEvent);
					_MESSAGE("Moved %s Stick X: %f Y: %f", t->keyMask == 0x0B ? "Left" : "Right", t->x, t->y);
				}
				break;*/
		}
	}

	return kEvent_Continue;
}
コード例 #3
0
	void ScriptEditorInput::onButtonUp(const ButtonEvent& ev)
	{
		MonoUtil::invokeThunk(OnButtonReleasedThunk, ev.buttonCode, ev.deviceIdx, ev.isUsed());
	}