Пример #1
0
        private float UpdateAdvancing(IUpdateEventArgs args)
        {
            // advance through tile
            _agent.TileProgress += _agent.Stats.MovementSpeed * args.Ticks;

            // advance to next tile, if necessary
            while (_agent.TileProgress > 1 && _pathIndex < (_mapPath.Count - 1))
            {
                // move to next tile
                _pathIndex          += 1;
                _agent.TileProgress -= 1.0f;
                args.Manager.Move(_agent, _mapPath[_pathIndex]);
            }

            // are we done?
            if (_pathIndex == (_mapPath.Count - 1) && _agent.TileProgress >= 0.5f)
            {
                _state = PathMobBehaviourStates.EndOfPath;
            }

            // calculate Position
            UpdatePosition();

            return(1.0f);
        }
Пример #2
0
        public PathMobBehaviour(IExtendedAgent agent, IMapPath mapPath)
        {
            _agent   = agent;
            _mapPath = mapPath;
            _state   = PathMobBehaviourStates.Init;

            Priority = ModifierPriority.Base;
        }
Пример #3
0
        private float UpdateInit(IUpdateEventArgs args)
        {
            // move into initial tile
            _pathIndex = 0;
            args.Manager.Move(_agent, _mapPath[_pathIndex]);
            _agent.TileProgress = 0.5f; // start in the center of our source tile

            _state = PathMobBehaviourStates.Advancing;

            return(1.0f);
        }
Пример #4
0
 public void OnRemove(IExtendedAgent agent)
 {
     _state = PathMobBehaviourStates.Removed;
 }