public override IEnumerator Execute(CutscenePlayer player, CutsceneExecutor executor)
        {
            var obj = Instantiate(Obj, Position, Rotation);

            player.ProvideFuture(obj, futureId);
            yield break;
        }
        public static ExposedReference <T> DrawExposed(CutscenePlayer player, ExposedReference <T> value, GUIContent name,
                                                       Rect rect)
        {
            GUI.enabled = player != null;
            var found  = value.Resolve(player);
            var label  = GetLabel(found, value.exposedName, name);
            var chosen = EditorGUI.ObjectField(rect, label, found, ReferenceType, true);

            GUI.enabled = true;

            if (player == null || chosen == found)
            {
                return(value);
            }
            //Remove old
            player.SetReferenceValue(value.exposedName, null);
            //If there is a new one, add it
            if (chosen != null)
            {
                var newId = chosen.GetInstanceID().ToString();
                value.exposedName = newId;
                player.SetReferenceValue(newId, chosen);
            }
            return(value);
        }
示例#3
0
        public IEnumerator Execute(CutscenePlayer player)
        {
            var systemInScene = System.Resolve(player);

            Object.Instantiate(systemInScene, Position, Quaternion.identity);
            yield break;
        }
示例#4
0
 public IEnumerator Execute(CutscenePlayer player)
 {
     while (!Input.GetButtonDown(InputKey))
     {
         yield return(null);
     }
 }
示例#5
0
 public override void Draw(CutsceneEditor editor, CutscenePlayer player, Cutscene cutscene, Rect rect, int tokenIndex, GUIContent name, string value, Type valueType, FieldInfo fieldInfo, Setter setter)
 {
     if (value == null)
     {
         value = string.Empty;
     }
     setter(EditorGUI.TextField(rect, name, value));
 }
        public override IEnumerator Execute(CutscenePlayer player, CutsceneExecutor executor)
        {
            var w = new Waiter(Duration, Realtime);

            cache[executor] = w;
            while (w.Tick())
            {
                yield return(null);
            }
        }
        public override IEnumerator Execute(CutscenePlayer player, CutsceneExecutor executor)
        {
            var obj = Object.Resolve(player);

            if (obj != null)
            {
                UnityEngine.Object.Destroy(obj);
            }
            yield break;
        }
示例#8
0
 public override void Draw(CutsceneEditor editor, CutscenePlayer player, Cutscene cutscene, Rect rect,
                           int tokenIndex, GUIContent name, FutureReference <T> value, Type valueType, FieldInfo fieldInfo,
                           Setter setter)
 {
     if (value == null)
     {
         value = new FutureReference <T>();
     }
     value.Id = DrawFuture(cutscene, tokenIndex, rect, name, value.Id);
     setter(value);
 }
        public IEnumerator Execute(CutscenePlayer player)
        {
            var gameObject = new GameObject(TextName);

            gameObject.transform.SetParent(Parent.Resolve(player).transform);
            var text = gameObject.AddComponent <Text>();

            text.text = TextName;
            player.ProvideFuture(text, textId);
            yield break;
        }
示例#10
0
        public override IEnumerator Execute(CutscenePlayer player, CutsceneExecutor executor)
        {
            var go = Target.Resolve(player);

            if (go != null)
            {
                go.SetActive(Active);
            }

            yield break;
        }
示例#11
0
        public override IEnumerator Execute(CutscenePlayer player, CutsceneExecutor executor)
        {
            var director = Director.Resolve(player);

            if (director.playableAsset != PlayableAsset)
            {
                director.playableAsset = PlayableAsset;
            }

            director.Play();
            yield return(new WaitForSeconds((float)PlayableAsset.duration));
        }
        public IEnumerator Execute(CutscenePlayer player)
        {
            var t = Text.Resolve(player);

            t.text = Content;

            var rect = t.rectTransform;

            rect.position  = Position;
            rect.sizeDelta = Size;
            yield break;
        }
示例#13
0
        private bool Resolve(Reference reference, Cutscene cutscene, CutscenePlayer player)
        {
            switch (reference.Type)
            {
            case Reference.ReferenceType.Future:
                return(cutscene.FutureManager.GetFuture(reference.Id) != null);

            case Reference.ReferenceType.Exposed:
                return(reference.Resolve(player) != null);

            default:
                return(false);
            }
        }
示例#14
0
        private static Object MimicExposedResolve(
            CutscenePlayer resolver,
            PropertyName exposedName,
            Object defaultValue)
        {
            if (resolver == null)
            {
                return(defaultValue);
            }
            bool idValid;
            var  referenceValue = resolver.GetReferenceValue(exposedName, out idValid);

            return(idValid ? referenceValue : defaultValue);
        }
示例#15
0
        private static void InvokeOnTokenDrawn(
            Rect rect,
            Cutscene cutscene,
            CutscenePlayer player,
            Token token,
            int tokenindex,
            ref GUIContent tokenlabel)
        {
            var handler = OnTokenDrawn;

            if (handler != null)
            {
                handler(rect, cutscene, player, token, tokenindex, ref tokenlabel);
            }
        }
示例#16
0
    public void LaunchCutscene(Cutscene c)
    {
        CutscenePlayer cp     = gameObject.AddComponent <CutscenePlayer> ();
        Cutscene       cClone = Instantiate <Cutscene> (c);

        cClone.transform.parent = transform;
        Action[] clones = new Action[c.actions.Length];
        for (int i = 0; i < c.actions.Length; i++)
        {
            clones [i] = Instantiate <Action> (c.actions [i]);
            clones [i].transform.parent = cClone.transform;
        }
        cClone.actions = clones;
        cp.Launch(cClone);
    }
示例#17
0
        public override IEnumerator Execute(CutscenePlayer player, CutsceneExecutor executor)
        {
            var obj = Object.Resolve(player);
            var p   = NewParent.Resolve(player);

            if (!obj)
            {
                Debug.LogError("Couldn't find object to set parent");
            }
            if (!p)
            {
                Debug.LogError("Couldn't find parent object");
            }
            obj.transform.SetParent(p.transform);
            yield break;
        }
示例#18
0
        public void DrawFields(
            CutsceneEditor editor,
            Rect rect,
            int tokenIndex,
            Token token,
            Cutscene cutscene,
            CutscenePlayer player,
            GUIContent label,
            out bool changed)
        {
            InvokeOnTokenDrawn(rect, cutscene, player, token, tokenIndex, ref label);
            changed      = false;
            currentToken = token;
            var currentLine = 0;

            for (var index = 0; index < SerializedFields.Length; index++)
            {
                currentField = SerializedFields[index];
                var fieldType = currentField.FieldType;
                var drawer    = drawers[index];

                var fieldName  = currentField.Name;
                var totalLines = drawer.GetTotalLines();
                var r          = rect.GetLine((uint)currentLine, totalLines);
                currentLine += (int)totalLines;
                var fieldLabel = new GUIContent(ObjectNames.NicifyVariableName(fieldName));
                InvokeOnFieldDrawn(r, cutscene, player, token, tokenIndex, currentField, index, ref fieldLabel);
                EditorGUI.BeginChangeCheck();

                drawer.Draw(
                    editor,
                    player,
                    cutscene,
                    r,
                    tokenIndex,
                    fieldLabel,
                    currentField.GetValue(token),
                    fieldType,
                    currentField,
                    Setter);

                if (EditorGUI.EndChangeCheck())
                {
                    changed = true;
                }
            }
        }
示例#19
0
        protected virtual void InvokeOnFieldDrawn(
            Rect rect,
            Cutscene cutscene,
            CutscenePlayer player,
            Token token,
            int tokenindex,
            FieldInfo field,
            int fieldindex,
            ref GUIContent label)
        {
            var handler = OnFieldDrawn;

            if (handler != null)
            {
                handler(rect, cutscene, player, token, tokenindex, field, fieldindex, ref label);
            }
        }
示例#20
0
        private void OnTokenDrawn(Rect rect, Cutscene cutscene, CutscenePlayer player, Token token, int tokenIndex,
                                  ref GUIContent tokenlabel)
        {
            if (!Configs.CheckErrors)
            {
                return;
            }
            var foundErrors = GetErrors(tokenIndex, -1).ToArray();

            if (!foundErrors.Any())
            {
                return;
            }
            var highestLevel = (from error in foundErrors select error.Level).Max();
            var icon         = ShiroiStyles.GetIcon(highestLevel);

            tokenlabel.image = icon;
        }
示例#21
0
        private void OnFieldDrawn(Rect rect, Cutscene cutscene, CutscenePlayer player, Token token, int tokenIndex,
                                  FieldInfo field, int fieldIndex, ref GUIContent label)
        {
            if (!Configs.CheckErrors)
            {
                return;
            }
            var foundErrors = GetErrors(tokenIndex, fieldIndex).ToArray();

            if (!foundErrors.Any())
            {
                return;
            }
            var highestLevel = (from error in foundErrors select error.Level).Max();
            var size         = rect.height;
            var icon         = ShiroiStyles.GetIcon(highestLevel);
            var errorRect    = rect.SubRect(size, size, -size);

            GUI.DrawTexture(errorRect, icon);
        }
示例#22
0
        public Object Resolve(CutscenePlayer player)
        {
            switch (Type)
            {
            case ReferenceType.Exposed:
                bool   idValid;
                Object referenceValue = player.GetReferenceValue(PropertyName, out idValid);
                if (idValid)
                {
                    return(referenceValue);
                }
                else
                {
                    return(null);
                }

            case ReferenceType.Future:
                return(player.RequestFuture(Id));
            }
            return(null);
        }
示例#23
0
        //TODO: Make this less horrible
        public override void Draw(CutsceneEditor editor, CutscenePlayer player, Cutscene cutscene, Rect rect,
                                  int tokenIndex, GUIContent name, Reference <T> value, Type valueType, FieldInfo fieldInfo, Setter setter)
        {
            if (value == null)
            {
                value = new Reference <T>();
            }
            GUIContent label;
            var        found = player == null ? null : value.Resolve(player);

            switch (value.Type)
            {
            case Reference.ReferenceType.Future:
                label = name;
                break;

            case Reference.ReferenceType.Exposed:
                label = ExposedReferenceDrawer <T> .GetLabel(found, value.PropertyName, new GUIContent(name));

                break;

            default:
                return;
            }
            var labelWidth = GUIStyle.none.CalcSize(new GUIContent(label)).x;
            var r2         = rect.SubRect(TypeWidth, rect.height, labelWidth + LabelOffset);

            value.Type = (Reference.ReferenceType)EditorGUI.EnumPopup(r2, value.Type);
            switch (value.Type)
            {
            case Reference.ReferenceType.Exposed:
                value.Id = DrawExposed(value, player, rect, name);
                break;

            case Reference.ReferenceType.Future:
                value.Id = DrawFuture(value, cutscene, rect, name, tokenIndex);
                break;
            }
            setter(value);
        }
        public static void DrawReferencesLayout(CutscenePlayer player)
        {
            var references = player.References;
            var total      = references.Count;

            if (total == 0)
            {
                EditorGUILayout.LabelField(CutscenePlayerEditor.NoReferences, ShiroiStyles.Bold);
                return;
            }
            EditorGUILayout.BeginHorizontal();
            EditorGUILayout.LabelField(string.Format("There are a total of {0} references.", total), ShiroiStyles.Bold);
            if (GUILayout.Button(CutscenePlayerEditor.Clear))
            {
                player.ClearReferences();
                return;
            }
            EditorGUILayout.EndHorizontal();

            const int iconSize = ShiroiStyles.IconSize;

            for (var i = 0; i < references.Count; i++)
            {
                var reference  = references[i];
                var obj        = reference.Object;
                var futureRect = GUILayoutUtility.GetRect(0, iconSize, ShiroiStyles.ExpandWidthOption);
                var content    = EditorGUIUtility.ObjectContent(null, obj.GetType());
                content.text = null;

                var iconRect = futureRect.SubRect(iconSize, iconSize);
                var msgRect  = futureRect.SubRect(futureRect.width - iconSize, iconSize, iconSize);
                GUI.Box(iconRect, content);
                var msg = string.Format("{0} @ {1}", obj.name, reference.Id);
#if UNITY_EDITOR
                msg = string.Format("{1} ({0} uses)", msg, reference.TotalUses);
#endif
                EditorGUI.LabelField(msgRect, msg);
            }
        }
示例#25
0
 public IEnumerator Execute(CutscenePlayer player)
 {
     yield break;
 }
示例#26
0
 public override void Draw(CutsceneEditor editor, CutscenePlayer player, Cutscene cutscene, Rect rect, int tokenIndex, GUIContent name, ExposedReference <T> value, Type valueType, FieldInfo fieldInfo, Setter setter)
 {
     setter(DrawExposed(player, value, name, rect));
 }
示例#27
0
 private int DrawExposed(Reference <T> value, CutscenePlayer cutscene, Rect rect, GUIContent name)
 {
     return(ExposedReferenceDrawer <T> .DrawExposed(cutscene, value, name, rect).exposedName.GetHashCode());
 }
示例#28
0
 public override void Draw(CutsceneEditor editor, CutscenePlayer player, Cutscene cutscene, Rect rect,
                           int tokenIndex, GUIContent name, object value, Type valueType, FieldInfo fieldInfo, Setter setter)
 {
     EditorGUI.LabelField(rect,
                          string.Format("Couldn't find drawer for field '{0}' of type '{1}'", name, valueType.Name));
 }
示例#29
0
 public override void Draw(CutsceneEditor editor, CutscenePlayer player, Cutscene cutscene, Rect rect, int tokenIndex, GUIContent name, Vector3Int value, Type valueType, FieldInfo fieldInfo, Setter setter)
 {
     setter(EditorGUI.Vector3IntField(rect, name, value));
 }
示例#30
0
 public override void Draw(CutsceneEditor editor, CutscenePlayer player, Cutscene cutscene, Rect rect, int tokenIndex, GUIContent name, Quaternion value, Type valueType, FieldInfo fieldInfo, Setter setter)
 {
     setter(Quaternion.Euler(EditorGUI.Vector3Field(rect, name, value.eulerAngles)));
 }