Example #1
0
        void Update()
        {
            if (NarrativeManager.Get().IsPaused())
            {
                return;
            }

            timer += Time.deltaTime;

            if (execList.Count > 0)
            {
                if (timer >= 0f)
                {
                    NarrativeEffect effect = execList[0];
                    execList.RemoveAt(0);

                    if (effect.enabled)
                    {
                        effect.Trigger(last_triggerer);
                        timer = -effect.GetWaitTime();
                    }

                    CheckIfEnd();
                }
            }
            else if (childExecList.Count > 0)
            {
                //Still running
                if (timer >= 0f)
                {
                    NarrativeChild child = childExecList[0];
                    childExecList.RemoveAt(0);

                    float wait = child.RunIfMet(last_triggerer);
                    timer = -wait;

                    CheckIfEnd();
                }
            }
            else
            {
                if (trigger_type == NarrativeEventType.AutoTrigger && AreConditionsMet())
                {
                    Run();
                }
            }
        }
        public override void OnInspectorGUI()
        {
            NarrativeEffect myScript = target as NarrativeEffect;

            myScript.type = (NarrativeEffectType)AddEnumField("Type", myScript.type);

            if (myScript.type == NarrativeEffectType.CustomInt ||
                myScript.type == NarrativeEffectType.CustomFloat ||
                myScript.type == NarrativeEffectType.CustomString)
            {
                myScript.target_id = AddTextField("Target ID", myScript.target_id);

                myScript.oper = (NarrativeEffectOperator)AddEnumField("Operator", myScript.oper);

                if (myScript.type == NarrativeEffectType.CustomInt)
                {
                    myScript.value_int = AddIntField("Value Int", myScript.value_int);
                }

                if (myScript.type == NarrativeEffectType.CustomFloat)
                {
                    myScript.value_float = AddFloatField("Value Float", myScript.value_float);
                }

                if (myScript.type == NarrativeEffectType.CustomString)
                {
                    myScript.value_string = AddTextField("Value String", myScript.value_string);
                }
            }

            if (myScript.type == NarrativeEffectType.Move)
            {
                GenerateTargetGUI(myScript.target);
                myScript.value_object = (GameObject)AddGameObjectField("Target Location", myScript.value_object);
            }

            if (myScript.type == NarrativeEffectType.Show || myScript.type == NarrativeEffectType.Hide ||
                myScript.type == NarrativeEffectType.Spawn || myScript.type == NarrativeEffectType.Destroy ||
                myScript.type == NarrativeEffectType.DestroyHeld ||
                myScript.type == NarrativeEffectType.StartDialogue ||
                myScript.type == NarrativeEffectType.RunEvent || myScript.type == NarrativeEffectType.RunEventIfMet)
            {
                GenerateTargetGUI(myScript.target);
            }

            if (myScript.type == NarrativeEffectType.LockCamera)
            {
                myScript.value_object = AddGameObjectField("Target", myScript.value_object);
            }

            if (myScript.type == NarrativeEffectType.LockCamera || myScript.type == NarrativeEffectType.UnlockCamera)
            {
                myScript.value_float = AddFloatField("Zoom", myScript.value_float);
            }

            if (myScript.type == NarrativeEffectType.StartQuest || myScript.type == NarrativeEffectType.CancelQuest ||
                myScript.type == NarrativeEffectType.CompleteQuest)
            {
                myScript.value_object = AddGameObjectField("Quest", myScript.value_object);
            }

            if (myScript.type == NarrativeEffectType.Wait)
            {
                myScript.value_float = AddFloatField("Time", myScript.value_float);
            }

            if (myScript.type == NarrativeEffectType.CallFunction)
            {
                //EditorGUIUtility.LookLikeControls();
                GUILayout.BeginHorizontal();
                EditorGUI.BeginChangeCheck();
                {
                    EditorGUILayout.PropertyField(sprop, new GUIContent("List Callbacks", ""));
                }

                if (GUI.changed)
                {
                    serializedObject.ApplyModifiedProperties();
                }
                GUILayout.EndHorizontal();
            }

            if (GUI.changed)
            {
                EditorUtility.SetDirty(myScript);
                EditorSceneManager.MarkSceneDirty(EditorSceneManager.GetActiveScene());
                AssetDatabase.SaveAssets();
            }
        }