Exemplo n.º 1
0
        public IEnumerable <Act.Status> GoToRandomTarget(float radius)
        {
            Vector3 randomVector = MathFunctions.RandVector3Cube() * radius;
            Vector3 target       = Physics.ClampToBounds(Position + randomVector);
            float   dist         = (target - Position).Length();
            Timer   timout       = new Timer(3.0f, false);

            while (dist > 3.0f)
            {
                timout.Update(DwarfTime.LastTime);
                if (timout.HasTriggered)
                {
                    break;
                }
                Vector3 output = Creature.Controller.GetOutput(DwarfTime.Dt, target, Position);
                output.Normalize();
                output *= 10;
                Physics.ApplyForce(new Vector3(output.X, 0.0f, output.Z), DwarfTime.Dt);
                dist = (target - Position).Length();
                yield return(Act.Status.Running);
            }
            yield return(Act.Status.Success);
        }