示例#1
0
        public override void OnSave(ConfigNode node)
        {
            FARLogger.Info("saved");
            node.AddValue("newGame", newGame);
            node.AddValue("fractionTransonicDrag", settings.fractionTransonicDrag);
            node.AddValue("gaussianVehicleLengthFractionForSmoothing",
                          settings.gaussianVehicleLengthFractionForSmoothing);
            node.AddValue("numAreaSmoothingPasses", settings.numAreaSmoothingPasses);
            node.AddValue("numDerivSmoothingPasses", settings.numDerivSmoothingPasses);
            node.AddValue("numVoxelsControllableVessel", voxelSettings.numVoxelsControllableVessel);
            node.AddValue("numVoxelsDebrisVessel", voxelSettings.numVoxelsDebrisVessel);
            node.AddValue("minPhysTicksPerUpdate", voxelSettings.minPhysTicksPerUpdate);
            node.AddValue("useHigherResVoxelPoints", voxelSettings.useHigherResVoxelPoints);
            node.AddValue("use32BitIndices", DebugVoxelMesh.Use32BitIndices);
            node.AddValue("index", settings.index);

            FlightGUI.SaveActiveData();
            var flightGUINode = new ConfigNode("FlightGUISettings");

            FARLogger.Info("Saving FAR Data");
            foreach (ConfigNode configNode in flightGUISettings)
            {
                flightGUINode.AddNode(configNode);
            }
            node.AddNode(flightGUINode);

            FARDebugAndSettings.SaveConfigs(node);
        }
        /// <summary>
        /// Toggle or enable/disable FAR speed display.
        /// </summary>
        /// <param name="enabled">Enable/disable the speed display, null value toggles the speed display</param>
        /// <param name="v">Vessel to toggle or enable/disable speed display for, null to apply <paramref name="enabled"/> globally</param>
        /// <returns>Success/failure of toggling or enabling/disabling the speed display</returns>
        public static bool ToggleAirspeedDisplay(bool?enabled = null, Vessel v = null)
        {
            if (v == null)
            {
                if (enabled == null)
                {
                    AirspeedSettingsGUI.allEnabled = !AirspeedSettingsGUI.allEnabled;
                }
                else
                {
                    AirspeedSettingsGUI.allEnabled = (bool)enabled;
                }
                return(true);
            }

            FlightGUI gui = VesselFlightInfo(v);

            if (gui != null)
            {
                AirspeedSettingsGUI airspeedSettingsGUI = gui.airSpeedGUI;
                if (airspeedSettingsGUI != null)
                {
                    if (enabled == null)
                    {
                        airspeedSettingsGUI.enabled = !airspeedSettingsGUI.enabled;
                    }
                    else
                    {
                        airspeedSettingsGUI.enabled = (bool)enabled;
                    }
                    return(true);
                }
            }
            return(false);
        }
        private FlightGUI GetFlightInfo(Vessel v)
        {
            FlightGUI gui = null;

            FlightGUI.vesselFlightGUI.TryGetValue(v, out gui);

            return(gui);
        }
        /// <summary>
        /// Returns the current aerodynamic torque being experienced by the vehicle in world space
        /// </summary>
        /// <param name="v">The vessel that force is being queried</param>
        /// <returns>The torque on the vessel in world space</returns>
        public static Vector3 VesselAerodynamicTorque(Vessel v)
        {
            FlightGUI gui = VesselFlightInfo(v);

            if (gui == null)
            {
                return(Vector2.zero);
            }
            return(gui.InfoParameters.aerodynamicTorque);
        }
        public static double VesselTSFC(Vessel v)
        {
            FlightGUI gui = VesselFlightInfo(v);

            if (gui == null)
            {
                return(0.0);
            }
            return(gui.InfoParameters.tSFC);
        }
        public static double VesselStallFrac(Vessel v)
        {
            FlightGUI gui = VesselFlightInfo(v);

            if (gui == null)
            {
                return(0.0);
            }
            return(gui.InfoParameters.stallFraction);
        }
        public static double VesselBallisticCoeff(Vessel v)
        {
            FlightGUI gui = VesselFlightInfo(v);

            if (gui == null)
            {
                return(0.0);
            }
            return(gui.InfoParameters.ballisticCoeff);
        }
        public static double VesselSideslip(Vessel v)
        {
            FlightGUI gui = VesselFlightInfo(v);

            if (gui == null)
            {
                return(0.0);
            }
            return(gui.InfoParameters.sideslipAngle);
        }
        public static double VesselRefArea(Vessel v)
        {
            FlightGUI gui = VesselFlightInfo(v);

            if (gui == null)
            {
                return(0.0);
            }
            return(gui.InfoParameters.refArea);
        }
示例#10
0
        public static double VesselDynPres(Vessel v)
        {
            FlightGUI gui = VesselFlightInfo(v);

            if (gui == null)
            {
                return(0.0);
            }
            return(gui.InfoParameters.dynPres);
        }
示例#11
0
        private void FixedUpdate()
        {
            if (_vehicleAero == null || !vessel.loaded)
            {
                return;
            }
            if (_vehicleAero.CalculationCompleted)
            {
                _vehicleAero.GetNewAeroData(out _currentAeroModules,
                                            out _unusedAeroModules,
                                            out _currentAeroSections,
                                            out _legacyWingModels);

                Exposure.VesselBounds = _vehicleAero.VoxelBounds;

                if (_flightGUI is null)
                {
                    _flightGUI = vessel.GetComponent <FlightGUI>();
                }

                _flightGUI.UpdateAeroModules(_currentAeroModules, _legacyWingModels);

                foreach (FARAeroPartModule a in _unusedAeroModules)
                {
                    a.SetShielded(true);
                    a.ForceLegacyAeroUpdates();
                }

                foreach (FARAeroPartModule a in _currentAeroModules)
                {
                    a.SetShielded(false);
                    a.ForceLegacyAeroUpdates();
                }

                _vesselIntakeRamDrag.UpdateAeroData(_currentAeroModules);
            }

            if (FlightGlobals.ready && _currentAeroSections != null && vessel)
            {
                CalculateAndApplyVesselAeroProperties();
            }
            if (_currentGeoModules.Count > geoModulesReady)
            {
                CheckGeoModulesReady();
            }
            if (_updateRateLimiter < FARSettingsScenarioModule.VoxelSettings.minPhysTicksPerUpdate)
            {
                _updateRateLimiter++;
            }
            else if (_updateQueued)
            {
                VesselUpdate(_recalcGeoModules);
            }
        }
        public static double VesselAoA(Vessel v)
        {
            FlightGUI gui = VesselFlightInfo(v);

            if (gui == null)
            {
                return(0);
            }
            else
            {
                return(gui.InfoParameters.aoA);
            }
        }
        public static double VesselTermVelEst(Vessel v)
        {
            FlightGUI gui = VesselFlightInfo(v);

            if (gui == null)
            {
                return(0);
            }
            else
            {
                return(gui.InfoParameters.termVelEst);
            }
        }
        public static double VesselDragCoeff(Vessel v)
        {
            FlightGUI gui = VesselFlightInfo(v);

            if (gui == null)
            {
                return(0);
            }
            else
            {
                return(gui.InfoParameters.dragCoeff);
            }
        }
示例#15
0
        public static double VesselEAS(Vessel vessel)
        {
            FlightGUI flightgui = VesselFlightInfo(vessel);

            if (flightgui == null)
            {
                return(0.0);
            }
            AirspeedSettingsGUI airspeedgui = flightgui.airSpeedGUI;

            if (airspeedgui == null)
            {
                return(0.0);
            }
            return(airspeedgui.CalculateEAS());
        }
示例#16
0
    // Use this for initialization
    public override void Start()
    {
        soundManager = GetComponent <FlightSoundManager>();
        base.Start();
        SetGameState(GameState.Running);
        GameObject dragonObject = (GameObject)Instantiate(dragonPrefab, new Vector3(-2 * cam.aspect, 0, 0), Quaternion.identity);

        GetComponent <ScoreGUI>().SetMedalRequirements(bronzeMedalScore, silverMedalScore, goldMedalScore);
        flightGUI           = GetComponent <FlightGUI>();
        dragon              = dragonObject.GetComponent <Dragon>();
        worldBounds.extents = new Vector3(worldBounds.extents.x * cam.aspect, 1, worldBounds.extents.z);
        backgroundPlane.transform.localScale = new Vector3(cam.aspect, 1, 1);

        fairyDelay             = Random.Range(fairyDelayMin, fairyDelayMax);
        pickupAudioSource      = GetComponent <AudioSource>();
        pickupAudioSource.clip = soundManager.Pickup;
    }