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); }
public IEnumerator Execute(CutscenePlayer player) { var systemInScene = System.Resolve(player); Object.Instantiate(systemInScene, Position, Quaternion.identity); yield break; }
public IEnumerator Execute(CutscenePlayer player) { while (!Input.GetButtonDown(InputKey)) { yield return(null); } }
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; }
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; }
public override IEnumerator Execute(CutscenePlayer player, CutsceneExecutor executor) { var go = Target.Resolve(player); if (go != null) { go.SetActive(Active); } yield break; }
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; }
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); } }
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); }
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); } }
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); }
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; }
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; } } }
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); } }
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; }
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); }
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); }
//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); } }
public IEnumerator Execute(CutscenePlayer player) { yield break; }
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)); }
private int DrawExposed(Reference <T> value, CutscenePlayer cutscene, Rect rect, GUIContent name) { return(ExposedReferenceDrawer <T> .DrawExposed(cutscene, value, name, rect).exposedName.GetHashCode()); }
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)); }
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)); }
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))); }