public override void OnInspectorGUI()
        {
            EditorGUI.BeginChangeCheck();

            VrtpEditorUtils.DrawImage(_headerLogo, 77, new Vector2(0, -4));

            EditorGUILayout.Space();

            EditorGUILayout.BeginHorizontal();
            EditorGUILayout.LabelField("Settings", EditorStyles.boldLabel);
            EditorGUILayout.LabelField(_gcOverride, EditorStyles.boldLabel, GUILayout.Width(68));
            EditorGUILayout.EndHorizontal();

            EditorGUILayout.BeginHorizontal();
            GUILayout.FlexibleSpace();
            ++EditorGUI.indentLevel;
            EditorGUILayout.LabelField(_gcOverrideAll, GUILayout.Width(32));
            EditorGUILayout.PropertyField(_pOverrideAll, _gcNull, true, GUILayout.Width(32));
            --EditorGUI.indentLevel;
            _overrideAll = _pOverrideAll.boolValue;
            EditorGUILayout.EndHorizontal();

            DrawSettings();

            if (EditorGUI.EndChangeCheck())
            {
                serializedObject.ApplyModifiedProperties();
            }
        }
コード例 #2
0
 void OnGUI()
 {
     VrtpEditorUtils.DrawImage(_headerLogo, 77, Vector2.zero, false);
     EditorGUILayout.LabelField("VR Tunnelling Pro");
     EditorGUILayout.LabelField("Version " + VrTunnellingPro.TunnellingBase.VRTP_VERSION);
     EditorGUILayout.LabelField("Copyright 2018 Sigtrap Ltd");
     EditorGUILayout.LabelField("All Rights Reserved");
 }
コード例 #3
0
 public static void Open()
 {
     if (_i == null)
     {
         _i              = ScriptableObject.CreateInstance <VrtpAboutWindow>();
         _i.minSize      = _i.maxSize = new Vector2(320, 160);
         _i.titleContent = new GUIContent("About VRTP v" + VrTunnellingPro.TunnellingBase.VRTP_VERSION);
         _i._headerLogo  = VrtpEditorUtils.LoadTexture(VrTunnellingProImageEditor.LOGO_NAME);
     }
     _i.ShowUtility();
 }
コード例 #4
0
        protected void OnEnable()
        {
            _tb         = (TunnellingBase)target;
            _headerLogo = VrtpEditorUtils.LoadTexture(HEADER_LOGO_NAME);

            InitAps(
                _pTarget, _pFxColor, _pFxCover, _pFxFeather, _pFxSkybox, _pApplyColorToBkg,
                _pAvUse, _pAvStr, _pAvMin, _pAvMax, _pAvSmooth,
                _pLaUse, _pLaStr, _pLaMin, _pLaMax, _pLaSmooth,
                _pLvUse, _pLvStr, _pLvMin, _pLvMax, _pLvSmooth,
                _pCounterMotion, _pCounterRotStr, _pCounterRotAxs,
                _pMotionEffectTarget,
                _pArtTilt, _pArtTiltStr, _pArtTiltMax, _pArtTiltSmooth,
                _pDivFps, _pDivTrans, _pDivRot
                );

            SectionToggle.Init(serializedObject, _showMotionDetection, _showMotionEffects);

            #region Motion detection labels
            _gcAvStr = new GUIContent(MOTION_STRENGTH, string.Format(MOTION_STR_FMT, MOTION_AV));
            _gcLaStr = new GUIContent(MOTION_STRENGTH, string.Format(MOTION_STR_FMT, MOTION_LA));
            _gcLvStr = new GUIContent(MOTION_STRENGTH, string.Format(MOTION_STR_FMT, MOTION_LV));

            _gcAvMin = new GUIContent(MOTION_MIN, string.Format(MOTION_MIN_FMT, MOTION_AV, MOTION_AV_UNITS));
            _gcLaMin = new GUIContent(MOTION_MIN, string.Format(MOTION_MIN_FMT, MOTION_LA, MOTION_LA_UNITS));
            _gcLvMin = new GUIContent(MOTION_MIN, string.Format(MOTION_MIN_FMT, MOTION_LV, MOTION_LV_UNITS));

            _gcAvMax = new GUIContent(MOTION_MAX, string.Format(MOTION_MAX_FMT, MOTION_AV, MOTION_AV_UNITS));
            _gcLaMax = new GUIContent(MOTION_MAX, string.Format(MOTION_MAX_FMT, MOTION_LA, MOTION_LA_UNITS));
            _gcLvMax = new GUIContent(MOTION_MAX, string.Format(MOTION_MAX_FMT, MOTION_LV, MOTION_LV_UNITS));

            _gcAvSmooth = new GUIContent(MOTION_SMOOTH, string.Format(MOTION_SMOOTH_FMT, MOTION_AV));
            _gcLaSmooth = new GUIContent(MOTION_SMOOTH, string.Format(MOTION_SMOOTH_FMT, MOTION_LA));
            _gcLvSmooth = new GUIContent(MOTION_SMOOTH, string.Format(MOTION_SMOOTH_FMT, MOTION_LV));
            #endregion

            _fiDebugMotion   = typeof(TunnellingBase).GetField("_debugMotionCalculations", BindingFlags.Instance | BindingFlags.NonPublic);
            _fiDebugAv       = typeof(TunnellingBase).GetField("_debugAv", BindingFlags.Instance | BindingFlags.NonPublic);
            _fiDebugLa       = typeof(TunnellingBase).GetField("_debugLa", BindingFlags.Instance | BindingFlags.NonPublic);
            _fiDebugLv       = typeof(TunnellingBase).GetField("_debugLv", BindingFlags.Instance | BindingFlags.NonPublic);
            _fiDebugForceOn  = typeof(TunnellingBase).GetField("_debugForceOn", BindingFlags.Instance | BindingFlags.NonPublic);
            _fiDebugForceVal = typeof(TunnellingBase).GetField("_debugForceValue", BindingFlags.Instance | BindingFlags.NonPublic);

            CacheProperties();

            EditorApplication.update += OnEditorUpdate;
        }
コード例 #5
0
        protected override void DrawCounterMotionSettings()
        {
            base.DrawCounterMotionSettings();
            EditorGUILayout.Space();
            VrtpEditorUtils.PropertyField(_pCounterVelMode);
            var mode = (TunnellingImageBase.CounterVelocityMode)_pCounterVelMode.p.intValue;

            if (mode == TunnellingImageBase.CounterVelocityMode.REAL)
            {
                VrtpEditorUtils.PropertyField(_pCounterVelResetDistance);
                VrtpEditorUtils.PropertyField(_pCounterVelResetTime);
            }
            if (mode != TunnellingImageBase.CounterVelocityMode.OFF)
            {
                VrtpEditorUtils.PropertyField(_pCounterVelStr);
                VrtpEditorUtils.PropertyField(_pCounterVelAxs);
            }
        }
コード例 #6
0
        protected override void DrawSettings()
        {
            VrtpStyles.BeginSectionBox(); {
                VrtpEditorUtils.ToggleProperty(_pDrawSkybox, null, VrtpStyles.sectionHeader);
                if (_tm.drawSkybox)
                {
                    ++EditorGUI.indentLevel;
                    EditorGUILayout.PropertyField(_pApplyColorToBkg, _gcApplyColor);
                    EditorGUILayout.PropertyField(_pFxSkybox);
                    --EditorGUI.indentLevel;
                }
            } VrtpStyles.EndSectionBox();

            VrtpStyles.BeginSectionBox(); {
                VrtpEditorUtils.ToggleProperty(_pDrawBeforeTransparent, null, VrtpStyles.sectionHeader);
            } VrtpStyles.EndSectionBox();

            VrtpStyles.BeginSectionBox(); {
                VrtpEditorUtils.ToggleProperty(_pUseMask, null, VrtpStyles.sectionHeader);
                if (_tm.useMask)
                {
                    ++EditorGUI.indentLevel;
                    EditorGUILayout.PropertyField(_pStencilRef);
                    EditorGUILayout.PropertyField(_pStencilMask);
                    EditorGUILayout.PropertyField(_pStencilBias);
                    EditorGUILayout.HelpBox("Mask may stress drawcalls and fillrate.", MessageType.Warning);
                    --EditorGUI.indentLevel;
                }
            } VrtpStyles.EndSectionBox();

            if (!_tm.irisZRejectionEnabled)
            {
                EditorGUILayout.HelpBox("Z-Rejection fillrate optimisation disabled", MessageType.Warning);
            }

            DrawMotionSettings();
        }
コード例 #7
0
 protected virtual void DrawCounterMotionSettings()
 {
     VrtpEditorUtils.PropertyField(_pCounterRotStr);
     VrtpEditorUtils.PropertyField(_pCounterRotAxs);
 }
コード例 #8
0
        protected void DrawMotionSettings()
        {
            #region Detection
            VrtpStyles.BeginSectionBox(); {
                ++EditorGUI.indentLevel;
                _showMotionDetection.active = EditorGUILayout.Foldout(_showMotionDetection, "Motion Detection", VrtpStyles.sectionFoldout);
                --EditorGUI.indentLevel;
                if (_showMotionDetection)
                {
                    EditorGUILayout.Space();

                    #region Angular Velocity
                    VrtpStyles.BeginChildBox(); {
                        VrtpEditorUtils.ToggleProperty(_pAvUse, _pAvUse.content, VrtpStyles.sectionHeader);
                        if (_tb.useAngularVelocity)
                        {
                            ++EditorGUI.indentLevel;
                            EditorGUILayout.PropertyField(_pAvStr, _gcAvStr);
                            EditorGUILayout.PropertyField(_pAvMin, _gcAvMin);
                            EditorGUILayout.PropertyField(_pAvMax, _gcAvMax);
                            EditorGUILayout.PropertyField(_pAvSmooth, _gcAvSmooth);
                            --EditorGUI.indentLevel;
                        }
                    } VrtpStyles.EndChildBox();
                    #endregion

                    #region Linear Acceleration
                    VrtpStyles.BeginChildBox(); {
                        VrtpEditorUtils.ToggleProperty(_pLaUse, _pLaUse.content, VrtpStyles.sectionHeader);
                        if (_tb.useAcceleration)
                        {
                            ++EditorGUI.indentLevel;
                            EditorGUILayout.PropertyField(_pLaStr, _gcLaStr);
                            EditorGUILayout.PropertyField(_pLaMin, _gcLaMin);
                            EditorGUILayout.PropertyField(_pLaMax, _gcLaMax);
                            EditorGUILayout.PropertyField(_pLaSmooth, _gcLaSmooth);
                            --EditorGUI.indentLevel;
                        }
                    } VrtpStyles.EndChildBox();
                    #endregion

                    #region Linear Velocity
                    VrtpStyles.BeginChildBox(); {
                        VrtpEditorUtils.ToggleProperty(_pLvUse, _pLvUse.content, VrtpStyles.sectionHeader);
                        if (_tb.useVelocity)
                        {
                            ++EditorGUI.indentLevel;
                            EditorGUILayout.PropertyField(_pLvStr, _gcLvStr);
                            EditorGUILayout.PropertyField(_pLvMin, _gcLvMin);
                            EditorGUILayout.PropertyField(_pLvMax, _gcLvMax);
                            EditorGUILayout.PropertyField(_pLvSmooth, _gcLvSmooth);
                            --EditorGUI.indentLevel;
                        }
                    } VrtpStyles.EndChildBox();
                    #endregion

                    #region Force Vignette
                    EditorGUILayout.Space();
                    VrtpEditorUtils.PropertyField(_pForceVigMode);
                    if (_pForceVigMode.p.intValue != (int)TunnellingBase.ForceVignetteMode.NONE)
                    {
                        VrtpEditorUtils.PropertyField(_pForceVigVal);
                    }
                    #endregion
                }
            } VrtpStyles.EndSectionBox();
            #endregion

            #region Effects
            VrtpStyles.BeginSectionBox(); {
                ++EditorGUI.indentLevel;
                _showMotionEffects.active = EditorGUILayout.Foldout(_showMotionEffects, "Motion Effects", VrtpStyles.sectionFoldout);
                --EditorGUI.indentLevel;
                if (_showMotionEffects)
                {
                    EditorGUILayout.Space();

                    #region Counter-motion
                    VrtpStyles.BeginChildBox(); {
                        VrtpEditorUtils.ToggleProperty(_pCounterMotion, null, VrtpStyles.sectionHeader);
                        if (_pCounterMotion.p.boolValue)
                        {
                            ++EditorGUI.indentLevel;
                            DrawCounterMotionSettings();
                            --EditorGUI.indentLevel;
                        }
                    } VrtpStyles.EndChildBox();
                    #endregion

                    EditorGUILayout.Separator();
                    EditorGUILayout.PropertyField(_pMotionEffectTarget);
                    if (_tb.motionEffectTarget == null && _tb.usingMotionEffectTarget)
                    {
                        EditorGUILayout.HelpBox("No motion effect target specified!", MessageType.Error);
                    }

                    #region Auto-tilt
                    VrtpStyles.BeginChildBox(); {
                        VrtpEditorUtils.ToggleProperty(_pArtTilt, null, VrtpStyles.sectionHeader);
                        if (_pArtTilt.p.boolValue)
                        {
                            ++EditorGUI.indentLevel;
                            EditorGUILayout.PropertyField(_pArtTiltStr);
                            EditorGUILayout.PropertyField(_pArtTiltMax);
                            EditorGUILayout.PropertyField(_pArtTiltSmooth);
                            --EditorGUI.indentLevel;
                        }
                    } VrtpStyles.EndChildBox();
                    #endregion

                    VrtpStyles.BeginChildBox(); {
                        EditorGUILayout.PropertyField(_pDivFps);
                        if (_pDivFps.p.intValue > 1)
                        {
                            EditorGUILayout.PropertyField(_pDivTrans);
                            EditorGUILayout.PropertyField(_pDivRot);
                        }
                    } VrtpStyles.EndChildBox();
                }
            } VrtpStyles.EndSectionBox();
            #endregion
        }
コード例 #9
0
        public override void OnInspectorGUI()
        {
            // Draw header
            EditorGUI.BeginChangeCheck();

            VrtpEditorUtils.DrawImage(_headerLogo, 77, new Vector2(0, 4));

            EditorGUILayout.Space();
            VrtpStyles.BeginSectionBox(); {
                EditorGUILayout.PropertyField(_pTarget);
                if (_tb.motionTarget == null)
                {
                    EditorGUILayout.HelpBox("No motion target specified!", MessageType.Error);
                }
                else if (_tb.motionTarget == _tb.transform)
                {
                    EditorGUILayout.HelpBox("Motion Target generally shouldn't be the HMD", MessageType.Warning);
                }
            } VrtpStyles.EndSectionBox();

            VrtpStyles.BeginSectionBox(); {
                ++EditorGUI.indentLevel;
                _showEffectSettings = EditorGUILayout.Foldout(_showEffectSettings, "Effect Settings", VrtpStyles.sectionFoldout);
                --EditorGUI.indentLevel;

                if (_showEffectSettings)
                {
                    EditorGUILayout.Space();
                    EditorGUILayout.PropertyField(_pFxColor);
                    EditorGUILayout.PropertyField(_pFxCover);
                    EditorGUILayout.PropertyField(_pFxFeather);
                }
            } VrtpStyles.EndSectionBox();

            // Draw content
            DrawSettings();

            // Finalise
            if (EditorGUI.EndChangeCheck())
            {
                serializedObject.ApplyModifiedProperties();
            }

            #region Debug
            VrtpStyles.BeginSectionBox(); {
                ++EditorGUI.indentLevel;
                EditorGUILayout.BeginHorizontal(); {
                    _showDebug = EditorGUILayout.Foldout(_showDebug, _gcDebugLabel, VrtpStyles.sectionFoldout);
                    GUILayout.FlexibleSpace();
                    if (GUILayout.Button("About VRTP", EditorStyles.miniButton))
                    {
                        VrtpAboutWindow.Open();
                    }
                    if (GUILayout.Button("Open Manual", EditorStyles.miniButton))
                    {
                        Application.OpenURL(URL_DOCS);
                    }
                } EditorGUILayout.EndHorizontal();
                --EditorGUI.indentLevel;

                if (_showDebug)
                {
                    bool showMotionDebug = (bool)_fiDebugMotion.GetValue(_tb);
                    EditorGUI.BeginChangeCheck();
                    showMotionDebug = EditorGUILayout.ToggleLeft(_gcDebugMotion, showMotionDebug, VrtpStyles.sectionHeader);
                    if (EditorGUI.EndChangeCheck())
                    {
                        _fiDebugMotion.SetValue(_tb, showMotionDebug);
                        // Reset peak motion data each time toggled
                        _debugAvMax = _debugLaMax = _debugLvMax = 0;
                    }
                    if (showMotionDebug)
                    {
                        ++EditorGUI.indentLevel;
                        float currentAv, currentLa, currentLv;
                        currentAv = currentLa = currentLv = 0;
                        if (Application.isPlaying)
                        {
                            #region Get motion data
                            currentAv   = (float)_fiDebugAv.GetValue(_tb);
                            currentLa   = (float)_fiDebugLa.GetValue(_tb);
                            currentLv   = (float)_fiDebugLv.GetValue(_tb);
                            _debugAvMax = Mathf.Max(currentAv, _debugAvMax);
                            _debugLaMax = Mathf.Max(currentLa, _debugLaMax);
                            _debugLvMax = Mathf.Max(currentLv, _debugLvMax);
                            #endregion
                        }
                        else
                        {
                            GUI.enabled = false;
                            _debugAvMax = _debugLaMax = _debugLvMax = 0;
                        }

                        #region Draw
                        GUILayoutOption[] options = new GUILayoutOption[] { GUILayout.Width(72) };

                        EditorGUILayout.BeginHorizontal(); {
                            EditorGUILayout.LabelField("Motion", EditorStyles.boldLabel, options);
                            EditorGUILayout.LabelField("Current", EditorStyles.boldLabel, options);
                            EditorGUILayout.LabelField("Max", EditorStyles.boldLabel, options);
                            if (GUILayout.Button(_gcDebugMotionResetAll, options))
                            {
                                _debugAvMax = _debugLaMax = _debugLvMax = 0;
                            }
                        } EditorGUILayout.EndHorizontal();

                        EditorGUILayout.BeginHorizontal(); {
                            EditorGUILayout.LabelField(_gcDebugAvLabel, options);
                            EditorGUILayout.LabelField(string.Format(DEBUG_MOTION_FORMAT, currentAv), options);
                            EditorGUILayout.LabelField(string.Format(DEBUG_MOTION_FORMAT, _debugAvMax), options);
                            if (GUILayout.Button(_gcDebugMotionResetBtn, options))
                            {
                                _debugAvMax = 0;
                            }
                        } EditorGUILayout.EndHorizontal();

                        EditorGUILayout.BeginHorizontal(); {
                            EditorGUILayout.LabelField(_gcDebugLaLabel, options);
                            EditorGUILayout.LabelField(string.Format(DEBUG_MOTION_FORMAT, currentLa), options);
                            EditorGUILayout.LabelField(string.Format(DEBUG_MOTION_FORMAT, _debugLaMax), options);
                            if (GUILayout.Button(_gcDebugMotionResetBtn, options))
                            {
                                _debugLaMax = 0;
                            }
                        } EditorGUILayout.EndHorizontal();

                        EditorGUILayout.BeginHorizontal(); {
                            EditorGUILayout.LabelField(_gcDebugLvLabel, options);
                            EditorGUILayout.LabelField(string.Format(DEBUG_MOTION_FORMAT, currentLv), options);
                            EditorGUILayout.LabelField(string.Format(DEBUG_MOTION_FORMAT, _debugLvMax), options);
                            if (GUILayout.Button(_gcDebugMotionResetBtn, options))
                            {
                                _debugLvMax = 0;
                            }
                        } EditorGUILayout.EndHorizontal();
                        #endregion
                        GUI.enabled = true;
                        --EditorGUI.indentLevel;
                    }
                    DrawDebugOptions();
                }
            } VrtpStyles.EndSectionBox();

            #endregion
        }