예제 #1
0
    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;
    }
  }
예제 #3
0
    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 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;
        }
    }
예제 #5
0
    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);
    }