private void cmbNodeType_SelectedIndexChanged(object sender, EventArgs e) { if (cmbNodeType.Text.CompareTo("MoveTo") == 0) node = new AI_MoveTo(node.getLocation(), node.getSpeed()); else if (cmbNodeType.Text.CompareTo("JumpTo") == 0) node = new AI_JumpTo(node.getLocation()); else if (cmbNodeType.Text.CompareTo("ArcTo") == 0) node = new AI_ArcTo(node.getLocation(), 0, node.getSpeed()); else if (cmbNodeType.Text.CompareTo("Wait") == 0) node = new AI_Wait(0.0); else if (cmbNodeType.Text.CompareTo("Reset") == 0) node = new AI_Reset(-1); else if (cmbNodeType.Text.CompareTo("StageHorizontal") == 0) node = new AI_StageHorizontal(100, node.getSpeed()); else if (cmbNodeType.Text.CompareTo("StageVertical") == 0) node = new AI_StageVertical(100, node.getSpeed()); else if (cmbNodeType.Text.CompareTo("StageCircle") == 0) node = new AI_StageCircle(100, node.getSpeed(), AI_ScriptNode.CIRCLE_DIRECTION_CW, 0); else if (cmbNodeType.Text.CompareTo("StagePointToPoint") == 0) node = new AI_StagePointToPoint(node.getLocation(), node.getSpeed()); else if (cmbNodeType.Text.CompareTo("Kamikaze") == 0) node = new AI_Kamikaze(node.getSpeed()); nodeProperties.SelectedObject = node; }
public void Insert(int index, AI_ScriptNode node) { z_script.Insert(index, node); }
public void Add(AI_ScriptNode node) { z_script.Add(node); }
private void drawScriptSegment(Graphics gr, Brush brush, Pen pen, ref Vector2 current, AI_ScriptNode node) { Vector2 temp, center; bool drawDot = true; switch (node.getCommand()) { case AI_ScriptNode.ID_START_POINT: current = node.getLocation(); break; case AI_ScriptNode.ID_MOVE_TO: case AI_ScriptNode.ID_JUMP_TO: case AI_ScriptNode.ID_STAGE_POINT_TO_POINT: gr.DrawLine(pen, offset.X + current.X, offset.Y + current.Y, offset.X + node.getLocation().X, offset.Y + node.getLocation().Y); current = node.getLocation(); break; case AI_ScriptNode.ID_ARC_TO: while (node.GetDistanceTo(current) > node.getSpeed()) { temp = current + node.CreateVectorFrom(current); gr.DrawLine(pen, offset.X + current.X, offset.Y + current.Y, offset.X + temp.X, offset.Y + temp.Y); current = temp; } node.reset(); break; case AI_ScriptNode.ID_STAGE_HORIZONTAL: gr.DrawLine(pen, offset.X + current.X - ((AI_Stage)node).getSwingDistance(), offset.Y + current.Y, offset.X + current.X + ((AI_Stage)node).getSwingDistance(), offset.Y + current.Y); break; case AI_ScriptNode.ID_STAGE_VERTICAL: gr.DrawLine(pen, offset.X+ current.X, offset.Y + current.Y - ((AI_Stage)node).getSwingDistance(), offset.X + current.X, offset.Y + current.Y + ((AI_Stage)node).getSwingDistance()); break; case AI_ScriptNode.ID_STAGE_CIRCLE: center = current; for (float theta = 0f; theta < 3 * Math.PI; theta += node.getSpeed() / ((AI_Stage)node).getSwingDistance()) { temp = current + node.CreateVectorFrom(current); gr.DrawLine(pen, offset.X + current.X, offset.Y + current.Y, offset.X + temp.X, offset.Y + temp.Y); current = temp; } // reset current to the center after drawing this one current = center; node.reset(); break; // nothing to do or draw for these... case AI_ScriptNode.ID_RESET: case AI_ScriptNode.ID_WAIT: case AI_ScriptNode.ID_END_POINT: case AI_ScriptNode.ID_NULL: default: drawDot = false; break; } if (drawDot) gr.FillEllipse(brush, offset.X + current.X - 5, offset.Y + current.Y - 5, 10, 10); }
public frmNewScriptNode() { InitializeComponent(); node = new AI_MoveTo(Vector2.Zero, 0f); nodeProperties.SelectedObject = node; }
public AI_ScriptNode(AI_ScriptNode node) : this(node.z_location, node.z_speed) { z_command = AI_ScriptNode.ID_NULL; }