public ImageQualitySettingReceiver(IMessageReceiver receiver, string defaultQualityName) { receiver.AssignCommandHandler(VmmCommands.SetImageQuality, c => SetImageQuality(c.Content) ); receiver.AssignQueryHandler( VmmQueries.GetQualitySettingsInfo, q => { q.Result = JsonUtility.ToJson(new ImageQualityInfo() { ImageQualityNames = QualitySettings.names, CurrentQualityIndex = QualitySettings.GetQualityLevel(), }); }); receiver.AssignQueryHandler( VmmQueries.ApplyDefaultImageQuality, q => { SetImageQuality(defaultQualityName); q.Result = defaultQualityName; }); SetFrameRateWithQuality(QualitySettings.GetQualityLevel()); }
public void Initialize(IMessageReceiver receiver) { receiver.AssignCommandHandler( VmmCommands.EnableLipSync, message => SetLipSyncEnable(message.ToBoolean()) ); receiver.AssignCommandHandler( VmmCommands.SetMicrophoneDeviceName, message => SetMicrophoneDeviceName(message.Content) ); receiver.AssignCommandHandler( VmmCommands.ExTrackerEnable, message => SetExTrackerEnable(message.ToBoolean()) ); receiver.AssignCommandHandler( VmmCommands.ExTrackerEnableLipSync, message => SetExTrackerLipSyncEnable(message.ToBoolean()) ); receiver.AssignQueryHandler( VmmQueries.CurrentMicrophoneDeviceName, query => query.Result = _lipSyncContext.DeviceName ); receiver.AssignQueryHandler( VmmQueries.MicrophoneDeviceNames, query => query.Result = string.Join("\t", Microphone.devices) ); }
public FaceControlManagerMessageIo(IMessageReceiver receiver, IMessageSender sender, FaceControlManager faceControlManager) { receiver.AssignCommandHandler( VmmCommands.AutoBlinkDuringFaceTracking, message => faceControlManager.PreferAutoBlinkOnWebCamTracking = message.ToBoolean() ); receiver.AssignCommandHandler( VmmCommands.FaceDefaultFun, message => faceControlManager.DefaultBlendShape.FaceDefaultFunValue = message.ParseAsPercentage() ); receiver.AssignQueryHandler( VmmQueries.GetBlendShapeNames, query => query.Result = string.Join("\t", faceControlManager.BlendShapeStore.GetBlendShapeNames()) ); faceControlManager.VrmInitialized += () => { sender.SendCommand(MessageFactory.Instance.SetBlendShapeNames( string.Join("\t", faceControlManager.BlendShapeStore.GetBlendShapeNames()) )); }; //特に眉まわりのブレンドシェイプ割り当てだけは別途やる var _ = new BlendShapeAssignReceiver(receiver, faceControlManager); }
public FaceTrackerReceiver(IMessageReceiver receiver, FaceTracker faceTracker) { _faceTracker = faceTracker; receiver.AssignCommandHandler( VmmCommands.SetCameraDeviceName, message => SetCameraDeviceName(message.Content) ); receiver.AssignCommandHandler( VmmCommands.EnableFaceTracking, message => SetEnableFaceTracking(message.ToBoolean()) ); receiver.AssignCommandHandler( VmmCommands.ExTrackerEnable, message => SetEnableExTracker(message.ToBoolean()) ); receiver.AssignCommandHandler( VmmCommands.CalibrateFace, message => _faceTracker.StartCalibration() ); receiver.AssignCommandHandler( VmmCommands.SetCalibrateFaceData, message => _faceTracker.SetCalibrateData(message.Content) ); receiver.AssignCommandHandler( VmmCommands.DisableFaceTrackingHorizontalFlip, message => _faceTracker.DisableHorizontalFlip = message.ToBoolean() ); receiver.AssignQueryHandler( VmmQueries.CameraDeviceNames, query => query.Result = string.Join("\t", GetCameraDeviceNames()) ); }
public void Initialize(IMessageReceiver receiver) { receiver.AssignCommandHandler( VmmCommands.Chromakey, message => { var argb = message.ToColorFloats(); SetCameraBackgroundColor(argb[0], argb[1], argb[2], argb[3]); }); receiver.AssignCommandHandler( VmmCommands.EnableFreeCameraMode, message => EnableFreeCameraMode(message.ToBoolean()) ); receiver.AssignCommandHandler( VmmCommands.SetCustomCameraPosition, message => SetCustomCameraPosition(message.Content, true) ); receiver.AssignCommandHandler( VmmCommands.QuickLoadViewPoint, message => SetCustomCameraPosition(message.Content, true) ); receiver.AssignCommandHandler( VmmCommands.ResetCameraPosition, message => ResetCameraPosition() ); receiver.AssignCommandHandler( VmmCommands.CameraFov, message => SetCameraFov(message.ToInt()) ); receiver.AssignQueryHandler( VmmQueries.CurrentCameraPosition, query => { var t = cam.transform; var angles = t.rotation.eulerAngles; var pos = t.position; query.Result = JsonUtility.ToJson(new SerializedCameraPosition(new[] { pos.x, pos.y, pos.z, angles.x, angles.y, angles.z, })); }); }
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; }