Agent.Engine.run C# (CSharp) Метод

run() приватный Метод

private run ( System.Boolean reset, bool liveUpdate, List systems ) : DataTree
reset System.Boolean
liveUpdate bool
systems List
Результат DataTree
    private DataTree<AgentType> run(Boolean reset, bool liveUpdate, List<T.AgentSystem> systems)
    {
      int index = 0;
      pts.Clear();
      if (reset)
      {
        agentSystems.Clear();
        foreach (T.AgentSystem system in systems)
        {
          agentSystems.Add(new T.AgentSystem(system));
          foreach (EmitterType emitter in system.Emitters)
          {
            if (!emitter.ContinuousFlow)
            {
              for (int i = 0; i < emitter.NumAgents; i++)
              {
                agentSystems[index].addAgent(emitter);
              }
            }
          }
          index++;
        }


      }
      else
      {
        if (liveUpdate)
        {
          if (systems.Count > agentSystems.Count)
          {
            //Find the system that is not in agentSystems and add it.
            foreach (T.AgentSystem system in systems)
            {
              if (!agentSystems.Contains(system))
              {
                agentSystems.Add(new T.AgentSystem(system));
              }
            }
          }
          else if (systems.Count < agentSystems.Count)
          {
            foreach (T.AgentSystem agentSystem in agentSystems)
            {
              if (!systems.Contains(agentSystem))
              {
                agentSystems.Remove(agentSystem);
              }
            }
          }
          foreach (T.AgentSystem system in systems)
          {
            agentSystems[index].Emitters = systems[index].Emitters;
            agentSystems[index].AgentsSettings = systems[index].AgentsSettings;
            agentSystems[index].Forces = systems[index].Forces;
            agentSystems[index].Environment = systems[index].Environment;
            agentSystems[index].Behaviors = systems[index].Behaviors;
            index++;
          }
        }
        foreach (T.AgentSystem system in agentSystems)
        {
          system.run();
        }
      }

      DataTree<AgentType> tree = new DataTree<AgentType>();
      int counter = 0;
      foreach (T.AgentSystem system in agentSystems)
      {
        foreach (AgentType agent in system.Agents)
        {
          tree.Add(agent, new GH_Path(counter));
        }
        counter++;
      }

        return tree;
    }