// Update is called once per frame public void PopulateSpells() { Graph spell = ScriptableObject.CreateInstance <Graph>(); CommandPattern.Command n1 = new CommandPattern.Create("CREATE_ORB", spell); CommandPattern.Command n2 = new CommandPattern.Move("MOVE_ORB", spell); CommandPattern.Command n3 = new CommandPattern.Command("EXPLODE", spell); n1.Connect(n2); n2.Connect(n3); spell.start.Connect(n1); spells.Add("Fireball", spell); }
void doCast(Graph spell) { foreach (Node n in spell.Traverse()) { CommandPattern.Command c = (n as CommandPattern.Command); if (c != null) { Dictionary <string, object> args = new Dictionary <string, object>(); args.Add("primitive", PrimitiveType.Sphere); args.Add("position", transform.position); args.Add("direction", transform.forward * 2); args.Add("object", "orb"); c.Execute(null, args); if (c.nname == "EXPLODE") { } } } }
IEnumerator DoCast(GameObject go, Graph spell) { foreach (Node n in spell.Traverse()) { CommandPattern.Command c = (n as CommandPattern.Command); if (c == null) { continue; } Dictionary <string, object> args = new Dictionary <string, object>(); args.Add("primitive", PrimitiveType.Sphere); args.Add("position", transform.position); args.Add("direction", transform.forward * 2); args.Add("object", "orb"); //if (c.name == "EXPLODE") //{ // } c.Execute(go, args); yield return(new WaitForSeconds(.1f)); } }