예제 #1
0
    override public void SetEditableElement(GameObject element_)
    {
        p = element_.GetComponent <PersonBehavior>();
        if (p != null)
        {
            addTypeDD.onValueChanged.RemoveAllListeners();
            removeTypeDD.onValueChanged.RemoveAllListeners();
            familyIdDD.onValueChanged.RemoveAllListeners();
            addRespDD.onValueChanged.RemoveAllListeners();
            removeRespDD.onValueChanged.RemoveAllListeners();
            familyMenu.SetActive(false);
            independentMenu.SetActive(false);

            IDText.text       = "ID: " + p.GetID();
            ageText.text      = "Age: " + p.GetAge();
            ageSlider.value   = p.GetAge();
            speedText.text    = "Speed: " + p.GetSpeed() / 2;
            speedSlider.value = p.GetSpeed() / 2;
            UpdateTypes();
            manualToggle.isOn    = p.GetManual();
            dependentToggle.isOn = p.GetDependent();
            UpdateFamilyMenu();

            addTypeDD.onValueChanged.AddListener(delegate { AddTypeCheck(); });
            removeTypeDD.onValueChanged.AddListener(delegate { RemoveTypeCheck(); });
            familyIdDD.onValueChanged.AddListener(delegate { SetToFamily(); });
            addRespDD.onValueChanged.AddListener(delegate { AddDependentCheck(); });
            removeRespDD.onValueChanged.AddListener(delegate { RemoveDependentCheck(); });
        }
    }
    public void WhenIndependentReachedDestination()
    {
        reachedDestination = false;
        nextDependent      = CheckDependentsInSection();

        if (nextDependent != null)
        {
            agent.SetDestination(nextDependent.GetPos());

            pathIndex--;
            responsibleForIDs.Remove(nextDependent.GetID());
            followers.Add(nextDependent);
            if (nextDependent.GetSpeed() < groupSpeed)
            {
                groupSpeed = nextDependent.GetSpeed();
            }
            nextDependent.GetAgent().speed = groupSpeed;
            nextDependent.SetDestSection(destSection);
            nextDependent.startedMovement = true;
            destSection.AddPerson(nextDependent);
        }
        else
        {
            agent.SetDestination(nodesPath[pathIndex].GetPos());
        }
        UpdateFollowersMovement();
    }
예제 #3
0
    public void PersonArrived(PersonBehavior p_, float timer_, bool isInCP)
    {
        //
        peopleTotalCount++;

        if (isInCP)
        {
            peopleArrivedCounter++;
            IDsPeopleArrivedToCP.Add(p_.GetID());
            Utils.Print("The person " + p_.GetID() + " is safe in " + timer_ + "s in a CP!!");
        }
        if (peopleArrivedCounter >= people.Count)
        {
            timer = timer_;
            Utils.Print("Everyone is safe in " + timer_ + "s !!!!!!");
            lastArrivedPerson = p_;
            foreach (PersonBehavior p in people)
            {
                p.StopMovement();
            }
            sc.SimulationFinished(true);
        }
        //if (peopleTotalCount >= people.Count && peopleArrivedCounter < people.Count)
        if (peopleTotalCount >= people.Count && peopleArrivedCounter < people.Count)
        {
            timer = timer_;
            Utils.Print("Everyone is not safe in " + timer_ + "s !!!!!!");
            lastArrivedPerson = p_;
            foreach (PersonBehavior p in people)
            {
                p.StopMovement();
            }
            sc.SimulationFinished(true);
        }
        //
    }
 public void RemoveFromTutory(PersonBehavior p_)
 {
     responsibleForIDs.Remove(p_.GetID());
     p_.SetTutorID(-1);
 }
 public void AddToTutory(PersonBehavior p_)
 {
     responsibleForIDs.Add(p_.GetID());
     p_.SetTutorID(ID);
 }