public void Initialize( IMessageReceiver receiver, IMessageSender sender, RawInputChecker rawInputChecker, XInputGamePad gamepadListener, MidiInputObserver midiObserver ) { _keyboard = new KeyboardToWordToMotion(rawInputChecker); _midi = new MidiToWordToMotion(receiver, sender, midiObserver); _gamepad = new GamepadToWordToMotion(gamepadListener); _wordAnalyzer = new WordAnalyzer(); _keyboard.RequestExecuteWordToMotionItem += v => { if (UseKeyboardInput && _coolDownCount <= 0) { _coolDownCount = cooldownTime; RequestExecuteWordToMotionItem?.Invoke(v); } }; _midi.RequestExecuteWordToMotionItem += v => { if (UseMidiInput && _coolDownCount <= 0) { _coolDownCount = cooldownTime; RequestExecuteWordToMotionItem?.Invoke(v); } }; _gamepad.RequestExecuteWordToMotionItem += v => { if (UseGamepadInput && _coolDownCount <= 0) { _coolDownCount = cooldownTime; RequestExecuteWordToMotionItem?.Invoke(v); } }; _wordAnalyzer.WordDetected += word => { if (UseKeyboardWordTypingForWordToMotion) { _coolDownCount = cooldownTime; RequestExecuteWord?.Invoke(word); } }; rawInputChecker.PressedRawKeys.Subscribe(keyName => { if (UseKeyboardWordTypingForWordToMotion) { _count = forgetTime; _wordAnalyzer.Add(KeyName2Char(keyName)); } }); }
public GamepadToWordToMotion(XInputGamePad gamepadInput) { _gamepadObserve = gamepadInput.ButtonUpDown.Subscribe(data => { if (data.IsPressed && _gamePadKeyToItemIndex.ContainsKey(data.Key)) { RequestExecuteWordToMotionItem?.Invoke(_gamePadKeyToItemIndex[data.Key]); } }); }
public void Initialize(IMessageReceiver receiver, XInputGamePad gamePad) { _gamePad = gamePad; receiver.AssignCommandHandler( VmmCommands.EnableHidArmMotion, message => handIkIntegrator.EnableHidArmMotion = message.ToBoolean() ); receiver.AssignCommandHandler( VmmCommands.EnableNoHandTrackMode, message => handIkIntegrator.AlwaysHandDownMode = message.ToBoolean() ); receiver.AssignCommandHandler( VmmCommands.LengthFromWristToPalm, message => SetLengthFromWristToPalm(message.ParseAsCentimeter()) ); receiver.AssignCommandHandler( VmmCommands.LengthFromWristToTip, message => SetLengthFromWristToTip(message.ParseAsCentimeter()) ); receiver.AssignCommandHandler( VmmCommands.HandYOffsetBasic, message => SetHandYOffsetBasic(message.ParseAsCentimeter()) ); receiver.AssignCommandHandler( VmmCommands.HandYOffsetAfterKeyDown, message => SetHandYOffsetAfterKeyDown(message.ParseAsCentimeter()) ); receiver.AssignCommandHandler( VmmCommands.EnablePresenterMotion, message => handIkIntegrator.EnablePresentationMode = message.ToBoolean() ); receiver.AssignCommandHandler( VmmCommands.PresentationArmRadiusMin, message => handIkIntegrator.Presentation.PresentationArmRadiusMin = message.ParseAsCentimeter() ); receiver.AssignCommandHandler( VmmCommands.LookAtStyle, message => headIkIntegrator.SetLookAtStyle(message.Content) ); receiver.AssignCommandHandler( VmmCommands.EnableGamepad, message => _gamePad.SetEnableGamepad(message.ToBoolean()) ); receiver.AssignCommandHandler( VmmCommands.PreferDirectInputGamepad, message => _gamePad.SetPreferDirectInputGamepad(message.ToBoolean()) ); receiver.AssignCommandHandler( VmmCommands.GamepadLeanMode, message => { gamePadBasedBodyLean.SetGamepadLeanMode(message.Content); GamepadHandIk.SetGamepadLeanMode(message.Content); }); receiver.AssignCommandHandler( VmmCommands.GamepadLeanReverseHorizontal, message => { gamePadBasedBodyLean.ReverseGamepadStickLeanHorizontal = message.ToBoolean(); GamepadHandIk.ReverseGamepadStickLeanHorizontal = message.ToBoolean(); }); receiver.AssignCommandHandler( VmmCommands.GamepadLeanReverseVertical, message => { gamePadBasedBodyLean.ReverseGamepadStickLeanVertical = message.ToBoolean(); GamepadHandIk.ReverseGamepadStickLeanVertical = message.ToBoolean(); }); receiver.AssignCommandHandler( VmmCommands.SetDeviceTypeToStartWordToMotion, message => SetDeviceTypeForWordToMotion(message.ToInt()) ); }