コード例 #1
0
 public Radar(ModuleTCA tca)
     : base(tca)
 {
     CurHit = new Sweep(VSL);
     BestHit = new Sweep(VSL);
     DetectedHit = new Sweep(VSL);
     Altimeter = new PQS_Altimeter(VSL);
 }
コード例 #2
0
 public ToOrbitExecutor(ModuleTCA tca)
     : base(tca)
 {
     InitModuleFields();
     Executor = new ManeuverExecutor(tca);
     GearAction.action = () =>VSL.GearOn(false);
     ErrorThreshold.Lower = 2*GLB.ORB.Dtol;
     ErrorThreshold.Upper = 4*GLB.ORB.Dtol;
     GravityTurnStart = 0;
 }
コード例 #3
0
 public Anchor(ModuleTCA tca)
     : base(tca)
 {
 }
コード例 #4
0
 public static void AttachTCA(ModuleTCA tca)
 {
     TCA = tca;
     if(TCA == null) SetDefaultButton();
 }
コード例 #5
0
 public ManeuverAutopilot(ModuleTCA tca)
     : base(tca)
 {
 }
コード例 #6
0
 public VTOLAssist(ModuleTCA tca)
     : base(tca)
 {
 }
 public CollisionPreventionSystem(ModuleTCA tca)
     : base(tca)
 {
 }
コード例 #8
0
 public HorizontalSpeedControl(ModuleTCA tca) : base(tca)
 {
 }
コード例 #9
0
 public OnPlanetPanel(ModuleTCA tca)
     : base(tca)
 {
 }
コード例 #10
0
 public AutoLander(ModuleTCA tca) : base(tca)
 {
 }
コード例 #11
0
 public ThrottleControl(ModuleTCA tca) : base(tca)
 {
 }
コード例 #12
0
 public AttitudeControl(ModuleTCA tca) : base(tca)
 {
 }
コード例 #13
0
 protected AttitudeControlBase(ModuleTCA tca) : base(tca)
 {
 }
コード例 #14
0
 public TranslationControl(ModuleTCA tca) : base(tca)
 {
 }
コード例 #15
0
 public SquadPanel(ModuleTCA tca)
     : base(tca)
 {
 }
 public VerticalSpeedControl(ModuleTCA tca)
     : base(tca)
 {
 }
コード例 #17
0
 protected TorqueOptimizer(ModuleTCA tca)
     : base(tca)
 {
 }
コード例 #18
0
 public AdvancedTab(ModuleTCA tca) : base(tca)
 {
 }
コード例 #19
0
 protected TrajectoryCalculator(ModuleTCA tca) : base(tca)
 {
 }
コード例 #20
0
 public CruiseControl(ModuleTCA tca) : base(tca)
 {
 }
 public HorizontalSpeedControl(ModuleTCA tca)
     : base(tca)
 {
 }
コード例 #22
0
 public VTOLControl(ModuleTCA tca) : base(tca)
 {
 }
コード例 #23
0
 protected AutopilotModule(ModuleTCA tca)
     : base(tca)
 {
 }
コード例 #24
0
 public BearingControl(ModuleTCA tca) : base(tca)
 {
 }
コード例 #25
0
 public AltitudeControl(ModuleTCA tca)
     : base(tca)
 {
     UpDamper.Period = GLB.KeyRepeatTime;
     DownDamper.Period = GLB.KeyRepeatTime;
 }
コード例 #26
0
 public ManeuverAutopilot(ModuleTCA tca) : base(tca)
 {
 }
コード例 #27
0
 public ManeuverExecutor(ModuleTCA tca)
     : base(tca)
 {
     InitModuleFields();
 }
コード例 #28
0
 public ToOrbitAutopilot(ModuleTCA tca) : base(tca)
 {
 }
コード例 #29
0
 public NavigationPanel(ModuleTCA tca)
     : base(tca)
 {
 }
コード例 #30
0
        public NavigationTab(ModuleTCA tca) : base(tca)
        {
            var rnd = new System.Random();

            wp_editor_ID = rnd.Next();
        }
コード例 #31
0
 public VerticalSpeedControl(ModuleTCA tca) : base(tca)
 {
 }
コード例 #32
0
 public AltitudeControl(ModuleTCA tca) : base(tca)
 {
     UpDamper.Period   = GLB.KeyRepeatTime;
     DownDamper.Period = GLB.KeyRepeatTime;
 }
コード例 #33
0
 protected OrbitalComponent(ModuleTCA tca)
     : base(tca)
 {
 }
コード例 #34
0
 public EngineOptimizer(ModuleTCA tca)
     : base(tca)
 {
 }
コード例 #35
0
 public EnginesTab(ModuleTCA tca) : base(tca)
 {
 }
コード例 #36
0
 public DeorbitAutopilot(ModuleTCA tca)
     : base(tca)
 {
 }
コード例 #37
0
 public RCSOptimizer(ModuleTCA tca)
     : base(tca)
 {
 }
コード例 #38
0
 protected DrawableComponent(ModuleTCA tca) : base(tca)
 {
 }
コード例 #39
0
 protected ThrustDirectionControl(ModuleTCA tca) : base(tca)
 {
 }
コード例 #40
0
 protected TCAModule(ModuleTCA tca) : base(tca)
 {
 }
 protected ThrustDirectionControl(ModuleTCA tca)
     : base(tca)
 {
 }
コード例 #42
0
 protected AutopilotModule(ModuleTCA tca) : base(tca)
 {
 }
コード例 #43
0
 public CruiseControl(ModuleTCA tca)
     : base(tca)
 {
 }
コード例 #44
0
 protected TCAService(ModuleTCA tca) : base(tca)
 {
 }
コード例 #45
0
 protected TCAComponent(ModuleTCA tca)
 {
     TCA = tca;
 }
コード例 #46
0
 protected TCAComponent(ModuleTCA tca)
 {
     TCA = tca;
 }
コード例 #47
0
 protected DrawableComponent(ModuleTCA tca)
     : base(tca)
 {
 }
コード例 #48
0
        void update_formation_info()
        {
            tVSL = CFG.Target.GetVessel();
            if (tVSL == null)
            {
                reset_formation();
                CanManeuver = false;
                return;
            }
            if (tPN == null || !tPN.Valid)
            {
                tTCA = ModuleTCA.EnabledTCA(tVSL);
                tPN  = tTCA != null?tTCA.GetModule <PointNavigator>() : null;
            }
            var only_count = false;

            if (tVSL.srf_velocity.sqrMagnitude < C.FormationSpeedSqr)
            {
                reset_formation(); CanManeuver = false; only_count = true;
            }
            //update followers
            var offset       = 0f;
            var can_maneuver = true;

            all_followers.Clear();
            for (int i = 0, num_vessels = FlightGlobals.Vessels.Count; i < num_vessels; i++)
            {
                var v = FlightGlobals.Vessels[i];
                if (v == null || v.packed || !v.loaded)
                {
                    continue;
                }
                var tca = ModuleTCA.EnabledTCA(v);
                if (tca != null &&
                    (tca.vessel == VSL.vessel ||
                     tca.CFG.Nav[Navigation.FollowTarget] &&
                     tca.CFG.Target.GetTarget() != null &&
                     tca.CFG.Target.GetTarget() == CFG.Target.GetTarget()))
                {
                    var vPN = tca.GetModule <PointNavigator>();
                    if (vPN == null)
                    {
                        continue;
                    }
                    all_followers.Add(v.id, vPN);
                    if (offset < vPN.VSL.Geometry.R)
                    {
                        offset = vPN.VSL.Geometry.R;
                    }
                    if (v.id != VSL.vessel.id)
                    {
                        can_maneuver &= !vPN.Maneuvering ||
                                        (Maneuvering && VSL.vessel.id.CompareTo(v.id) > 0);
                    }
                }
            }
            if (only_count)
            {
                return;
            }
            CanManeuver = can_maneuver;
            var follower_index = all_followers.IndexOfKey(VSL.vessel.id);

            if (follower_index == 0)
            {
                var forward     = tVSL == null? Vector3d.zero : -tVSL.srf_velocity.normalized;
                var side        = Vector3d.Cross(VSL.Physics.Up, forward).normalized;
                var num_offsets = all_followers.Count + (all_followers.Count % 2);
                offset *= 2;
                var target_size = tTCA != null? tTCA.VSL.Geometry.D : Utils.ClampL(Math.Pow(tVSL.totalMass, 1 / 3f), 1);
                if (offset < target_size)
                {
                    offset = (float)target_size;
                }
                offset *= C.MinDistance;
                if (Formation == null || Formation.Count != num_offsets || FormationUpdateTimer.TimePassed)
                {
                    FormationUpdateTimer.Reset();
                    Formation = new List <FormationNode>(num_offsets);
                    for (int i = 0; i < num_offsets; i++)
                    {
                        Formation.Add(new FormationNode(tVSL, i, forward, side, offset));
                    }
                    all_followers.ForEach(p => p.Value.UpdateFormation(Formation));
                }
                else
                {
                    for (int i = 0; i < num_offsets; i++)
                    {
                        Formation[i].Update(forward, side, offset);
                    }
                }
            }
            keep_formation = Formation != null;
            if (Formation == null || fnode != null)
            {
                return;
            }
            //compute follower offset
            var min_d   = -1f;
            var min_off = 0;

            for (int i = 0; i < Formation.Count; i++)
            {
                var node = Formation[i];
                if (node.Follower != null)
                {
                    continue;
                }
                var d = node.Distance(VSL.vessel);
                if (min_d < 0 || min_d > d)
                {
                    min_d   = d;
                    min_off = i;
                }
            }
            Formation[min_off].Follower = VSL.vessel;
            fnode = Formation[min_off];
        }
コード例 #49
0
 public TranslationControl(ModuleTCA tca)
     : base(tca)
 {
 }
コード例 #50
0
 public PointNavigator(ModuleTCA tca) : base(tca)
 {
 }
 public MatchVelocityAutopilot(ModuleTCA tca)
     : base(tca)
 {
 }
コード例 #52
0
 public FlightStabilizer(ModuleTCA tca) : base(tca)
 {
 }
コード例 #53
0
 public ThrottleControl(ModuleTCA tca)
     : base(tca)
 {
 }
コード例 #54
0
 public BallisticJump(ModuleTCA tca) : base(tca)
 {
 }
コード例 #55
0
 public ToOrbitAutopilot(ModuleTCA tca)
     : base(tca)
 {
 }
コード例 #56
0
 public ManeuverExecutor(ModuleTCA tca)
     : base(tca)
 {
     InitModuleFields();
     ddV.Tau = 1;
 }
コード例 #57
0
 public FlightStabilizer(ModuleTCA tca)
     : base(tca)
 {
 }
コード例 #58
0
 public CollisionPreventionSystem(ModuleTCA tca) : base(tca)
 {
 }
コード例 #59
0
 public TimeWarpControl(ModuleTCA tca)
     : base(tca)
 {
 }
コード例 #60
0
 public VTOLAssist(ModuleTCA tca) : base(tca)
 {
 }