public void OnDestroy() { MonoBehaviour.print("SSTUReflectionManager OnDestroy()"); if (instance == this) { instance = null; } if (vesselCreateEvent != null) { GameEvents.onVesselCreate.Remove(vesselCreateEvent); } if (vesselDestroyedEvent != null) { GameEvents.onVesselDestroy.Remove(vesselDestroyedEvent); } if (gui != null) { GameObject.Destroy(gui); gui = null; } if (debugSphere != null) { GameObject.Destroy(debugSphere); debugSphere = null; } //TODO proper resource cleanup //TODO do materials and render textures need to be released? }
public void Awake() { MonoBehaviour.print("ReflectionManager Awake()"); instance = this; debug = TexturesUnlimitedLoader.configurationNode.GetBoolValue("debug", false); ConfigNode node = TexturesUnlimitedLoader.configurationNode.GetNode("REFLECTION_CONFIG"); MonoBehaviour.print("TU-Reflection Manager - Loading reflection configuration: \n" + node.ToString()); MonoBehaviour.print("TU-Reflection Manager - Alternate Render Enabled (DX9/DX11 Fix): " + TexturesUnlimitedLoader.alternateRender); reflectionsEnabled = node.GetBoolValue("enabled", false); envMapSize = node.GetIntValue("resolution", envMapSize); mapUpdateSpacing = node.GetIntValue("interval", mapUpdateSpacing); eveInstalled = node.GetBoolValue("eveInstalled", false); export = node.GetBoolValue("exportDebugCubes", false); init(); Texture2D tex; if (debugAppButton == null && debug)//static reference; track if the button was EVER created, as KSP keeps them even if the addon is destroyed { //create a new button tex = GameDatabase.Instance.GetTexture("Squad/PartList/SimpleIcons/RDIcon_fuelSystems-highPerformance", false); debugAppButton = ApplicationLauncher.Instance.AddModApplication(debugGuiEnable, debugGuiDisable, null, null, null, null, ApplicationLauncher.AppScenes.FLIGHT | ApplicationLauncher.AppScenes.SPH | ApplicationLauncher.AppScenes.VAB, tex); } else if (debugAppButton != null) { //reseat callback refs to the ones from THIS instance of the KSPAddon (old refs were stale, pointing to methods for a deleted class instance) debugAppButton.onTrue = debugGuiEnable; debugAppButton.onFalse = debugGuiDisable; } }
private void updateWindow(int id) { ReflectionManager manager = ReflectionManager.Instance; bool galaxy = manager.renderGalaxy; bool atmo = manager.renderAtmo; bool scaled = manager.renderScaled; bool scenery = manager.renderScenery; GUILayout.BeginVertical(); manager.reflectionsEnabled = addButtonRowToggle("Reflections Enabled", manager.reflectionsEnabled); manager.renderGalaxy = addButtonRowToggle("Render Galaxy", galaxy); manager.renderAtmo = addButtonRowToggle("Render Atmo", atmo); manager.renderScaled = addButtonRowToggle("Render Scaled", scaled); manager.renderScenery = addButtonRowToggle("Render Scenery", scenery); TexturesUnlimitedLoader.alternateRender = addButtonRowToggle("Alternate Render", TexturesUnlimitedLoader.alternateRender); manager.eveInstalled = addButtonRowToggle("Eve Fix", manager.eveInstalled); if (GUILayout.Button("Toggle Debug Sphere")) { manager.toggleDebugSphere(); } if (GUILayout.Button("Force Reflection Probe Update")) { manager.forceReflectionUpdate(); } if (GUILayout.Button("Export Debug Cube Maps")) { manager.renderDebugCubes(); } if (GUILayout.Button("Export Debug Cube Layer")) { manager.renderDebugLayers(); } if (GUILayout.Button("Dump world data")) { Utils.dumpWorldHierarchy(); } if (GUILayout.Button("Dump cam data")) { Utils.dumpCameraData(); } if (GUILayout.Button("Dump Stock Refl Data")) { Utils.dumpReflectionData(); } if (GUILayout.Button("Dump model UV Maps")) { TexturesUnlimitedLoader.dumpUVMaps(true); } if (GUILayout.Button("Calculate Normalization Data")) { NormMaskCreation.processBatch(); } GUILayout.EndVertical(); }
public void Awake() { MonoBehaviour.print("ReflectionManager Awake()"); instance = this; if (renderStack.Count <= 0) { renderStack.Add(ReflectionPass.GALAXY); renderStack.Add(ReflectionPass.SCALED); renderStack.Add(ReflectionPass.LOCAL); } ConfigNode[] nodes = GameDatabase.Instance.GetConfigNodes("REFLECTION_CONFIG"); if (nodes == null || nodes.Length < 1) { reflectionsEnabled = false; return; } ConfigNode node = nodes[0]; MonoBehaviour.print("SSTUReflectionManager - Loading reflection configuration: \n" + node.ToString()); reflectionsEnabled = node.GetBoolValue("enabled", false); envMapSize = node.GetIntValue("resolution", envMapSize); mapUpdateSpacing = node.GetIntValue("interval", mapUpdateSpacing); numberOfFaces = node.GetIntValue("faces", numberOfFaces); eveInstalled = node.GetBoolValue("eveInstalled", false); debug = node.GetBoolValue("debug", false); export = node.GetBoolValue("exportDebugCubes", false); init(); vesselCreateEvent = new EventData <Vessel> .OnEvent(vesselCreated); vesselDestroyedEvent = new EventData <Vessel> .OnEvent(vesselDestroyed); GameEvents.onVesselCreate.Add(vesselCreateEvent); GameEvents.onVesselDestroy.Add(vesselDestroyedEvent); Texture2D tex; if (debugAppButton == null && debug)//static reference; track if the button was EVER created, as KSP keeps them even if the addon is destroyed { //create a new button tex = GameDatabase.Instance.GetTexture("Squad/PartList/SimpleIcons/RDIcon_fuelSystems-highPerformance", false); debugAppButton = ApplicationLauncher.Instance.AddModApplication(debugGuiEnable, debugGuiDisable, null, null, null, null, ApplicationLauncher.AppScenes.FLIGHT | ApplicationLauncher.AppScenes.SPH | ApplicationLauncher.AppScenes.VAB, tex); } else if (debugAppButton != null) { //reseat callback refs to the ones from THIS instance of the KSPAddon (old refs were stale, pointing to methods for a deleted class instance) debugAppButton.onTrue = debugGuiEnable; debugAppButton.onFalse = debugGuiDisable; } }
public void OnDestroy() { if (instance == this) { instance = null; } if (gui != null) { GameObject.Destroy(gui); gui = null; } if (debugSphere != null) { GameObject.Destroy(debugSphere); debugSphere = null; } //TODO proper resource cleanup //TODO do materials and render textures need to be released? }
private void updateWindow(int id) { ReflectionManager manager = ReflectionManager.Instance; bool galaxy = manager.renderGalaxy; bool atmo = manager.renderAtmo; bool scaled = manager.renderScaled; bool scenery = manager.renderScenery; GUILayout.BeginVertical(); manager.reflectionsEnabled = addButtonRowToggle("Reflections Enabled", manager.reflectionsEnabled); manager.renderGalaxy = addButtonRowToggle("Render Galaxy", galaxy); manager.renderAtmo = addButtonRowToggle("Render Atmo", atmo); manager.renderScaled = addButtonRowToggle("Render Scaled", scaled); manager.renderScenery = addButtonRowToggle("Render Scenery", scenery); manager.eveInstalled = addButtonRowToggle("Eve Fix", manager.eveInstalled); if (GUILayout.Button("Toggle Debug Sphere")) { manager.toggleDebugSphere(); } if (GUILayout.Button("Force Reflection Probe Update")) { manager.forceReflectionUpdate(); } if (GUILayout.Button("Export Debug Cube Maps")) { manager.renderDebugCubes(); } if (GUILayout.Button("Export Debug Cube Layer")) { manager.renderDebugLayers(); } if (GUILayout.Button("Dump world data")) { manager.dumpWorldHierarchy(); } if (GUILayout.Button("Dump cam data")) { manager.dumpCameraData(); } GUILayout.EndVertical(); }
private void updateWindow(int id) { ReflectionManager manager = ReflectionManager.Instance; bool galaxy = manager.renderGalaxy; bool atmo = manager.renderAtmo; bool scaled = manager.renderScaled; bool scenery = manager.renderScenery; GUILayout.BeginVertical(); manager.reflectionsEnabled = addButtonRowToggle("Reflections Enabled", manager.reflectionsEnabled); manager.renderGalaxy = addButtonRowToggle("Render Galaxy", galaxy); manager.renderAtmo = addButtonRowToggle("Render Atmo", atmo); manager.renderScaled = addButtonRowToggle("Render Scaled", scaled); manager.renderScenery = addButtonRowToggle("Render Scenery", scenery); manager.eveInstalled = addButtonRowToggle("Eve Fix", manager.eveInstalled); int len = manager.renderStack.Count; ReflectionManager.ReflectionPass pass; int incIndex = -1; int decIndex = -1; for (int i = 0; i < len; i++) { pass = manager.renderStack[i]; bool minus = addButtonRow(pass.ToString(), "-"); if (minus) { decIndex = i; } bool plus = addButtonRow(pass.ToString(), "+"); if (plus) { incIndex = i; } } if (incIndex > 0) { pass = manager.renderStack[incIndex]; manager.renderStack.RemoveAt(incIndex); manager.renderStack.Insert(incIndex - 1, pass); } if (decIndex >= 0 && decIndex < len - 1) { pass = manager.renderStack[decIndex]; manager.renderStack.RemoveAt(decIndex); manager.renderStack.Insert(decIndex + 1, pass); } if (GUILayout.Button("Toggle Debug Sphere")) { manager.toggleDebugSphere(); } if (GUILayout.Button("Force Reflection Probe Update")) { manager.updateReflections(true); } if (GUILayout.Button("Export Debug Cube Maps")) { manager.renderDebugCubes(); } if (GUILayout.Button("Export Debug Cube Layer")) { manager.renderDebugLayers(); } if (GUILayout.Button("Dump world data")) { manager.dumpWorldHierarchy(); } if (GUILayout.Button("Dump cam data")) { manager.dumpCameraData(); } GUILayout.EndVertical(); }