コード例 #1
0
        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));
                }
            });
        }
コード例 #2
0
 public GamepadToWordToMotion(XInputGamePad gamepadInput)
 {
     _gamepadObserve = gamepadInput.ButtonUpDown.Subscribe(data =>
     {
         if (data.IsPressed && _gamePadKeyToItemIndex.ContainsKey(data.Key))
         {
             RequestExecuteWordToMotionItem?.Invoke(_gamePadKeyToItemIndex[data.Key]);
         }
     });
 }
コード例 #3
0
 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())
         );
 }