Ejemplo n.º 1
0
 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?
 }
Ejemplo n.º 2
0
        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;
            }
        }
Ejemplo n.º 3
0
        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();
        }
Ejemplo n.º 4
0
        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?
 }
Ejemplo n.º 6
0
        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();
        }
Ejemplo n.º 7
0
        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();
        }