Example #1
0
        public WordToMotionManagerReceiver(IMessageReceiver receiver, WordToMotionManager manager)
        {
            _manager = manager;
            receiver.AssignCommandHandler(
                VmmCommands.ReloadMotionRequests,
                message => ReloadMotionRequests(message.Content)
                );
            receiver.AssignCommandHandler(
                VmmCommands.PlayWordToMotionItem,
                message => PlayWordToMotionItem(message.Content)
                );
            receiver.AssignCommandHandler(
                VmmCommands.EnableWordToMotionPreview,
                message => _manager.EnablePreview = message.ToBoolean()
                );
            receiver.AssignCommandHandler(
                VmmCommands.SendWordToMotionPreviewInfo,
                message => ReceiveWordToMotionPreviewInfo(message.Content)
                );
            receiver.AssignCommandHandler(
                VmmCommands.SetDeviceTypeToStartWordToMotion,
                message => SetWordToMotionInputType(message.ToInt())
                );

            receiver.AssignCommandHandler(
                VmmCommands.RequestCustomMotionDoctor,
                _ => _manager.RunCustomMotionDoctor()
                );

            receiver.AssignQueryHandler(
                VmmQueries.GetAvailableCustomMotionClipNames,
                q =>
            {
                q.Result = string.Join("\t", _manager.LoadAvailableCustomMotionClipNames());
                Debug.Log("Get Available CustomMotion Clip Names, result = " + q.Result);
            });

            //NOTE: 残骸コードを残しときます。ビルトインモーション後の手の動きがちょっと心配ではあるよね、という話

            //NOTE: キーボード/マウスだけ消し、ゲームパッドや画像ハンドトラッキングがある、というケースでは多分無理にいじらないでも大丈夫です。
            // case MessageCommandNames.EnableHidArmMotion:
            //     //腕アニメーションが無効なとき、アニメーションの終了処理をちょっと切り替える
            //     manager.ShouldSetDefaultClipAfterMotion = !message.ToBoolean();
            //     break;
        }