Пример #1
0
 void ResolveCurrentBehavior()
 {
     if (_protealizingCutscene)
     {
         wander.enabled  = true;
         pursue.enabled  = false;
         tether.enabled  = false;
         MaxSpeed        = _wanderSpeed;
         MaxAcceleration = _wanderAcceleration;
         _pursuingAgent  = null;
         return;
     }
     if (_protealizing)
     {
         wander.enabled = false;
         pursue.enabled = false;
         tether.enabled = false;
     }
     if (_substrate.CanBeProtealized)
     {
         ProteasomeAgent closestAgent = null;
         foreach (ProteasomeAgent agent in _allProteasomes)
         {
             if (closestAgent == null ||
                 (Vector3.Distance(agent.transform.position, pursue.target.transform.position) < Vector3.Distance(closestAgent.transform.position, pursue.target.transform.position)) &&
                 Vector3.Distance(agent.transform.position, pursue.target.transform.position) < _maximumDistanceToPursue)
             {
                 closestAgent = agent;
             }
         }
         // If nobody is pursuing and we can pursue, then pursue.
         if (_pursuingAgent == null && Vector3.Distance(transform.position, pursue.target.transform.position) < _maximumDistanceToPursue)
         {
             MaxSpeed        = _pursuitSpeed;
             MaxAcceleration = _pursuitAcceleration;
             _pursuingAgent  = this;
             pursue.enabled  = true;
             tether.enabled  = false;
             wander.enabled  = false;
         }
         // Give up if we're pursuing but too far away.
         else if (_pursuingAgent == this && Vector3.Distance(transform.position, pursue.target.transform.position) >= _maximumDistanceToPursue)
         {
             wander.enabled  = true;
             tether.enabled  = false;
             pursue.enabled  = false;
             MaxSpeed        = _wanderSpeed;
             MaxAcceleration = _wanderAcceleration;
             _pursuingAgent  = null;
         }
     }
     // If we can't protealize, don't pursue.
     else
     {
         wander.enabled  = true;
         pursue.enabled  = false;
         tether.enabled  = false;
         MaxSpeed        = _wanderSpeed;
         MaxAcceleration = _wanderAcceleration;
         _pursuingAgent  = null;
     }
 }
Пример #2
0
 void OnDestroy()
 {
     _allProteasomes.Remove(this);
     _pursuingAgent = null;
 }