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); }
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); }
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); }