private void applySelectedConfiguration(LMHeadMountedRigConfiguration config) { //Update background quad updateGameobject(_backgroundQuad, config.EnableBackgroundQuad); //Set graphical models updateValue(_handController, _handController.leftGraphicsModel, config.LeftHandGraphicsModel, v => _handController.leftGraphicsModel = v); updateValue(_handController, _handController.rightGraphicsModel, config.RightHandGraphicsModel, v => _handController.rightGraphicsModel = v); //Enable/Disable image retrievers foreach (LeapImageRetriever retriever in imageRetrievers) { updateValue(retriever, retriever.enabled, config.EnableImageRetrievers, e => retriever.enabled = e); } //Update camera clear flags foreach (Camera camera in vrCameras) { updateValue(camera, camera.clearFlags, config.CameraClearFlags, v => camera.clearFlags = v); } //Update temporal alignment script updateValue(_aligner, _aligner.TweenImageWarping, config.TweenImageWarping, v => _aligner.TweenImageWarping = v); updateValue(_aligner, _aligner.TweenRotationalWarping, config.TweenRotationalWarping, v => _aligner.TweenRotationalWarping = v); updateValue(_aligner, _aligner.TweenPositionalWarping, config.TweenPositionalWarping, v => _aligner.TweenPositionalWarping = v); updateValue(_aligner, _aligner.TemporalSyncMode, config.TemporalSynMode, v => _aligner.TemporalSyncMode = v); //Update Override Eye Position foreach (LeapVRCameraControl cameraControl in cameraControls) { updateValue(cameraControl, cameraControl.OverrideEyePosition, config.OverrideEyePos, v => cameraControl.OverrideEyePosition = v); } Debug.Log("Switched to configuration: " + config.ConfigurationName); }
private void validateEnoughConfigurations() { string[] enumNames = System.Enum.GetNames(typeof(HMRConfiguration)); if (enumNames.Length > _headMountedConfigurations.Length) { LMHeadMountedRigConfiguration[] configs = new LMHeadMountedRigConfiguration[enumNames.Length]; System.Array.Copy(_headMountedConfigurations, configs, _headMountedConfigurations.Length); _headMountedConfigurations = configs; } }
public override void OnInspectorGUI() { serializedObject.Update(); EditorGUI.BeginChangeCheck(); SerializedProperty configIndexProp = serializedObject.FindProperty("_configurationIndex"); configIndexProp.intValue = EditorGUILayout.Popup("Selected Configuration", configIndexProp.intValue, _configNames); SerializedProperty configArray = serializedObject.FindProperty("_headMountedConfigurations"); if (configArray.arraySize == 0) { Debug.LogWarning("HMR Configuration Manager has no configurations!"); return; } if (configIndexProp.intValue >= configArray.arraySize) { Debug.LogWarning("HMR Configuration Index was out of bounds! Reseting configuration to default."); configIndexProp.intValue = 0; serializedObject.ApplyModifiedProperties(); return; } SerializedProperty configProp = configArray.GetArrayElementAtIndex(configIndexProp.intValue); LMHeadMountedRigConfiguration config = LMHeadMountedRigConfiguration.Deserialize(configProp); if (EditorGUI.EndChangeCheck()) { serializedObject.ApplyModifiedProperties(); applySelectedConfiguration(config); } EditorGUILayout.Space(); if (GUILayout.Button("Reapply Selected Configuration")) { applySelectedConfiguration(config); } EditorGUILayout.Space(); if (config.ShowHandGraphicField) { EditorGUILayout.LabelField("Hands to use (References Hand Controller)", EditorStyles.boldLabel); EditorGUI.BeginChangeCheck(); _manager._handController.leftGraphicsModel = (HandModel)EditorGUILayout.ObjectField("Left Hand Graphics Model", _manager._handController.leftGraphicsModel, typeof(HandModel), true); _manager._handController.rightGraphicsModel = (HandModel)EditorGUILayout.ObjectField("Right Hand Graphics Model", _manager._handController.rightGraphicsModel, typeof(HandModel), true); if (EditorGUI.EndChangeCheck()) { EditorUtility.SetDirty(_manager._handController); } } }
private void applySelectedConfiguration() { int selectedConfigurationIndex = serializedObject.FindProperty("_configuration").enumValueIndex; SerializedProperty serializedConfiguration = serializedObject.FindProperty("_headMountedConfigurations").GetArrayElementAtIndex((int)selectedConfigurationIndex); LMHeadMountedRigConfiguration configuration = deserializeHeadMountedRig(serializedConfiguration); setBackgroundQuadEnabled(configuration.enableBackgroundQuad); setGraphicsModels(configuration.leftHandGraphicsModel, configuration.rightHandGraphicsModel); setLeftAndRightCamerasEnabled(configuration.enableLeftAndRightCameras); setLeftAndRightImageRetrieversEnabled(configuration.enableLeftAndRightImageRetrievers); setCenterCameraEnabled(configuration.enableCenterCamera); setCameraClearFlags((CameraClearFlags)configuration.cameraClearFlags); setTimewarp(configuration.tweenTimewarp); setPosition(configuration.tweenPosition); setForward(configuration.tweenForward); Debug.Log("Switched to configuration: " + configuration.configurationName); }
public static LMHeadMountedRigConfiguration Deserialize(SerializedProperty property) { LMHeadMountedRigConfiguration config = new LMHeadMountedRigConfiguration(); config._configurationName = property.FindPropertyRelative("_configurationName").stringValue; config._enableBackgroundQuad = property.FindPropertyRelative("_enableBackgroundQuad").boolValue; config._leftHandGraphicsModel = property.FindPropertyRelative("_leftHandGraphicsModel").objectReferenceValue as HandModel; config._rightHandGraphicsModel = property.FindPropertyRelative("_rightHandGraphicsModel").objectReferenceValue as HandModel; config._enableImageRetrievers = property.FindPropertyRelative("_enableImageRetrievers").boolValue; config._cameraClearFlags = (CameraClearFlags)property.FindPropertyRelative("_cameraClearFlags").intValue; config._tweenImageWarping = property.FindPropertyRelative("_tweenImageWarping").floatValue; config._tweenRotationalWarping = property.FindPropertyRelative("_tweenRotationalWarping").floatValue; config._tweenPositionalWarping = property.FindPropertyRelative("_tweenPositionalWarping").floatValue; config._temporalSyncMode = (LeapVRTemporalWarping.SyncMode)property.FindPropertyRelative("_temporalSyncMode").intValue; config._overrideEyePos = property.FindPropertyRelative("_overrideEyePos").boolValue; return(config); }