Exemple #1
0
        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;
            //}
        }
Exemple #2
0
 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;
     }
 }
Exemple #3
0
        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);
            }
        }
Exemple #4
0
 private void OnTriggerEnter(Collider other)
 {
     newCandidate = other.GetComponent <BelongTo>();
     if (newCandidate != null && (enemyFactions.Contains(newCandidate.faction)))
     {
         potentialVictim.Add(newCandidate);
     }
 }
Exemple #5
0
 private void OnTriggerExit(Collider other)
 {
     newCandidate = other.GetComponent <BelongTo>();
     if (newCandidate != null)
     {
         potentialVictim.Remove(newCandidate);
         if (newCandidate == victim)
         {
             Choose();
         }
     }
 }