public static void BuildProcedure(Graph graph, Procedure procedure, List <ProcedureStep> steps) { //Add edges between Procedure and ProcedureStep foreach (var curItem in steps) { Edge newEdge = new Include(); graph.AddEdge(procedure, curItem, newEdge); newEdge = new BelongTo(); graph.AddEdge(curItem, procedure, newEdge); } //Add edges between ProcedureSteps //ProcedureStep lastStep = null; //foreach (var curItem in steps) //{ // if (lastStep == null) // { // lastStep = curItem; // continue; // } // Edge newEdge = new Next(); // graph.AddEdge(lastStep, curItem, newEdge); // newEdge = new Previous(); // graph.AddEdge(curItem, lastStep, newEdge); // lastStep = curItem; //} }
public void Choose() { while (victim == null && potentialVictim.Count > 0) { victim = potentialVictim[0]; if (victim == null) { potentialVictim.RemoveAt(0); } } if (potentialVictim.Count > 0) { for (int i = 1; i < potentialVictim.Count; i++) { if (potentialVictim[i] == null) { potentialVictim.RemoveAt(i--); } else if ((victim.transform.position - transform.position).sqrMagnitude > (potentialVictim[i].transform.position - transform.position).sqrMagnitude) { victim = potentialVictim[i]; } } } else { victim = null; } }
public static void BuildUserGroup(Graph graph, UserGroup group, User leader, List <User> members, List <UserGroup> subGroups = null) { //Add edges between Group and Leader Edge newEdge = new Lead(); graph.AddEdge(leader, group, newEdge); newEdge = new LeadBy(); graph.AddEdge(group, leader, newEdge); //Add edges between Group and User foreach (var curItem in members) { newEdge = new Include(); graph.AddEdge(group, curItem, newEdge); newEdge = new BelongTo(); graph.AddEdge(curItem, group, newEdge); } if (subGroups == null) { return; } //Add edges between Group and Sub-Group foreach (var curItem in subGroups) { newEdge = new Include(); graph.AddEdge(group, curItem, newEdge); newEdge = new BelongTo(); graph.AddEdge(curItem, group, newEdge); } }
private void OnTriggerEnter(Collider other) { newCandidate = other.GetComponent <BelongTo>(); if (newCandidate != null && (enemyFactions.Contains(newCandidate.faction))) { potentialVictim.Add(newCandidate); } }
private void OnTriggerExit(Collider other) { newCandidate = other.GetComponent <BelongTo>(); if (newCandidate != null) { potentialVictim.Remove(newCandidate); if (newCandidate == victim) { Choose(); } } }