예제 #1
0
파일: PartSim.cs 프로젝트: CYBUTEK/Engineer
        public void CreateEngineSims(List<EngineSim> allEngines, double atmosphere, double velocity, bool vectoredThrust, LogMsg log)
        {
            bool correctThrust = SimManager.DoesEngineUseCorrectedThrust(part);
            if (log != null)
            {
                log.buf.AppendLine("CreateEngineSims for " + name);

                foreach (PartModule partMod in part.Modules)
                {
                    log.buf.AppendLine("Module: " + partMod.moduleName);
                }

                log.buf.AppendLine("correctThrust = " + correctThrust);
            }

            if (hasMultiModeEngine)
            {
                // A multi-mode engine has multiple ModuleEnginesFX but only one is active at any point
                // The mode of the engine is the engineID of the ModuleEnginesFX that is active
                string mode = part.GetModule<MultiModeEngine>().mode;

                foreach (ModuleEnginesFX engine in part.GetModules<ModuleEnginesFX>())
                {
                    if (engine.engineID == mode)
                    {
                        if (log != null)
                            log.buf.AppendLine("Module: " + engine.moduleName);

                        Vector3 thrustvec = CalculateThrustVector(vectoredThrust ? engine.thrustTransforms : null, log);

                        EngineSim engineSim = new EngineSim(this,
                                                            atmosphere,
                                                            velocity,
                                                            engine.maxThrust,
                                                            engine.minThrust,
                                                            engine.thrustPercentage,
                                                            engine.requestedThrust,
                                                            thrustvec,
                                                            engine.realIsp,
                                                            engine.atmosphereCurve,
                                                            engine.useVelocityCurve ? engine.velocityCurve : null,
                                                            engine.throttleLocked,
                                                            engine.propellants,
                                                            engine.isOperational,
                                                            correctThrust);
                        allEngines.Add(engineSim);
                    }
                }
            }
            else
            {
                if (hasModuleEnginesFX)
                {
                    foreach (ModuleEnginesFX engine in part.GetModules<ModuleEnginesFX>())
                    {
                        if (log != null)
                            log.buf.AppendLine("Module: " + engine.moduleName);

                        Vector3 thrustvec = CalculateThrustVector(vectoredThrust ? engine.thrustTransforms : null, log);

                        EngineSim engineSim = new EngineSim(this,
                                                            atmosphere,
                                                            velocity,
                                                            engine.maxThrust,
                                                            engine.minThrust,
                                                            engine.thrustPercentage,
                                                            engine.requestedThrust,
                                                            thrustvec,
                                                            engine.realIsp,
                                                            engine.atmosphereCurve,
                                                            engine.useVelocityCurve ? engine.velocityCurve : null,
                                                            engine.throttleLocked,
                                                            engine.propellants,
                                                            engine.isOperational,
                                                            correctThrust);
                        allEngines.Add(engineSim);
                    }
                }

                if (hasModuleEngines)
                {
                    foreach (ModuleEngines engine in part.GetModules<ModuleEngines>())
                    {
                        if (log != null)
                            log.buf.AppendLine("Module: " + engine.moduleName);

                        Vector3 thrustvec = CalculateThrustVector(vectoredThrust ? engine.thrustTransforms : null, log);

                        EngineSim engineSim = new EngineSim(this,
                                                            atmosphere,
                                                            velocity,
                                                            engine.maxThrust,
                                                            engine.minThrust,
                                                            engine.thrustPercentage,
                                                            engine.requestedThrust,
                                                            thrustvec,
                                                            engine.realIsp,
                                                            engine.atmosphereCurve,
                                                            engine.useVelocityCurve ? engine.velocityCurve : null,
                                                            engine.throttleLocked,
                                                            engine.propellants,
                                                            engine.isOperational,
                                                            correctThrust);
                        allEngines.Add(engineSim);
                    }
                }
            }

            if (log != null)
                log.Flush();
        }
예제 #2
0
        public void CreateEngineSims(List <EngineSim> allEngines, double atmosphere, double velocity, bool vectoredThrust, LogMsg log)
        {
            bool correctThrust = SimManager.DoesEngineUseCorrectedThrust(part);

            if (log != null)
            {
                log.buf.AppendLine("CreateEngineSims for " + name);

                foreach (PartModule partMod in part.Modules)
                {
                    log.buf.AppendLine("Module: " + partMod.moduleName);
                }

                log.buf.AppendLine("correctThrust = " + correctThrust);
            }

            if (hasMultiModeEngine)
            {
                // A multi-mode engine has multiple ModuleEnginesFX but only one is active at any point
                // The mode of the engine is the engineID of the ModuleEnginesFX that is active
                string mode = part.GetModule <MultiModeEngine>().mode;

                foreach (ModuleEnginesFX engine in part.GetModules <ModuleEnginesFX>())
                {
                    if (engine.engineID == mode)
                    {
                        if (log != null)
                        {
                            log.buf.AppendLine("Module: " + engine.moduleName);
                        }

                        Vector3 thrustvec = CalculateThrustVector(vectoredThrust ? engine.thrustTransforms : null, log);

                        EngineSim engineSim = new EngineSim(this,
                                                            atmosphere,
                                                            velocity,
                                                            engine.maxThrust,
                                                            engine.minThrust,
                                                            engine.thrustPercentage,
                                                            engine.requestedThrust,
                                                            thrustvec,
                                                            engine.realIsp,
                                                            engine.atmosphereCurve,
                                                            engine.useVelocityCurve ? engine.velocityCurve : null,
                                                            engine.throttleLocked,
                                                            engine.propellants,
                                                            engine.isOperational,
                                                            correctThrust);
                        allEngines.Add(engineSim);
                    }
                }
            }
            else
            {
                if (hasModuleEnginesFX)
                {
                    foreach (ModuleEnginesFX engine in part.GetModules <ModuleEnginesFX>())
                    {
                        if (log != null)
                        {
                            log.buf.AppendLine("Module: " + engine.moduleName);
                        }

                        Vector3 thrustvec = CalculateThrustVector(vectoredThrust ? engine.thrustTransforms : null, log);

                        EngineSim engineSim = new EngineSim(this,
                                                            atmosphere,
                                                            velocity,
                                                            engine.maxThrust,
                                                            engine.minThrust,
                                                            engine.thrustPercentage,
                                                            engine.requestedThrust,
                                                            thrustvec,
                                                            engine.realIsp,
                                                            engine.atmosphereCurve,
                                                            engine.useVelocityCurve ? engine.velocityCurve : null,
                                                            engine.throttleLocked,
                                                            engine.propellants,
                                                            engine.isOperational,
                                                            correctThrust);
                        allEngines.Add(engineSim);
                    }
                }

                if (hasModuleEngines)
                {
                    foreach (ModuleEngines engine in part.GetModules <ModuleEngines>())
                    {
                        if (log != null)
                        {
                            log.buf.AppendLine("Module: " + engine.moduleName);
                        }

                        Vector3 thrustvec = CalculateThrustVector(vectoredThrust ? engine.thrustTransforms : null, log);

                        EngineSim engineSim = new EngineSim(this,
                                                            atmosphere,
                                                            velocity,
                                                            engine.maxThrust,
                                                            engine.minThrust,
                                                            engine.thrustPercentage,
                                                            engine.requestedThrust,
                                                            thrustvec,
                                                            engine.realIsp,
                                                            engine.atmosphereCurve,
                                                            engine.useVelocityCurve ? engine.velocityCurve : null,
                                                            engine.throttleLocked,
                                                            engine.propellants,
                                                            engine.isOperational,
                                                            correctThrust);
                        allEngines.Add(engineSim);
                    }
                }
            }

            if (log != null)
            {
                log.Flush();
            }
        }