/// <summary>
        /// On enable we grab our properties
        /// </summary>
        protected virtual void OnEnable()
        {
            ShaderController myTarget = (ShaderController)target;

            _TargetRenderer                = serializedObject.FindProperty("TargetRenderer");
            _Curve                         = serializedObject.FindProperty("Curve");
            _MinValue                      = serializedObject.FindProperty("MinValue");
            _MaxValue                      = serializedObject.FindProperty("MaxValue");
            _Duration                      = serializedObject.FindProperty("Duration");
            _PingPongPauseDuration         = serializedObject.FindProperty("PingPongPauseDuration");
            _Amplitude                     = serializedObject.FindProperty("Amplitude");
            _Frequency                     = serializedObject.FindProperty("Frequency");
            _Shift                         = serializedObject.FindProperty("Shift");
            _RemapNoiseValues              = serializedObject.FindProperty("RemapNoiseValues");
            _RemapNoiseZero                = serializedObject.FindProperty("RemapNoiseZero");
            _RemapNoiseOne                 = serializedObject.FindProperty("RemapNoiseOne");
            _OneTimeDuration               = serializedObject.FindProperty("OneTimeDuration");
            _OneTimeAmplitude              = serializedObject.FindProperty("OneTimeAmplitude");
            _OneTimeRemapMin               = serializedObject.FindProperty("OneTimeRemapMin");
            _OneTimeRemapMax               = serializedObject.FindProperty("OneTimeRemapMax");
            _OneTimeCurve                  = serializedObject.FindProperty("OneTimeCurve");
            _DisableAfterOneTime           = serializedObject.FindProperty("DisableAfterOneTime");
            _DisableGameObjectAfterOneTime = serializedObject.FindProperty("DisableGameObjectAfterOneTime");
            _OneTimeButton                 = serializedObject.FindProperty("OneTimeButton");
            _AudioAnalyzer                 = serializedObject.FindProperty("AudioAnalyzer");
            _BeatID                        = serializedObject.FindProperty("BeatID");
            _AudioAnalyzerMultiplier       = serializedObject.FindProperty("AudioAnalyzerMultiplier");
            _AudioAnalyzerOffset           = serializedObject.FindProperty("AudioAnalyzerOffset");
            _AudioAnalyzerLerp             = serializedObject.FindProperty("AudioAnalyzerLerp");
            _ToDestinationValue            = serializedObject.FindProperty("ToDestinationValue");
            _ToDestinationDuration         = serializedObject.FindProperty("ToDestinationDuration");
            _ToDestinationCurve            = serializedObject.FindProperty("ToDestinationCurve");
            _DisableAfterToDestination     = serializedObject.FindProperty("DisableAfterToDestination");
            _ToDestinationButton           = serializedObject.FindProperty("ToDestinationButton");
            _InitialValue                  = serializedObject.FindProperty("InitialValue");
            _CurrentValue                  = serializedObject.FindProperty("CurrentValue");
            _CurrentValueNormalized        = serializedObject.FindProperty("CurrentValueNormalized");
            _InitialColor                  = serializedObject.FindProperty("InitialColor");
            _PropertyID                    = serializedObject.FindProperty("PropertyID");
            _PropertyFound                 = serializedObject.FindProperty("PropertyFound");
            _TargetMaterial                = serializedObject.FindProperty("TargetMaterial");
            _DrivenLevel                   = serializedObject.FindProperty("DrivenLevel");
            _FromColor                     = serializedObject.FindProperty("FromColor");
            _ToColor                       = serializedObject.FindProperty("ToColor");
        }
Пример #2
0
        /// <summary>
        /// Draws a conditional inspector
        /// </summary>
        public override void OnInspectorGUI()
        {
            serializedObject.Update();
            Undo.RecordObject(target, "Modified ShaderController");

            ShaderController myTarget = (ShaderController)target;

            Editor.DrawPropertiesExcluding(serializedObject, new string[] { "m_Script", "Curve", "MinValue", "MaxValue", "Duration", "PingPongPauseDuration",
                                                                            "Amplitude", "Frequency", "Shift", "OneTimeDuration", "OneTimeAmplitude", "OneTimeRemapMin",
                                                                            "OneTimeRemapMax", "OneTimeCurve", "DisableAfterOneTime", "DisableGameObjectAfterOneTime", "OneTimeButton", "AudioAnalyzer",
                                                                            "BeatID", "AudioAnalyzerMultiplier", "AudioAnalyzerOffset",
                                                                            "AudioAnalyzerLerp", "ToDestinationValue",
                                                                            "ToDestinationDuration", "ToDestinationCurve", "DisableAfterToDestination", "ToDestinationButton",
                                                                            "InitialValue", "CurrentValue", "InitialColor", "PropertyID", "PropertyFound", "TargetMaterial" });

            if (myTarget.ControlMode == ShaderController.ControlModes.PingPong)
            {
                EditorGUILayout.PropertyField(_Curve);
                EditorGUILayout.PropertyField(_MinValue);
                EditorGUILayout.PropertyField(_MaxValue);
                EditorGUILayout.PropertyField(_Duration);
                EditorGUILayout.PropertyField(_PingPongPauseDuration);
            }
            else if (myTarget.ControlMode == ShaderController.ControlModes.Random)
            {
                EditorGUILayout.PropertyField(_Amplitude);
                EditorGUILayout.PropertyField(_Frequency);
                EditorGUILayout.PropertyField(_Shift);
            }
            else if (myTarget.ControlMode == ShaderController.ControlModes.OneTime)
            {
                EditorGUILayout.PropertyField(_OneTimeDuration);
                EditorGUILayout.PropertyField(_OneTimeAmplitude);
                EditorGUILayout.PropertyField(_OneTimeRemapMin);
                EditorGUILayout.PropertyField(_OneTimeRemapMax);
                EditorGUILayout.PropertyField(_OneTimeCurve);
                EditorGUILayout.PropertyField(_DisableAfterOneTime);
                EditorGUILayout.PropertyField(_DisableGameObjectAfterOneTime);
                EditorGUILayout.PropertyField(_OneTimeButton);
            }
            else if (myTarget.ControlMode == ShaderController.ControlModes.AudioAnalyzer)
            {
                EditorGUILayout.PropertyField(_AudioAnalyzer);
                EditorGUILayout.PropertyField(_BeatID);
                EditorGUILayout.PropertyField(_AudioAnalyzerMultiplier);
                EditorGUILayout.PropertyField(_AudioAnalyzerOffset);
                EditorGUILayout.PropertyField(_AudioAnalyzerLerp);
            }
            else if (myTarget.ControlMode == ShaderController.ControlModes.ToDestination)
            {
                EditorGUILayout.PropertyField(_ToDestinationValue);
                EditorGUILayout.PropertyField(_ToDestinationDuration);
                EditorGUILayout.PropertyField(_ToDestinationCurve);
                EditorGUILayout.PropertyField(_DisableAfterToDestination);
                EditorGUILayout.PropertyField(_ToDestinationButton);
            }

            EditorGUILayout.PropertyField(_InitialValue);
            EditorGUILayout.PropertyField(_CurrentValue);
            EditorGUILayout.PropertyField(_InitialColor);
            EditorGUILayout.PropertyField(_PropertyID);
            EditorGUILayout.PropertyField(_PropertyFound);
            EditorGUILayout.PropertyField(_TargetMaterial);

            serializedObject.ApplyModifiedProperties();
        }
        /// <summary>
        /// Draws a conditional inspector
        /// </summary>
        public override void OnInspectorGUI()
        {
            serializedObject.Update();
            Undo.RecordObject(target, "Modified ShaderController");

            ShaderController myTarget = (ShaderController)target;

            Editor.DrawPropertiesExcluding(serializedObject, new string[] { "m_Script", "Curve", "MinValue", "MaxValue", "Duration", "PingPongPauseDuration",
                                                                            "Amplitude", "Frequency", "Shift", "OneTimeDuration", "OneTimeAmplitude", "OneTimeRemapMin",
                                                                            "OneTimeRemapMax", "OneTimeCurve", "DisableAfterOneTime", "DisableGameObjectAfterOneTime", "OneTimeButton", "AudioAnalyzer",
                                                                            "BeatID", "AudioAnalyzerMultiplier", "AudioAnalyzerOffset",
                                                                            "AudioAnalyzerLerp", "ToDestinationValue", "RemapNoiseValues", "RemapNoiseZero", "RemapNoiseOne",
                                                                            "ToDestinationDuration", "ToDestinationCurve", "DisableAfterToDestination", "ToDestinationButton", "DrivenLevel", "FromColor", "ToColor",
                                                                            "InitialValue", "CurrentValue", "CurrentValueNormalized", "InitialColor", "PropertyID", "PropertyFound", "TargetMaterial" });

            if (myTarget.PropertyType == ShaderController.PropertyTypes.Color)
            {
                EditorGUILayout.PropertyField(_FromColor);
                EditorGUILayout.PropertyField(_ToColor);
            }

            if (myTarget.ControlMode == ShaderController.ControlModes.PingPong)
            {
                EditorGUILayout.PropertyField(_Curve);
                EditorGUILayout.PropertyField(_MinValue);
                EditorGUILayout.PropertyField(_MaxValue);
                EditorGUILayout.PropertyField(_Duration);
                EditorGUILayout.PropertyField(_PingPongPauseDuration);
            }
            else if (myTarget.ControlMode == ShaderController.ControlModes.Random)
            {
                EditorGUILayout.PropertyField(_Amplitude);
                EditorGUILayout.PropertyField(_Frequency);
                EditorGUILayout.PropertyField(_Shift);
                EditorGUILayout.PropertyField(_RemapNoiseValues);
                EditorGUILayout.PropertyField(_RemapNoiseZero);
                EditorGUILayout.PropertyField(_RemapNoiseOne);
            }
            else if (myTarget.ControlMode == ShaderController.ControlModes.OneTime)
            {
                EditorGUILayout.PropertyField(_OneTimeDuration);
                EditorGUILayout.PropertyField(_OneTimeAmplitude);
                EditorGUILayout.PropertyField(_OneTimeRemapMin);
                EditorGUILayout.PropertyField(_OneTimeRemapMax);
                EditorGUILayout.PropertyField(_OneTimeCurve);
                EditorGUILayout.PropertyField(_DisableAfterOneTime);
                EditorGUILayout.PropertyField(_DisableGameObjectAfterOneTime);
                EditorGUILayout.PropertyField(_OneTimeButton);
            }
            else if (myTarget.ControlMode == ShaderController.ControlModes.AudioAnalyzer)
            {
                EditorGUILayout.PropertyField(_AudioAnalyzer);
                EditorGUILayout.PropertyField(_BeatID);
                EditorGUILayout.PropertyField(_AudioAnalyzerMultiplier);
                EditorGUILayout.PropertyField(_AudioAnalyzerOffset);
                EditorGUILayout.PropertyField(_AudioAnalyzerLerp);
            }
            else if (myTarget.ControlMode == ShaderController.ControlModes.Driven)
            {
                EditorGUILayout.PropertyField(_DrivenLevel);
            }
            else if (myTarget.ControlMode == ShaderController.ControlModes.ToDestination)
            {
                EditorGUILayout.PropertyField(_ToDestinationValue);
                EditorGUILayout.PropertyField(_ToDestinationDuration);
                EditorGUILayout.PropertyField(_ToDestinationCurve);
                EditorGUILayout.PropertyField(_DisableAfterToDestination);
                EditorGUILayout.PropertyField(_ToDestinationButton);
            }

            EditorGUILayout.PropertyField(_InitialValue);
            EditorGUILayout.PropertyField(_CurrentValue);
            EditorGUILayout.PropertyField(_CurrentValueNormalized);
            EditorGUILayout.PropertyField(_InitialColor);
            EditorGUILayout.PropertyField(_PropertyID);
            EditorGUILayout.PropertyField(_PropertyFound);
            EditorGUILayout.PropertyField(_TargetMaterial);

            serializedObject.ApplyModifiedProperties();

            if (Application.isPlaying)
            {
                _barRect = EditorGUILayout.GetControlRect();
                DrawLevelProgressBar(_barRect, myTarget.CurrentValueNormalized, _mmYellow, _mmRed);
            }
        }