Esempio n. 1
0
        public override void Gaze_OnInspectorGUI()
        {
            base.BeginChangeComparision();

            // display conditions
            if (actionsScript.isActive)
            {
                if (!Application.isPlaying)
                {
                    EditorGUILayout.Space();
                    Gaze_EditorUtils.DrawSectionTitle("DELAY");
                    ShowDelayBlock();
                    EditorGUILayout.Space();

                    if (actionsScript && !actionsScript.DestroyOnTrigger)
                    {
                        EditorGUILayout.Space();
                        Gaze_EditorUtils.DrawSectionTitle("ACTIONS");
                        Gaze_EditorUtils.DrawEditorHint("Actions will be fired once all conditions are met");

                        Gaze_EditorUtils.DrawSectionTitle("Object");
                        ShowVisualsOption();
                        ShowCollidersOption();
                        ShowGravityOption();
                    }
                    actionsScript.DestroyOnTrigger = EditorGUILayout.ToggleLeft("Destroy", actionsScript.DestroyOnTrigger);

                    if (actionsScript && !actionsScript.DestroyOnTrigger)
                    {
                        EditorGUILayout.Space();

                        Gaze_EditorUtils.DrawSectionTitle("Animation & Audio");
                        ShowAudioOptions();
                        ShowAnimationOptions();

//                        Gaze_EditorUtils.DrawSectionTitle("ARKit");
//                        EditorGUILayout.Space();
//                        ShowARPlaceOptions();
                    }
                }
            }

            // save changes
            base.EndChangeComparision();
            EditorUtility.SetDirty(actionsScript);
        }
Esempio n. 2
0
 private void DisplayDuration()
 {
     // DURATION
     Gaze_EditorUtils.DrawSectionTitle("Duration");
     Gaze_EditorUtils.DrawEditorHint("How much time conditions need to remain valid.");
     Gaze_EditorUtils.DrawEditorHint("(Useful for conditions not instantaneous like gaze or proximity.)");
     EditorGUI.indentLevel++;
     GUILayout.BeginHorizontal();
     targetConditions.focusDuration = EditorGUILayout.FloatField("Duration [s]", targetConditions.focusDuration);
     GUILayout.EndHorizontal();
     GUILayout.BeginHorizontal();
     targetConditions.focusLossModeIndex = EditorGUILayout.Popup("Loss Mode", targetConditions.focusLossModeIndex, focusLossModes);
     if (targetConditions.focusLossModeIndex.Equals((int)Gaze_FocusLossMode.FADE))
     {
         targetConditions.FocusLossSpeed = EditorGUILayout.FloatField("Speed Factor", targetConditions.FocusLossSpeed);
     }
     GUILayout.EndHorizontal();
     EditorGUILayout.Space();
     EditorGUI.indentLevel--;
     // END OF DURATION
 }
Esempio n. 3
0
        public void ShowAudioOptions()
        {
            #region AudioSource

            actionsScript.ActionAudio = (Gaze_Actions.ACTIVABLE_OPTION)EditorGUILayout.EnumPopup(new GUIContent("Audio", "Launch a sound using this action."), actionsScript.ActionAudio);

            if (actionsScript.ActionAudio != Gaze_Actions.ACTIVABLE_OPTION.NOTHING)
            {
                EditorGUILayout.BeginVertical();
                if (hierarchyAudioSources.Count > 0)
                {
                    Gaze_EditorUtils.DrawSectionTitle("Audio Setup");
                    EditorGUILayout.BeginHorizontal();
                    EditorGUILayout.LabelField(new GUIContent("Audio Source", "Select the audiosource you want to use to play your audio if you have many on your IO"));

                    if (!hierarchyAudioSources.Contains(actionsScript.targetAudioSource))
                    {
                        actionsScript.targetAudioSource = hierarchyAudioSources[0];
                    }

                    actionsScript.targetAudioSource = hierarchyAudioSources[EditorGUILayout.Popup(hierarchyAudioSources.IndexOf(actionsScript.targetAudioSource), hierarchyAudioSourceNames.ToArray())];

                    EditorGUILayout.EndHorizontal();
                }
                else
                {
                    EditorGUILayout.HelpBox("No audio sources found.", MessageType.Warning);
                }
                EditorGUILayout.EndVertical();

                #endregion AudioSource

                #region AudioClips
                if (actionsScript.ActionAudio == Gaze_Actions.ACTIVABLE_OPTION.ACTIVATE)
                {
                    actionsScript.activeTriggerStatesAudio[0] = EditorGUILayout.ToggleLeft(Gaze_HashIDs.TriggerEventsAndStates[0], actionsScript.activeTriggerStatesAudio[0]);

                    if (actionsScript.activeTriggerStatesAudio[0])
                    {
                        DisplayAudioBlock(0);
                    }

                    EditorGUI.indentLevel++;
                    ShowOtherAudioOptions = EditorGUILayout.Foldout(ShowOtherAudioOptions, "More Options:");

                    if (ShowOtherAudioOptions)
                    {
                        for (int i = 1; i < Gaze_HashIDs.TriggerEventsAndStates.Length; i++)
                        {
                            actionsScript.activeTriggerStatesAudio[i] = EditorGUILayout.ToggleLeft(new GUIContent(Gaze_HashIDs.TriggerEventsAndStates[i], AudioTriggerEvensAndStatesHints[i]), actionsScript.activeTriggerStatesAudio[i]);
                            if (actionsScript.activeTriggerStatesAudio[i])
                            {
                                DisplayAudioBlock(i);
                            }
                        }
                    }

                    EditorGUI.indentLevel--;
                    EditorGUILayout.Space();

                    Gaze_EditorUtils.DrawSectionTitle("Audio Parameters");

                    actionsScript.audio_stopOthers = EditorGUILayout.ToggleLeft(new GUIContent("Stop Other Audios", "Stops any others audios launched by this IO only"), actionsScript.audio_stopOthers);

                    // Randomize Pitch
                    actionsScript.audio_randomizePitch = EditorGUILayout.ToggleLeft(new GUIContent("Randomize pitch", "Change the pitch of this interaction only"), actionsScript.audio_randomizePitch);
                    if (actionsScript.audio_randomizePitch)
                    {
                        actionsScript.audio_minPitch = EditorGUILayout.FloatField("Min pitch", actionsScript.audio_minPitch, GUILayout.Width(300));
                        Gaze_Utils.EnsureFieldIsPositiveOrZero(ref actionsScript.audio_minPitch);
                        actionsScript.audio_maxPitch = EditorGUILayout.FloatField("Max pitch", actionsScript.audio_maxPitch, GUILayout.Width(300));
                        Gaze_Utils.EnsureFieldIsPositiveOrZero(ref actionsScript.audio_maxPitch);
                    }
                    // End of Randomize Pitch

                    #endregion onAfter


                    #region Fade In
                    GUILayout.BeginHorizontal();
                    actionsScript.fadeInEnabled = EditorGUILayout.ToggleLeft("Fade In", actionsScript.fadeInEnabled);
                    if (actionsScript.fadeInEnabled)
                    {
                        actionsScript.fadeInTime = EditorGUILayout.FloatField("", actionsScript.fadeInTime, GUILayout.Width(100));
                        Gaze_Utils.EnsureFieldIsPositiveOrZero(ref actionsScript.fadeInTime);
                        EditorGUILayout.LabelField("[s]");
                        GUILayout.EndHorizontal();
                        GUILayout.BeginHorizontal();

                        actionsScript.fadeInCurve = EditorGUILayout.CurveField(actionsScript.fadeInCurve, Color.green, new Rect(0, 0, actionsScript.fadeInTime, 1), GUILayout.Width(400));
                    }
                    GUILayout.EndHorizontal();
                    if (actionsScript.DontHaveAudioLoop())
                    {
                        GUILayout.BeginHorizontal();
                        actionsScript.fadeOutEnabled = EditorGUILayout.ToggleLeft("Fade Out", actionsScript.fadeOutEnabled);
                        if (actionsScript.fadeOutEnabled)
                        {
                            actionsScript.fadeOutTime = EditorGUILayout.FloatField("", actionsScript.fadeOutTime, GUILayout.Width(100));
                            Gaze_Utils.EnsureFieldIsPositiveOrZero(ref actionsScript.fadeOutTime);
                            EditorGUILayout.LabelField("[s]");
                            GUILayout.EndHorizontal();
                            GUILayout.BeginHorizontal();

                            actionsScript.fadeOutCurve = EditorGUILayout.CurveField(actionsScript.fadeOutCurve, Color.green, new Rect(0, 0, actionsScript.fadeOutTime, 1), GUILayout.Width(400));
                        }
                        GUILayout.EndHorizontal();

                        #endregion

                        #region Ducking
                        if (actionsScript.ActionAudio == Gaze_Actions.ACTIVABLE_OPTION.ACTIVATE)
                        {
                            actionsScript.duckingEnabled = EditorGUILayout.ToggleLeft(new GUIContent("Ducking", "The volume rises when this IO is Gazed"), actionsScript.duckingEnabled);
                            if (actionsScript.duckingEnabled)
                            {
                                DisplayAudioDuckingBlock();
                            }
                            else
                            {
                                DisplayAudioVolume();
                            }
                        }
                        #endregion
                    }

                    EditorGUILayout.Space();
                    Gaze_EditorUtils.DrawSectionTitle("Audio Reload Parameters");
                    Gaze_EditorUtils.DrawEditorHint("By default audios will wait until the last one is finished when reloaded");
                    EditorGUILayout.Space();

                    actionsScript.audio_ForceStop = EditorGUILayout.ToggleLeft(new GUIContent("Immediate play", "Stops others audios launched with this interaction when reloaded."), actionsScript.audio_ForceStop);
                    if (!actionsScript.audio_ForceStop)
                    {
                        actionsScript.audio_AllowMultiple = EditorGUILayout.ToggleLeft(new GUIContent("Cumulate audios", "Cumulates audios launched with this interaction when reloaded."), actionsScript.audio_AllowMultiple);

                        if (actionsScript.audio_AllowMultiple)
                        {
                            actionsScript.audio_MaxConcurrentSound = EditorGUILayout.IntField("Max concurrent audios", actionsScript.audio_MaxConcurrentSound);
                        }
                    }
                }

                if (actionsScript.ActionAudio == Gaze_Actions.ACTIVABLE_OPTION.DEACTIVATE)
                {
                    #region Fade Out
                    GUILayout.BeginHorizontal();
                    actionsScript.fadeOutDeactEnabled = EditorGUILayout.ToggleLeft("Fade Out", actionsScript.fadeOutDeactEnabled);

                    if (actionsScript.fadeOutDeactEnabled)
                    {
                        actionsScript.fadeOutDeactTime = EditorGUILayout.FloatField("", actionsScript.fadeOutDeactTime, GUILayout.Width(200));
                        Gaze_Utils.EnsureFieldIsPositiveOrZero(ref actionsScript.fadeOutDeactTime);
                        EditorGUILayout.LabelField("[s]");
                        GUILayout.EndHorizontal();
                        GUILayout.BeginHorizontal();

                        actionsScript.fadeOutDeactCurve = EditorGUILayout.CurveField(actionsScript.fadeOutDeactCurve, Color.green, new Rect(0, 0, actionsScript.fadeOutDeactTime, 1), GUILayout.Width(400));
                    }
                    GUILayout.EndHorizontal();
                    #endregion
                }
            }
        }
Esempio n. 4
0
        public override void Gaze_OnInspectorGUI()
        {
            base.BeginChangeComparision();

            if (CRIS_IS_IN_DA_HOUSE)
            {
                if (GUILayout.Button("Validate"))
                {
                    targetConditions.Validate();
                }
            }


            // display conditions
            if (targetConditions.isActive)
            {
                if (!Application.isPlaying)
                {
                    EditorGUILayout.Space();

                    // update InteractiveObjects list
                    UpdateInteractiveObjectsList();

                    Gaze_EditorUtils.DrawSectionTitle("DEPENDENCIES");
                    Gaze_EditorUtils.DrawEditorHint("Use this to create chain reactions with any other interactions in the scene.");
                    #region Dependency
                    // set boolean value accordingly in Trigger settings
                    targetConditions.dependent = EditorGUILayout.ToggleLeft("Dependent", targetConditions.dependent);
                    if (targetConditions.dependent)
                    {
                        DisplayDependencyBlock();
                    }
                    EditorGUILayout.Space();
                    #endregion

                    #region Conditions
                    EditorGUILayout.Space();
                    Gaze_EditorUtils.DrawSectionTitle("CONDITIONS");

                    DisplayConditionsBlock();
                    DisplayProximityList();
                    DisplayARKitTouchCondition();
                    EditorGUILayout.Space();
                    #endregion



                    #region Custom Conditions
                    Gaze_EditorUtils.DrawSectionTitle("CUSTOM CONDITIONS");
                    Gaze_EditorUtils.DrawEditorHint("Enable this to use your custom script as a Condition.", false);
                    Gaze_EditorUtils.DrawEditorHint("See user manual for detailed structure.");


                    targetConditions.customConditionsEnabled = EditorGUILayout.ToggleLeft("Custom Conditions", targetConditions.customConditionsEnabled);
                    if (targetConditions.customConditionsEnabled)
                    {
                        DisplayCustomConditionsList();
                    }
                    EditorGUILayout.Space();
                    #endregion

                    #region Warning
                    //DisplayWarning();
                    #endregion

                    DisplayDuration();

                    #region Delayed ActiveWindow
                    Gaze_EditorUtils.DrawSectionTitle("TIMEFRAME");
                    // extra block that can be toggled on and off
                    GUILayout.BeginHorizontal();
                    // set boolean value accordingly in Trigger settings
                    targetConditions.delayed = EditorGUILayout.ToggleLeft(new GUIContent("Delayed", "Amount of time (seconds) this interaction will have to wait before allowing the user to validate the conditions."), targetConditions.delayed);
                    if (targetConditions.delayed)
                    {
                        DisplayDelayBlock();
                    }
                    GUILayout.EndHorizontal();

                    GUILayout.BeginHorizontal();
                    // set boolean value accordingly in Trigger settings
                    targetConditions.expires = EditorGUILayout.ToggleLeft(new GUIContent("Expires", "Conditions can be met only during this amount of time. The interaction will then be deactivated."), targetConditions.expires);
                    if (targetConditions.expires)
                    {
                        DisplayExpiresBlock();
                    }
                    GUILayout.EndHorizontal();

                    // set boolean value accordingly in Trigger settings
                    targetConditions.autoTriggerModeIndex = EditorGUILayout.Popup("Auto Trigger Mode", targetConditions.autoTriggerModeIndex, autoTriggerModes);

                    if (((Gaze_AutoTriggerMode)targetConditions.autoTriggerModeIndex).Equals(Gaze_AutoTriggerMode.END) && !targetConditions.expires)
                    {
                        EditorGUILayout.HelpBox("This trigger does not expire, it will never auto-trigger.", MessageType.Warning);
                    }
                    else if (targetConditions.autoTriggerModeIndex.Equals((int)Gaze_AutoTriggerMode.NONE) && targetConditions.expires && targetConditions.activeDuration == 0)
                    {
                        if (!(targetConditions.isExpireRandom && targetConditions.expireRange[1] > 0))
                        {
                            EditorGUILayout.BeginHorizontal();
                            EditorGUILayout.HelpBox("Will never trigger !\n(Expires immediately AND has no Auto-Trigger).", MessageType.Warning);
                            EditorGUILayout.EndHorizontal();
                        }
                    }

                    EditorGUILayout.Space();
                    #endregion

                    #region Reload
                    // toggle button
                    Gaze_EditorUtils.DrawSectionTitle("RELOAD");

                    // set boolean value accordingly in Trigger settings
                    targetConditions.reload = EditorGUILayout.ToggleLeft(new GUIContent("Reload", "Allows you to reload the conditions of an interaction (does not reload dependencies)."), targetConditions.reload);
                    if (targetConditions.reload)
                    {
                        DisplayReloadBlock();
                    }

                    EditorGUILayout.Space();
                    #endregion
                }
            }

            // save changes
            base.EndChangeComparision();
            EditorUtility.SetDirty(targetConditions);
        }