Esempio n. 1
0
    public void Execute(ref Navigation nav, Ship current_ship)
    {
        switch (command_type)
        {
        case CommandType.turn:
            nav.AddRotation(new FuzzyVector(current_ship.low_ai.CalculateTurn(desired_state.Orientation * Vector3.forward), .5f));
            return;

        case CommandType.main_dv:
            nav.SetThrottle(1);
            return;

        case CommandType.rcs_dv:
            nav.AddTranslation(new FuzzyVector((desired_state.Velocity - current_ship.Velocity).normalized, .5f));
            return;

        case CommandType.hold_orientation:
            if (first)
            {
                desired_state.Orientation = current_ship.Orientation;
                first = false;
            }
            nav.AddRotation(new FuzzyVector(current_ship.low_ai.CalculateTurn(desired_state.Orientation * Vector3.forward), .5f));
            return;

        case CommandType.stay_locked:
            nav.AddRotation(new FuzzyVector(current_ship.low_ai.CalculateTurn(desired_state.Target.Position - current_ship.Position), .5f));
            return;

        case CommandType.wait:
        default: return;
        }
    }
Esempio n. 2
0
 /// <summary> Turns in a given direction </summary>
 /// <param name="tgt_dir">  to turn to in world space </param>
 public void ApplyTurn(Vector3 tgt_dir, float importance)
 {
     navigator.AddRotation(CalculateTurn(tgt_dir), importance);
 }