Esempio n. 1
0
        public override void OnStart(PartModule.StartState state)
        {
            if ((!HighLogic.LoadedSceneIsEditor && !HighLogic.LoadedSceneIsFlight) || !CompatibilityChecker.IsAllCompatible())
            {
                return;
            }
            //Identification of the RealChuteModule
            if (this.part.Modules.Contains("RealChuteModule"))
            {
                this.rcModule = this.part.Modules["RealChuteModule"] as RealChuteModule;
            }
            else
            {
                return;
            }
            this.secondaryChute = this.rcModule.secondaryChute;
            if (!string.IsNullOrEmpty(this.textureLibrary))
            {
                this.textureLib.TryGetConfig(this.textureLibrary, ref this.textures);
            }
            this.bodies = AtmoPlanets.fetch;
            this.body   = this.bodies.GetBody(this.planets);

            //Initializes ChuteTemplates
            if (this.chutes.Count <= 0)
            {
                if (this.node == null && !PersistentManager.instance.TryGetNode <ProceduralChute>(this.part.name, ref this.node))
                {
                    return;
                }
                LoadChutes();
            }
            this.chutes.ForEach(c => c.Initialize());
            if (this.sizes.Count <= 0)
            {
                this.sizes = this.sizeLib.GetSizes(this.part.partInfo.name);
            }

            //Creates an instance of the texture library
            this.editorGUI = new EditorGUI(this);
            if (HighLogic.LoadedSceneIsEditor)
            {
                //Windows initiation
                this.editorGUI.window = new Rect(5, 370, 420, Screen.height - 375);
                this.chutes.ForEach(c =>
                {
                    c.templateGUI.materialsWindow = new Rect(this.editorGUI.matX, this.editorGUI.matY, 375, 275);
                    c.templateGUI.drag            = new Rect(0, 0, 375, 25);
                });
                this.editorGUI.failedWindow         = new Rect(Screen.width / 2 - 150, Screen.height / 2 - 150, 300, 300);
                this.editorGUI.successfulWindow     = new Rect(Screen.width / 2 - 150, Screen.height / 2 - 25, 300, 50);
                this.editorGUI.presetsWindow        = new Rect(Screen.width / 2 - 200, Screen.height / 2 - 250, 400, 500);
                this.editorGUI.presetsSaveWindow    = new Rect(Screen.width / 2 - 175, Screen.height / 2 - 110, 350, 220);
                this.editorGUI.presetsWarningWindow = new Rect(Screen.width / 2 - 100, Screen.height / 2 - 50, 200, 100);

                if (HighLogic.CurrentGame.Mode == Game.Modes.CAREER)
                {
                    float level = 0;
                    switch (EditorDriver.editorFacility)
                    {
                    case EditorFacility.VAB:
                        level = ScenarioUpgradeableFacilities.GetFacilityLevel(SpaceCenterFacility.VehicleAssemblyBuilding); break;

                    case EditorFacility.SPH:
                        level = ScenarioUpgradeableFacilities.GetFacilityLevel(SpaceCenterFacility.SpaceplaneHangar); break;

                    default:
                        break;
                    }
                    if (GameVariables.Instance.UnlockedActionGroupsStock(level))
                    {
                        Events.ForEach(e => e.guiActiveEditor = false);
                    }
                }
                else
                {
                    Events.ForEach(e => e.guiActiveEditor = false);
                }

                //Gets the original part state
                if (this.textures != null && this.caseID == -1)
                {
                    if (this.caseID == -1)
                    {
                        if (this.textures.TryGetCase(this.currentCase, ref this.parachuteCase))
                        {
                            this.caseID = this.textures.GetCaseIndex(this.parachuteCase.name);
                        }
                    }
                    else
                    {
                        this.textures.TryGetCase(this.caseID, this.type, ref this.parachuteCase);
                    }
                    this.lastCaseID = this.caseID;
                }

                if (!this.initiated)
                {
                    if (!this.bodies.TryGetBodyIndex("Kerbin", ref this.planets))
                    {
                        this.planets = 0;
                    }
                    this.body = this.bodies.GetBody(planets);

                    //Identification of the values from the RealChuteModule
                    this.mustGoDown     = this.rcModule.mustGoDown;
                    this.deployOnGround = this.rcModule.deployOnGround;
                    this.timer          = this.rcModule.timer + "s";
                    this.cutSpeed       = this.rcModule.cutSpeed.ToString();
                    if (this.rcModule.spareChutes != -1)
                    {
                        this.spares = this.rcModule.spareChutes.ToString();
                    }
                    this.originalSize = this.part.transform.GetChild(0).localScale;
                    this.initiated    = true;
                }
            }
            else if (this.textures != null)
            {
                this.textures.TryGetCase(this.caseID, this.type, ref this.parachuteCase);
                this.lastCaseID = this.caseID;
            }

            if (this.parent == null)
            {
                this.parent = this.part.FindModelTransform(this.rcModule.parachutes[0].parachuteName).parent;
            }

            //Updates the part
            if (this.textures != null)
            {
                UpdateCaseTexture(this.part, this.rcModule);
                this.editorGUI.cases    = this.textures.caseNames;
                this.editorGUI.canopies = this.textures.canopyNames;
                this.editorGUI.models   = this.textures.modelNames;
            }
            UpdateScale(this.part, this.rcModule);
        }
Esempio n. 2
0
        public override void OnStart(PartModule.StartState state)
        {
            if ((!HighLogic.LoadedSceneIsEditor && !HighLogic.LoadedSceneIsFlight) || !CompatibilityChecker.IsCompatible())
            {
                return;
            }

            //Identification of the RealChuteModule
            if (this.part.Modules.Contains("RealChuteModule"))
            {
                rcModule = this.part.Modules["RealChuteModule"] as RealChuteModule;
            }
            else
            {
                return;
            }
            if (!rcModule.isTweakable)
            {
                return;
            }
            secondaryChute = rcModule.secondaryChute;
            if (textureLibrary != "none")
            {
                textureLib.TryGetConfig(textureLibrary, ref textures);
            }
            bodies = AtmoPlanets.fetch;
            main   = new ChuteTemplate(this, false);
            if (secondaryChute)
            {
                secondary = new ChuteTemplate(this, true);
            }

            //Initialization of sizes
            if (sizes.Count <= 0 && moduleNodes.Keys.Contains(this.part.partInfo.name))
            {
                print("[RealChute]: Reloading size nodes for " + this.part.partInfo.name);
                moduleNodes.TryGetValue(this.part.partInfo.name, out sizes);
            }

            //Creates an instance of the texture library
            if (textureLibrary != "none")
            {
                cases    = textures.caseNames;
                canopies = textures.canopyNames;
                models   = textures.modelNames;
                textures.TryGetCase(caseID, type, ref parachuteCase);
                lastCaseID = caseID;
            }

            if (HighLogic.LoadedSceneIsEditor)
            {
                //Windows initiation
                this.window               = new Rect(5, 370, 420, Screen.height - 375);
                this.materialsWindow      = new Rect(matX, matY, 375, 280);
                this.secMaterialsWindow   = new Rect(matX, matY, 375, 280);
                this.failedWindow         = new Rect(Screen.width / 2 - 150, Screen.height / 2 - 150, 300, 300);
                this.successfulWindow     = new Rect(Screen.width / 2 - 150, Screen.height / 2 - 25, 300, 50);
                this.presetsWindow        = new Rect(Screen.width / 2 - 200, Screen.height / 2 - 250, 400, 500);
                this.presetsSaveWindow    = new Rect(Screen.width / 2 - 175, Screen.height / 2 - 110, 350, 220);
                this.presetsWarningWindow = new Rect(Screen.width / 2 - 100, Screen.height / 2 - 50, 200, 100);

                if (!initiated)
                {
                    planets = bodies.GetPlanetIndex("Kerbin");
                    //Gets the original part state
                    if (textureLibrary != "none")
                    {
                        if (textures.TryGetCase(currentCase, ref parachuteCase))
                        {
                            caseID = textures.GetCaseIndex(parachuteCase);
                        }
                        lastCaseID = caseID;
                    }

                    //Identification of the values from the RealChuteModule
                    mustGoDown     = rcModule.mustGoDown;
                    deployOnGround = rcModule.deployOnGround;
                    timer          = rcModule.timer + "s";
                    cutSpeed       = rcModule.cutSpeed.ToString();
                    if (rcModule.spareChutes != -1)
                    {
                        spares = rcModule.spareChutes.ToString();
                    }
                    originalSize = this.part.transform.GetChild(0).localScale;
                    initiated    = true;
                }
            }

            if (parent == null)
            {
                parent = this.part.FindModelTransform(rcModule.parachuteName).parent;
            }

            //Updates the part
            if (textureLibrary != "none")
            {
                UpdateCaseTexture(this.part, rcModule);
            }
            UpdateScale(this.part, rcModule);
        }
Esempio n. 3
0
        public override void OnStart(PartModule.StartState state)
        {
            if ((!HighLogic.LoadedSceneIsEditor && !HighLogic.LoadedSceneIsFlight) || !CompatibilityChecker.IsAllCompatible())
            {
                return;
            }

            //Identification of the RealChuteModule
            if (this.part.Modules.Contains("RealChuteModule"))
            {
                rcModule = this.part.Modules["RealChuteModule"] as RealChuteModule;
            }
            else
            {
                return;
            }
            secondaryChute = rcModule.secondaryChute;
            if (textureLibrary != "none")
            {
                textureLib.TryGetConfig(textureLibrary, ref textures);
            }
            bodies = AtmoPlanets.fetch;

            //Initializes ChuteTemplates
            LoadChutes();
            if (this.part.name.Contains("(Clone)(Clone)"))
            {
                if (this.part.symmetryCounterparts.Count > 0)
                {
                    CopyFromOriginal(this.part.symmetryCounterparts.Find(p => !p.name.Contains("(Clone)(Clone)")));
                }
                RCUtils.RemoveClone(this.part);
            }
            chutes.ForEach(c => c.Initialize());
            if (sizes.Count <= 0)
            {
                sizes = sizeLib.GetSizes(this.part.partInfo.name);
            }

            //Creates an instance of the texture library
            editorGUI = new EditorGUI(this);
            if (textureLibrary != "none")
            {
                editorGUI.cases    = textures.caseNames;
                editorGUI.canopies = textures.canopyNames;
                editorGUI.models   = textures.modelNames;
                textures.TryGetCase(caseID, type, ref parachuteCase);
                lastCaseID = caseID;
            }

            if (HighLogic.LoadedSceneIsEditor)
            {
                //Windows initiation
                this.editorGUI.window = new Rect(5, 370, 420, Screen.height - 375);
                this.chutes.ForEach(c => c.materialsWindow = new Rect(editorGUI.matX, editorGUI.matY, 375, 275));
                this.editorGUI.failedWindow         = new Rect(Screen.width / 2 - 150, Screen.height / 2 - 150, 300, 300);
                this.editorGUI.successfulWindow     = new Rect(Screen.width / 2 - 150, Screen.height / 2 - 25, 300, 50);
                this.editorGUI.presetsWindow        = new Rect(Screen.width / 2 - 200, Screen.height / 2 - 250, 400, 500);
                this.editorGUI.presetsSaveWindow    = new Rect(Screen.width / 2 - 175, Screen.height / 2 - 110, 350, 220);
                this.editorGUI.presetsWarningWindow = new Rect(Screen.width / 2 - 100, Screen.height / 2 - 50, 200, 100);

                if (!initiated)
                {
                    planets = bodies.GetPlanetIndex("Kerbin");
                    //Gets the original part state
                    if (textureLibrary != "none")
                    {
                        if (textures.TryGetCase(currentCase, ref parachuteCase))
                        {
                            caseID = textures.GetCaseIndex(parachuteCase);
                        }
                        lastCaseID = caseID;
                    }

                    //Identification of the values from the RealChuteModule
                    mustGoDown     = rcModule.mustGoDown;
                    deployOnGround = rcModule.deployOnGround;
                    timer          = rcModule.timer + "s";
                    cutSpeed       = rcModule.cutSpeed.ToString();
                    if (rcModule.spareChutes != -1)
                    {
                        spares = rcModule.spareChutes.ToString();
                    }
                    originalSize = this.part.transform.GetChild(0).localScale;
                    initiated    = true;
                }
            }

            if (parent == null)
            {
                parent = this.part.FindModelTransform(rcModule.parachutes[0].parachuteName).parent;
            }

            //Updates the part
            if (textureLibrary != "none")
            {
                UpdateCaseTexture(this.part, rcModule);
            }
            UpdateScale(this.part, rcModule);
        }