Exemple #1
0
        public void loadConfigPoint(int point)
        {
            ConfigPoint _cur = Core.Instance.scattererCelestialBodies [selectedPlanet].m_manager.m_skyNode.configPoints [point];

            postProcessDepth         = _cur.postProcessDepth;
            _Post_Extinction_Tint    = _cur._Post_Extinction_Tint;
            postExtinctionMultiplier = _cur.postExtinctionMultiplier;
            postProcessExposure      = _cur.postProcessExposure;
            postProcessingalpha      = _cur.postProcessAlpha;

            alphaGlobal                 = _cur.skyAlpha;
            exposure                    = _cur.skyExposure;
            skyRimExposure              = _cur.skyRimExposure;
            extinctionMultiplier        = _cur.skyExtinctionMultiplier;
            extinctionTint              = _cur.skyExtinctionTint;
            skyExtinctionRimFade        = _cur.skyextinctionRimFade;
            skyExtinctionGroundFade     = _cur.skyextinctionGroundFade;
            _extinctionScatterIntensity = _cur._extinctionScatterIntensity;

            pointAltitude = _cur.altitude;

            openglThreshold   = _cur.openglThreshold;
            _GlobalOceanAlpha = _cur._GlobalOceanAlpha;
            viewdirOffset     = _cur.viewdirOffset;
        }
Exemple #2
0
 public void interpolateValuesFrom(ConfigPoint inConfigPoint1, ConfigPoint inConfigPoint2, float x)
 {
     skyAlpha            = Mathf.Lerp(inConfigPoint1.skyAlpha, inConfigPoint2.skyAlpha, x);
     skyExposure         = Mathf.Lerp(inConfigPoint1.skyExposure, inConfigPoint2.skyExposure, x);
     postProcessAlpha    = Mathf.Lerp(inConfigPoint1.postProcessAlpha, inConfigPoint2.postProcessAlpha, x);
     postProcessDepth    = Mathf.Lerp(inConfigPoint1.postProcessDepth, inConfigPoint2.postProcessDepth, x);
     scatteringExposure  = Mathf.Lerp(inConfigPoint1.scatteringExposure, inConfigPoint2.scatteringExposure, x);
     skyExtinctionTint   = Mathf.Lerp(inConfigPoint1.skyExtinctionTint, inConfigPoint2.skyExtinctionTint, x);
     openglThreshold     = Mathf.Lerp(inConfigPoint1.openglThreshold, inConfigPoint2.openglThreshold, x);
     viewdirOffset       = Mathf.Lerp(inConfigPoint1.viewdirOffset, inConfigPoint2.viewdirOffset, x);
     extinctionTint      = Mathf.Lerp(inConfigPoint1.extinctionTint, inConfigPoint2.extinctionTint, x);
     extinctionThickness = Mathf.Lerp(inConfigPoint1.extinctionThickness, inConfigPoint2.extinctionThickness, x);
 }
Exemple #3
0
 public void getValuesFrom(ConfigPoint inConfigPoint)
 {
     skyAlpha            = inConfigPoint.skyAlpha;
     skyExposure         = inConfigPoint.skyExposure;
     postProcessAlpha    = inConfigPoint.postProcessAlpha;
     postProcessDepth    = inConfigPoint.postProcessDepth;
     scatteringExposure  = inConfigPoint.scatteringExposure;
     skyExtinctionTint   = inConfigPoint.skyExtinctionTint;
     openglThreshold     = inConfigPoint.openglThreshold;
     viewdirOffset       = inConfigPoint.viewdirOffset;
     extinctionTint      = inConfigPoint.extinctionTint;
     extinctionThickness = inConfigPoint.extinctionThickness;
 }
Exemple #4
0
        public void getSettingsFromSkynode()
        {
            SkyNode     skyNode  = Scatterer.Instance.planetsConfigsReader.scattererCelestialBodies [selectedPlanet].m_manager.m_skyNode;
            ConfigPoint selected = skyNode.configPoints [selectedConfigPoint];

            postProcessingalpha = selected.postProcessAlpha;
            postProcessDepth    = selected.postProcessDepth;

            extinctionTint = selected.extinctionTint;

            postProcessExposure = selected.scatteringExposure;
            exposure            = selected.skyExposure;
            alphaGlobal         = selected.skyAlpha;

            openglThreshold = selected.openglThreshold;

            configPointsCnt = skyNode.configPoints.Count;

            specR     = skyNode.specR;
            specG     = skyNode.specG;
            specB     = skyNode.specB;
            shininess = skyNode.shininess;
            flattenScaledSpaceMesh = skyNode.flattenScaledSpaceMesh;

            rimBlend = skyNode.rimBlend;
            rimpower = skyNode.rimpower;

            skyExtinctionTint = selected.skyExtinctionTint;

            extinctionThickness = selected.extinctionThickness;

            mieG = skyNode.m_mieG;

            experimentalAtmoScale = skyNode.experimentalAtmoScale;
            atmosphereGlobalScale = skyNode.atmosphereGlobalScale;
            viewdirOffset         = selected.viewdirOffset;

            cloudColorMultiplier         = skyNode.cloudColorMultiplier;
            cloudScatteringMultiplier    = skyNode.cloudScatteringMultiplier;
            cloudSkyIrradianceMultiplier = skyNode.cloudSkyIrradianceMultiplier;

            volumetricsColorMultiplier = skyNode.volumetricsColorMultiplier;
            //			volumetricsScatteringMultiplier = skyNode.volumetricsScatteringMultiplier;
            //			volumetricsSkyIrradianceMultiplier = skyNode.volumetricsSkyIrradianceMultiplier;
        }
Exemple #5
0
        public void loadConfigPoint(int point)
        {
            ConfigPoint _cur = Scatterer.Instance.planetsConfigsReader.scattererCelestialBodies [selectedPlanet].m_manager.m_skyNode.configPoints [point];

            postProcessDepth    = _cur.postProcessDepth;
            extinctionTint      = _cur.extinctionTint;
            postProcessExposure = _cur.scatteringExposure;
            postProcessingalpha = _cur.postProcessAlpha;

            alphaGlobal       = _cur.skyAlpha;
            exposure          = _cur.skyExposure;
            skyExtinctionTint = _cur.skyExtinctionTint;

            extinctionThickness = _cur.extinctionThickness;

            pointAltitude = _cur.altitude;

            openglThreshold = _cur.openglThreshold;
            viewdirOffset   = _cur.viewdirOffset;
        }
Exemple #6
0
 public void interpolateValuesFrom(ConfigPoint inConfigPoint1, ConfigPoint inConfigPoint2, float x)
 {
     //altitude
     skyAlpha                    = Mathf.Lerp(inConfigPoint1.skyAlpha, inConfigPoint2.skyAlpha, x);
     skyExposure                 = Mathf.Lerp(inConfigPoint1.skyExposure, inConfigPoint2.skyExposure, x);
     postProcessAlpha            = Mathf.Lerp(inConfigPoint1.postProcessAlpha, inConfigPoint2.postProcessAlpha, x);
     postProcessDepth            = Mathf.Lerp(inConfigPoint1.postProcessDepth, inConfigPoint2.postProcessDepth, x);
     postProcessExposure         = Mathf.Lerp(inConfigPoint1.postProcessExposure, inConfigPoint2.postProcessExposure, x);
     skyExtinctionMultiplier     = Mathf.Lerp(inConfigPoint1.skyExtinctionMultiplier, inConfigPoint2.skyExtinctionMultiplier, x);
     skyExtinctionTint           = Mathf.Lerp(inConfigPoint1.skyExtinctionTint, inConfigPoint2.skyExtinctionTint, x);
     openglThreshold             = Mathf.Lerp(inConfigPoint1.openglThreshold, inConfigPoint2.openglThreshold, x);
     edgeThreshold               = Mathf.Lerp(inConfigPoint1.edgeThreshold, inConfigPoint2.edgeThreshold, x);
     viewdirOffset               = Mathf.Lerp(inConfigPoint1.viewdirOffset, inConfigPoint2.viewdirOffset, x);
     skyRimExposure              = Mathf.Lerp(inConfigPoint1.skyRimExposure, inConfigPoint2.skyRimExposure, x);
     skyextinctionRimFade        = Mathf.Lerp(inConfigPoint1.skyextinctionRimFade, inConfigPoint2.skyextinctionRimFade, x);
     skyextinctionGroundFade     = Mathf.Lerp(inConfigPoint1.skyextinctionGroundFade, inConfigPoint2.skyextinctionGroundFade, x);
     postExtinctionMultiplier    = Mathf.Lerp(inConfigPoint1.postExtinctionMultiplier, inConfigPoint2.postExtinctionMultiplier, x);
     _Post_Extinction_Tint       = Mathf.Lerp(inConfigPoint1._Post_Extinction_Tint, inConfigPoint2._Post_Extinction_Tint, x);
     _GlobalOceanAlpha           = Mathf.Lerp(inConfigPoint1._GlobalOceanAlpha, inConfigPoint2._GlobalOceanAlpha, x);
     _extinctionScatterIntensity = Mathf.Lerp(inConfigPoint1._extinctionScatterIntensity, inConfigPoint2._extinctionScatterIntensity, x);
 }
Exemple #7
0
 public void getValuesFrom(ConfigPoint inConfigPoint)
 {
     //altitude=inConfigPoint.altitude;
     skyAlpha                    = inConfigPoint.skyAlpha;
     skyExposure                 = inConfigPoint.skyExposure;
     postProcessAlpha            = inConfigPoint.postProcessAlpha;
     postProcessDepth            = inConfigPoint.postProcessDepth;
     postProcessExposure         = inConfigPoint.postProcessExposure;
     skyExtinctionMultiplier     = inConfigPoint.skyExtinctionMultiplier;
     skyExtinctionTint           = inConfigPoint.skyExtinctionTint;
     openglThreshold             = inConfigPoint.openglThreshold;
     edgeThreshold               = inConfigPoint.edgeThreshold;
     viewdirOffset               = inConfigPoint.viewdirOffset;
     skyRimExposure              = inConfigPoint.skyRimExposure;
     skyextinctionRimFade        = inConfigPoint.skyextinctionRimFade;
     skyextinctionGroundFade     = inConfigPoint.skyextinctionGroundFade;
     postExtinctionMultiplier    = inConfigPoint.postExtinctionMultiplier;
     _Post_Extinction_Tint       = inConfigPoint._Post_Extinction_Tint;
     _GlobalOceanAlpha           = inConfigPoint._GlobalOceanAlpha;
     _extinctionScatterIntensity = inConfigPoint._extinctionScatterIntensity;
 }
Exemple #8
0
        void DrawAtmosphereGUI()
        {
            ConfigPoint _cur = Scatterer.Instance.planetsConfigsReader.scattererCelestialBodies [selectedPlanet].m_manager.m_skyNode.configPoints [selectedConfigPoint];

            //if (!MapView.MapIsEnabled)
            {
                GUILayout.BeginHorizontal();
                GUILayout.Label("New point altitude:");
                newCfgPtAlt = Convert.ToSingle(GUILayout.TextField(newCfgPtAlt.ToString()));
                if (GUILayout.Button("Add"))
                {
                    Scatterer.Instance.planetsConfigsReader.scattererCelestialBodies [selectedPlanet].m_manager.m_skyNode.configPoints.Insert(selectedConfigPoint + 1, new ConfigPoint(newCfgPtAlt, alphaGlobal / 100, exposure / 100, postProcessingalpha / 100, postProcessDepth / 10000, postProcessExposure / 100, skyExtinctionTint / 100, openglThreshold, viewdirOffset, extinctionTint / 100, extinctionThickness));
                    selectedConfigPoint += 1;
                    configPointsCnt      = Scatterer.Instance.planetsConfigsReader.scattererCelestialBodies [selectedPlanet].m_manager.m_skyNode.configPoints.Count;
                    loadConfigPoint(selectedConfigPoint);
                }
                GUILayout.EndHorizontal();
                GUILayout.BeginHorizontal();
                GUILayout.Label("Config point:");
                if (GUILayout.Button("<"))
                {
                    if (selectedConfigPoint > 0)
                    {
                        selectedConfigPoint -= 1;
                        loadConfigPoint(selectedConfigPoint);
                    }
                }
                GUILayout.TextField((selectedConfigPoint).ToString());
                if (GUILayout.Button(">"))
                {
                    if (selectedConfigPoint < configPointsCnt - 1)
                    {
                        selectedConfigPoint += 1;
                        loadConfigPoint(selectedConfigPoint);
                    }
                }
                //GUILayout.Label (String.Format("Total:{0}", configPointsCnt));
                if (GUILayout.Button("Delete"))
                {
                    if (configPointsCnt <= 1)
                    {
                        print("Can't delete config point, one or no points remaining");
                    }
                    else
                    {
                        Scatterer.Instance.planetsConfigsReader.scattererCelestialBodies [selectedPlanet].m_manager.m_skyNode.configPoints.RemoveAt(selectedConfigPoint);
                        if (selectedConfigPoint >= configPointsCnt - 1)
                        {
                            selectedConfigPoint = configPointsCnt - 2;
                        }
                        configPointsCnt = Scatterer.Instance.planetsConfigsReader.scattererCelestialBodies [selectedPlanet].m_manager.m_skyNode.configPoints.Count;
                        loadConfigPoint(selectedConfigPoint);
                    }
                }
                GUILayout.EndHorizontal();
                GUIfloat("Point altitude", ref pointAltitude, ref _cur.altitude);
                _scroll = GUILayout.BeginScrollView(_scroll, false, true, GUILayout.Width(400), GUILayout.Height(Scatterer.Instance.pluginData.scrollSectionHeight));
                GUILayout.Label("(settings with a * are global and not cfgPoint dependent)");
                GUILayout.Label("Atmo");
                GUIfloat("ExperimentalAtmoScale*", ref experimentalAtmoScale, ref Scatterer.Instance.planetsConfigsReader.scattererCelestialBodies [selectedPlanet].m_manager.m_skyNode.experimentalAtmoScale);
                GUIfloat("AtmosphereGlobalScale*", ref atmosphereGlobalScale, ref Scatterer.Instance.planetsConfigsReader.scattererCelestialBodies [selectedPlanet].m_manager.m_skyNode.atmosphereGlobalScale);
                GUIfloat("mieG*", ref mieG, ref Scatterer.Instance.planetsConfigsReader.scattererCelestialBodies [selectedPlanet].m_manager.m_skyNode.m_mieG);
                GUILayout.Label("Sky");
                GUIfloat("Sky Exposure", ref exposure, ref _cur.skyExposure);
                GUIfloat("Sky Alpha", ref alphaGlobal, ref _cur.skyAlpha);
                GUIfloat("Sky Extinction Tint", ref skyExtinctionTint, ref _cur.skyExtinctionTint);
                GUILayout.Label("Scattering and Extinction");
                GUIfloat("Scattering Exposure (scaled+local)", ref postProcessExposure, ref _cur.scatteringExposure);
                GUIfloat("Extinction Tint (scaled+local)", ref extinctionTint, ref _cur.extinctionTint);
                GUIfloat("Extinction Thickness (scaled+local)", ref extinctionThickness, ref _cur.extinctionThickness);
                GUILayout.Label("Post Processing");
                GUIfloat("Post Processing Alpha", ref postProcessingalpha, ref _cur.postProcessAlpha);
                GUIfloat("Post Processing Depth", ref postProcessDepth, ref _cur.postProcessDepth);
                GUILayout.Label("Artifact Fixes");
                GUIfloat("ViewDirOffset", ref viewdirOffset, ref _cur.viewdirOffset);
                GUIfloat("Depth buffer Threshold", ref openglThreshold, ref _cur.openglThreshold);
            }
            if (Scatterer.Instance.mainSettings.integrateWithEVEClouds && Scatterer.Instance.planetsConfigsReader.scattererCelestialBodies [selectedPlanet].m_manager.usesCloudIntegration)
            {
                GUILayout.Label("EVE integration");
                GUIfloat("Cloud Color Multiplier*", ref cloudColorMultiplier, ref Scatterer.Instance.planetsConfigsReader.scattererCelestialBodies [selectedPlanet].m_manager.m_skyNode.cloudColorMultiplier);
                GUIfloat("Cloud Scattering Multiplier*", ref cloudScatteringMultiplier, ref Scatterer.Instance.planetsConfigsReader.scattererCelestialBodies [selectedPlanet].m_manager.m_skyNode.cloudScatteringMultiplier);
                GUIfloat("Cloud Sky irradiance Multiplier*", ref cloudSkyIrradianceMultiplier, ref Scatterer.Instance.planetsConfigsReader.scattererCelestialBodies [selectedPlanet].m_manager.m_skyNode.cloudSkyIrradianceMultiplier);
                GUIfloat("Volumetrics Color Multiplier*", ref volumetricsColorMultiplier, ref Scatterer.Instance.planetsConfigsReader.scattererCelestialBodies [selectedPlanet].m_manager.m_skyNode.volumetricsColorMultiplier);
                GUILayout.BeginHorizontal();
                GUILayout.Label("Preserve cloud colors*");
                GUILayout.TextField(Scatterer.Instance.planetsConfigsReader.scattererCelestialBodies [selectedPlanet].m_manager.m_skyNode.EVEIntegration_preserveCloudColors.ToString());
                if (GUILayout.Button("Toggle"))
                {
                    Scatterer.Instance.planetsConfigsReader.scattererCelestialBodies [selectedPlanet].m_manager.m_skyNode.togglePreserveCloudColors();
                }
                GUILayout.EndHorizontal();
                //								GUIfloat("Volumetrics Scattering Multiplier", ref volumetricsScatteringMultiplier, ref Scatterer.Instance.planetsListReader.scattererCelestialBodies [selectedPlanet].m_manager.m_skyNode.volumetricsScatteringMultiplier);
                //								GUIfloat("Volumetrics Sky irradiance Multiplier", ref volumetricsSkyIrradianceMultiplier, ref Scatterer.Instance.planetsListReader.scattererCelestialBodies [selectedPlanet].m_manager.m_skyNode.volumetricsSkyIrradianceMultiplier);
            }
            GUILayout.Label("ScaledSpace model");
            GUILayout.BeginHorizontal();
            GUILayout.Label("RimBlend*");
            rimBlend = Convert.ToSingle(GUILayout.TextField(rimBlend.ToString()));
            GUILayout.Label("RimPower*");
            rimpower = Convert.ToSingle(GUILayout.TextField(rimpower.ToString()));
            if (GUILayout.Button("Set"))
            {
                Scatterer.Instance.planetsConfigsReader.scattererCelestialBodies [selectedPlanet].m_manager.m_skyNode.rimBlend = rimBlend;
                Scatterer.Instance.planetsConfigsReader.scattererCelestialBodies [selectedPlanet].m_manager.m_skyNode.rimpower = rimpower;
                Scatterer.Instance.planetsConfigsReader.scattererCelestialBodies [selectedPlanet].m_manager.m_skyNode.tweakStockAtmosphere();
            }
            GUILayout.EndHorizontal();
            GUILayout.BeginHorizontal();
            GUILayout.Label("Spec*: R");
            specR = (float)(Convert.ToDouble(GUILayout.TextField(specR.ToString())));
            GUILayout.Label("G");
            specG = (float)(Convert.ToDouble(GUILayout.TextField(specG.ToString())));
            GUILayout.Label("B");
            specB = (float)(Convert.ToDouble(GUILayout.TextField(specB.ToString())));
            GUILayout.Label("shine*");
            shininess = (float)(Convert.ToDouble(GUILayout.TextField(shininess.ToString())));
            if (GUILayout.Button("Set"))
            {
                Scatterer.Instance.planetsConfigsReader.scattererCelestialBodies [selectedPlanet].m_manager.m_skyNode.specR     = specR;
                Scatterer.Instance.planetsConfigsReader.scattererCelestialBodies [selectedPlanet].m_manager.m_skyNode.specG     = specG;
                Scatterer.Instance.planetsConfigsReader.scattererCelestialBodies [selectedPlanet].m_manager.m_skyNode.specB     = specB;
                Scatterer.Instance.planetsConfigsReader.scattererCelestialBodies [selectedPlanet].m_manager.m_skyNode.shininess = shininess;
                Scatterer.Instance.planetsConfigsReader.scattererCelestialBodies [selectedPlanet].m_manager.m_skyNode.tweakStockAtmosphere();
            }
            GUILayout.EndHorizontal();
            GUILayout.EndScrollView();
            GUILayout.BeginHorizontal();
            if (Scatterer.Instance.planetsConfigsReader.scattererCelestialBodies [selectedPlanet].m_manager.m_skyNode.currentConfigPoint == 0)
            {
                GUILayout.Label("Current state:Lowest configPoint, cfgPoint 0");
            }
            else
            if (Scatterer.Instance.planetsConfigsReader.scattererCelestialBodies [selectedPlanet].m_manager.m_skyNode.currentConfigPoint >= configPointsCnt)
            {
                GUILayout.Label(String.Format("Current state:Highest configPoint, cfgPoint{0}", Scatterer.Instance.planetsConfigsReader.scattererCelestialBodies [selectedPlanet].m_manager.m_skyNode.currentConfigPoint - 1));
            }
            else
            {
                GUILayout.Label(String.Format("Current state:{0}% cfgPoint{1} + {2}% cfgPoint{3} ", (int)(100 * (1 - Scatterer.Instance.planetsConfigsReader.scattererCelestialBodies [selectedPlanet].m_manager.m_skyNode.percentage)), Scatterer.Instance.planetsConfigsReader.scattererCelestialBodies [selectedPlanet].m_manager.m_skyNode.currentConfigPoint - 1, (int)(100 * Scatterer.Instance.planetsConfigsReader.scattererCelestialBodies [selectedPlanet].m_manager.m_skyNode.percentage), Scatterer.Instance.planetsConfigsReader.scattererCelestialBodies [selectedPlanet].m_manager.m_skyNode.currentConfigPoint));
            }
            GUILayout.EndHorizontal();
            GUILayout.BeginHorizontal();
            if (GUILayout.Button("Toggle PostProcessing"))
            {
                Scatterer.Instance.planetsConfigsReader.scattererCelestialBodies [selectedPlanet].m_manager.m_skyNode.togglePostProcessing();
            }
            GUILayout.EndHorizontal();
            //							GUILayout.BeginHorizontal ();
            //							if (GUILayout.Button ("toggle sky"))
            //							{
            //								Scatterer.Instance.planetsListReader.scattererCelestialBodies [selectedPlanet].m_manager.m_skyNode.skyEnabled = !Scatterer.Instance.planetsListReader.scattererCelestialBodies [selectedPlanet].m_manager.m_skyNode.skyEnabled;
            //								if (Scatterer.Instance.planetsListReader.scattererCelestialBodies [selectedPlanet].m_manager.m_skyNode.skyEnabled)
            //									Scatterer.Instance.planetsListReader.scattererCelestialBodies [selectedPlanet].m_manager.m_skyNode.tweakStockAtmosphere();
            //								else
            //									Scatterer.Instance.planetsListReader.scattererCelestialBodies [selectedPlanet].m_manager.m_skyNode.RestoreStockAtmosphere();
            //							}
            //							GUILayout.EndHorizontal ();
            GUILayout.BeginHorizontal();
            if (GUILayout.Button("Save atmo"))
            {
                Scatterer.Instance.planetsConfigsReader.scattererCelestialBodies [selectedPlanet].m_manager.m_skyNode.saveToConfigNode();
            }
            if (GUILayout.Button("Load atmo"))
            {
                Scatterer.Instance.planetsConfigsReader.scattererCelestialBodies [selectedPlanet].m_manager.m_skyNode.loadFromConfigNode();
                getSettingsFromSkynode();
                loadConfigPoint(selectedConfigPoint);
            }
            GUILayout.EndHorizontal();
            GUILayout.BeginHorizontal();
            GUILayout.Label(".cfg file used:");
            GUILayout.TextField(Scatterer.Instance.planetsConfigsReader.scattererCelestialBodies [selectedPlanet].m_manager.m_skyNode.configUrl.parent.url);
            GUILayout.EndHorizontal();
            if (Scatterer.Instance.mainSettings.integrateWithEVEClouds)
            {
                GUILayout.BeginHorizontal();
                if (GUILayout.Button("Map EVE clouds"))
                {
                    Scatterer.Instance.eveReflectionHandler.MapEVEClouds();
                    foreach (ScattererCelestialBody _cel in Scatterer.Instance.planetsConfigsReader.scattererCelestialBodies)
                    {
                        if (_cel.active)
                        {
                            _cel.m_manager.m_skyNode.initiateEVEClouds();
                            if (!_cel.m_manager.m_skyNode.inScaledSpace)
                            {
                                _cel.m_manager.m_skyNode.mapEVEVolumetrics();
                            }
                        }
                    }
                }
                GUILayout.EndHorizontal();
            }
        }
Exemple #9
0
        public void getSettingsFromSkynode()
        {
            SkyNode     skyNode  = Core.Instance.scattererCelestialBodies [selectedPlanet].m_manager.m_skyNode;
            ConfigPoint selected = skyNode.configPoints [selectedConfigPoint];

            postProcessingalpha = selected.postProcessAlpha;
            //			postProcessDepth = 10000 * selected.postProcessDepth;
            postProcessDepth = selected.postProcessDepth;

            _Post_Extinction_Tint    = selected._Post_Extinction_Tint;
            postExtinctionMultiplier = selected.postExtinctionMultiplier;

            postProcessExposure = selected.postProcessExposure;
            exposure            = selected.skyExposure;
            skyRimExposure      = selected.skyRimExposure;
            alphaGlobal         = selected.skyAlpha;

            openglThreshold = selected.openglThreshold;

            _GlobalOceanAlpha = selected._GlobalOceanAlpha;
            //			edgeThreshold = selected.edgeThreshold * 100;


            mapAlphaGlobal     = skyNode.mapAlphaGlobal;
            mapExposure        = skyNode.mapExposure;
            mapSkyRimeExposure = skyNode.mapSkyRimExposure;
            configPointsCnt    = skyNode.configPoints.Count;

            specR     = skyNode.specR;
            specG     = skyNode.specG;
            specB     = skyNode.specB;
            shininess = skyNode.shininess;


            rimBlend = skyNode.rimBlend;
            rimpower = skyNode.rimpower;

            //MapViewScale = skyNode.MapViewScale;
            extinctionMultiplier        = selected.skyExtinctionMultiplier;
            extinctionTint              = selected.skyExtinctionTint;
            skyExtinctionRimFade        = selected.skyextinctionRimFade;
            skyExtinctionGroundFade     = selected.skyextinctionGroundFade;
            _extinctionScatterIntensity = selected._extinctionScatterIntensity;

            mapExtinctionMultiplier        = skyNode.mapExtinctionMultiplier;
            mapExtinctionTint              = skyNode.mapExtinctionTint;
            mapSkyExtinctionRimFade        = skyNode.mapSkyExtinctionRimFade;
            _mapExtinctionScatterIntensity = skyNode._mapExtinctionScatterIntensity;

            showInterpolatedValues = skyNode.displayInterpolatedVariables;

            mieG = skyNode.m_mieG;

            experimentalAtmoScale = skyNode.experimentalAtmoScale;
            viewdirOffset         = selected.viewdirOffset;

            cloudColorMultiplier         = skyNode.cloudColorMultiplier;
            cloudScatteringMultiplier    = skyNode.cloudScatteringMultiplier;
            cloudSkyIrradianceMultiplier = skyNode.cloudSkyIrradianceMultiplier;

            volumetricsColorMultiplier = skyNode.volumetricsColorMultiplier;
            //			volumetricsScatteringMultiplier = skyNode.volumetricsScatteringMultiplier;
            //			volumetricsSkyIrradianceMultiplier = skyNode.volumetricsSkyIrradianceMultiplier;
        }
Exemple #10
0
        //		UI BUTTONS
        //		This isn't the most elegant section due to how many elements are here
        //		I don't care enough to do it in a cleaner way
        //		After all it's a basic UI for tweaking settings and it does it's job
        public void DrawScattererWindow(int windowId)
        {
            GUItoggle("Hide", ref Core.Instance.visible);

            if (Core.Instance.mainMenu)              //MAIN MENU options
            {
                GUILayout.Label(String.Format("Scatterer: features selector"));
                Core.Instance.useOceanShaders = GUILayout.Toggle(Core.Instance.useOceanShaders, "Ocean shaders (may require game restart on change)");

                GUILayout.BeginHorizontal();
                GUILayout.Label("Ocean: fourierGridSize (64:fast,128:normal,256:HQ)");
                Core.Instance.m_fourierGridSize = (Int32)(Convert.ToInt32(GUILayout.TextField(Core.Instance.m_fourierGridSize.ToString())));
                GUILayout.EndHorizontal();

                Core.Instance.oceanSkyReflections = GUILayout.Toggle(Core.Instance.oceanSkyReflections, "Ocean: accurate sky reflection");
                Core.Instance.oceanRefraction     = GUILayout.Toggle(Core.Instance.oceanRefraction, "Ocean: refraction effects");
                Core.Instance.oceanPixelLights    = GUILayout.Toggle(Core.Instance.oceanPixelLights, "Ocean: lights compatibility (huge performance hit when lights on)");

                //Core.Instance.usePlanetShine = GUILayout.Toggle(Core.Instance.usePlanetShine, "PlanetShine");
                Core.Instance.integrateWithEVEClouds = GUILayout.Toggle(Core.Instance.integrateWithEVEClouds, "Integrate effects with EVE clouds (may require restart)");

                Core.Instance.drawAtmoOnTopOfClouds = GUILayout.Toggle(Core.Instance.drawAtmoOnTopOfClouds, "Draw atmo on top of EVE clouds(old cloud shading, use with EVE 7-4)");

                Core.Instance.fullLensFlareReplacement = GUILayout.Toggle(Core.Instance.fullLensFlareReplacement, "Lens flare shader");
                Core.Instance.useEclipses    = GUILayout.Toggle(Core.Instance.useEclipses, "Eclipses (WIP, sky/orbit only for now)");
                Core.Instance.useRingShadows = GUILayout.Toggle(Core.Instance.useRingShadows, "Kopernicus ring shadows");
                Core.Instance.useGodrays     = GUILayout.Toggle(Core.Instance.useGodrays, "Godrays (early WIP)");

                Core.Instance.terrainShadows = GUILayout.Toggle(Core.Instance.terrainShadows, "Terrain shadows");
                GUILayout.BeginHorizontal();

                GUILayout.Label("Shadow bias");
                Core.Instance.shadowBias = float.Parse(GUILayout.TextField(Core.Instance.shadowBias.ToString("0.000")));

                GUILayout.Label("Shadow normal bias");
                Core.Instance.shadowNormalBias = float.Parse(GUILayout.TextField(Core.Instance.shadowNormalBias.ToString("0.000")));

                GUILayout.EndHorizontal();


                GUILayout.BeginHorizontal();
                GUILayout.Label("Menu scroll section height");
                Core.Instance.scrollSectionHeight = (Int32)(Convert.ToInt32(GUILayout.TextField(Core.Instance.scrollSectionHeight.ToString())));
                GUILayout.EndHorizontal();

                Core.Instance.disableAmbientLight = GUILayout.Toggle(Core.Instance.disableAmbientLight, "Disable scaled space ambient light");

                Core.Instance.showMenuOnStart = GUILayout.Toggle(Core.Instance.showMenuOnStart, "Show this menu on start-up");

                GUILayout.BeginHorizontal();
                GUILayout.Label(".cfg file used:");
                GUILayout.TextField(Core.Instance.baseConfigs [0].parent.url);
                GUILayout.EndHorizontal();
            }

            else if (Core.Instance.isActive)
            {
                GUILayout.BeginHorizontal();
                GUILayout.Label("Planet:");

                if (GUILayout.Button("<"))
                {
                    if (selectedPlanet > 0)
                    {
                        selectedPlanet     -= 1;
                        selectedConfigPoint = 0;
                        if (Core.Instance.scattererCelestialBodies [selectedPlanet].active)
                        {
                            loadConfigPoint(selectedConfigPoint);
                            getSettingsFromSkynode();
                            if (Core.Instance.scattererCelestialBodies [selectedPlanet].hasOcean)
                            {
                                getSettingsFromOceanNode();
                            }
                        }
                    }
                }

                GUILayout.TextField((Core.Instance.scattererCelestialBodies [selectedPlanet].celestialBodyName).ToString());

                if (GUILayout.Button(">"))
                {
                    if (selectedPlanet < Core.Instance.scattererCelestialBodies.Count - 1)
                    {
                        selectedPlanet     += 1;
                        selectedConfigPoint = 0;
                        if (Core.Instance.scattererCelestialBodies [selectedPlanet].active)
                        {
                            loadConfigPoint(selectedConfigPoint);
                            getSettingsFromSkynode();
                            if (Core.Instance.scattererCelestialBodies [selectedPlanet].hasOcean)
                            {
                                getSettingsFromOceanNode();
                            }
                        }
                    }
                }
                GUILayout.EndHorizontal();


                GUILayout.BeginHorizontal();
                GUILayout.Label("Planet loaded:" + Core.Instance.scattererCelestialBodies [selectedPlanet].active.ToString() +
                                "                                Has ocean:" + Core.Instance.scattererCelestialBodies [selectedPlanet].hasOcean.ToString());
                GUILayout.EndHorizontal();

                GUILayout.BeginHorizontal();
                GUILayout.Label("Load distance:" + Core.Instance.scattererCelestialBodies [selectedPlanet].loadDistance.ToString() +
                                "                             Unload distance:" + Core.Instance.scattererCelestialBodies [selectedPlanet].unloadDistance.ToString());
                GUILayout.EndHorizontal();

                if (Core.Instance.scattererCelestialBodies [selectedPlanet].active)
                {
                    configPointsCnt = Core.Instance.scattererCelestialBodies [selectedPlanet].m_manager.m_skyNode.configPoints.Count;

                    GUILayout.BeginHorizontal();
                    if (GUILayout.Button("Atmosphere settings"))
                    {
                        displayOceanSettings = false;
                        //displaySunflareSettings = false;
                    }

                    if (GUILayout.Button("Ocean settings"))
                    {
                        if (Core.Instance.scattererCelestialBodies [selectedPlanet].hasOcean)
                        {
                            displayOceanSettings = true;
                        }

                        //displaySunflareSettings = false;
                    }

                    //						if (GUILayout.Button ("Sunflare(s) Settings")) {
                    //							displayOceanSettings = false;
                    //							displaySunflareSettings = true;
                    //						}
                    GUILayout.EndHorizontal();

                    ConfigPoint _cur = Core.Instance.scattererCelestialBodies [selectedPlanet].m_manager.m_skyNode.configPoints [selectedConfigPoint];

                    if (!displayOceanSettings)
                    {
                        if (!MapView.MapIsEnabled)
                        {
                            GUILayout.BeginHorizontal();
                            GUILayout.Label("New point altitude:");
                            newCfgPtAlt = Convert.ToSingle(GUILayout.TextField(newCfgPtAlt.ToString()));
                            if (GUILayout.Button("Add"))
                            {
                                Core.Instance.scattererCelestialBodies [selectedPlanet].m_manager.m_skyNode.configPoints.Insert(selectedConfigPoint + 1,
                                                                                                                                new ConfigPoint(newCfgPtAlt, alphaGlobal / 100, exposure / 100, skyRimExposure / 100,
                                                                                                                                                postProcessingalpha / 100, postProcessDepth / 10000, postProcessExposure / 100,
                                                                                                                                                extinctionMultiplier / 100, extinctionTint / 100, skyExtinctionRimFade / 100, skyExtinctionGroundFade / 100,
                                                                                                                                                openglThreshold, edgeThreshold / 100, viewdirOffset, _Post_Extinction_Tint / 100,
                                                                                                                                                postExtinctionMultiplier / 100, _GlobalOceanAlpha / 100, _extinctionScatterIntensity / 100));
                                selectedConfigPoint += 1;
                                configPointsCnt      = Core.Instance.scattererCelestialBodies [selectedPlanet].m_manager.m_skyNode.configPoints.Count;
                                loadConfigPoint(selectedConfigPoint);
                            }
                            GUILayout.EndHorizontal();



                            GUILayout.BeginHorizontal();
                            GUILayout.Label("Config point:");

                            if (GUILayout.Button("<"))
                            {
                                if (selectedConfigPoint > 0)
                                {
                                    selectedConfigPoint -= 1;
                                    loadConfigPoint(selectedConfigPoint);
                                }
                            }

                            GUILayout.TextField((selectedConfigPoint).ToString());

                            if (GUILayout.Button(">"))
                            {
                                if (selectedConfigPoint < configPointsCnt - 1)
                                {
                                    selectedConfigPoint += 1;
                                    loadConfigPoint(selectedConfigPoint);
                                }
                            }

                            //GUILayout.Label (String.Format("Total:{0}", configPointsCnt));
                            if (GUILayout.Button("Delete"))
                            {
                                if (configPointsCnt <= 1)
                                {
                                    print("Can't delete config point, one or no points remaining");
                                }
                                else
                                {
                                    Core.Instance.scattererCelestialBodies [selectedPlanet].m_manager.m_skyNode.configPoints.RemoveAt(selectedConfigPoint);
                                    if (selectedConfigPoint >= configPointsCnt - 1)
                                    {
                                        selectedConfigPoint = configPointsCnt - 2;
                                    }
                                    configPointsCnt = Core.Instance.scattererCelestialBodies [selectedPlanet].m_manager.m_skyNode.configPoints.Count;
                                    loadConfigPoint(selectedConfigPoint);
                                }
                            }

                            GUILayout.EndHorizontal();


                            GUIfloat("Point altitude", ref pointAltitude, ref _cur.altitude);


                            _scroll = GUILayout.BeginScrollView(_scroll, false, true, GUILayout.Width(400), GUILayout.Height(Core.Instance.scrollSectionHeight));


                            GUIfloat("experimentalAtmoScale", ref experimentalAtmoScale, ref Core.Instance.scattererCelestialBodies [selectedPlanet].m_manager.m_skyNode.experimentalAtmoScale);
                            GUIfloat("AtmosphereGlobalScale", ref atmosphereGlobalScale, ref Core.Instance.scattererCelestialBodies [selectedPlanet].m_manager.m_skyNode.atmosphereGlobalScale);
                            GUIfloat("experimentalViewDirOffset", ref viewdirOffset, ref _cur.viewdirOffset);


                            //								GUILayout.Label("Sky/Orbit shader");

                            GUIfloat("Sky/orbit Alpha", ref alphaGlobal, ref _cur.skyAlpha);
                            GUIfloat("Sky/orbit Exposure", ref exposure, ref _cur.skyExposure);
                            //								tonemapper.setExposure(exposure);
                            GUIfloat("Sky/orbit Rim Exposure", ref skyRimExposure, ref _cur.skyRimExposure);

                            GUIfloat("extinctionMultiplier", ref extinctionMultiplier, ref _cur.skyExtinctionMultiplier);
                            GUIfloat("extinctionTint", ref extinctionTint, ref _cur.skyExtinctionTint);
                            GUIfloat("extinctionRimFade", ref skyExtinctionRimFade, ref _cur.skyextinctionRimFade);
                            GUIfloat("extinctionGroundFade", ref skyExtinctionGroundFade, ref _cur.skyextinctionGroundFade);
                            GUIfloat("extinctionScatterIntensity", ref _extinctionScatterIntensity, ref _cur._extinctionScatterIntensity);

                            //								GUILayout.Label("Post-processing shader");

                            GUIfloat("Post Processing Alpha", ref postProcessingalpha, ref _cur.postProcessAlpha);
                            GUIfloat("Post Processing Depth", ref postProcessDepth, ref _cur.postProcessDepth);
                            GUIfloat("Post Processing Extinction Multiplier", ref postExtinctionMultiplier, ref _cur.postExtinctionMultiplier);
                            GUIfloat("Post Processing Extinction Tint", ref _Post_Extinction_Tint, ref _cur._Post_Extinction_Tint);
                            GUIfloat("Post Processing Exposure", ref postProcessExposure, ref _cur.postProcessExposure);

                            //								if (!d3d9)
                            {
                                GUIfloat("Depth buffer Threshold", ref openglThreshold, ref _cur.openglThreshold);
                            }

                            GUIfloat("_GlobalOceanAlpha", ref _GlobalOceanAlpha, ref _cur._GlobalOceanAlpha);
                        }

                        else
                        {
                            _scroll = GUILayout.BeginScrollView(_scroll, false, true, GUILayout.Width(400), GUILayout.Height(Core.Instance.scrollSectionHeight));

                            GUIfloat("experimentalAtmoScale", ref experimentalAtmoScale, ref Core.Instance.scattererCelestialBodies [selectedPlanet].m_manager.m_skyNode.experimentalAtmoScale);
                            GUIfloat("AtmosphereGlobalScale", ref atmosphereGlobalScale, ref Core.Instance.scattererCelestialBodies [selectedPlanet].m_manager.m_skyNode.atmosphereGlobalScale);

                            GUIfloat("Map view alpha", ref mapAlphaGlobal, ref Core.Instance.scattererCelestialBodies [selectedPlanet].m_manager.m_skyNode.mapAlphaGlobal);
                            GUIfloat("Map view exposure", ref mapExposure, ref Core.Instance.scattererCelestialBodies [selectedPlanet].m_manager.m_skyNode.mapExposure);
                            GUIfloat("Map view rim exposure", ref mapSkyRimeExposure, ref Core.Instance.scattererCelestialBodies [selectedPlanet].m_manager.m_skyNode.mapSkyRimExposure);

                            GUIfloat("MapExtinctionMultiplier", ref mapExtinctionMultiplier, ref Core.Instance.scattererCelestialBodies [selectedPlanet].m_manager.m_skyNode.mapExtinctionMultiplier);
                            GUIfloat("MapExtinctionTint", ref mapExtinctionTint, ref Core.Instance.scattererCelestialBodies [selectedPlanet].m_manager.m_skyNode.mapExtinctionTint);
                            GUIfloat("MapExtinctionRimFade", ref mapSkyExtinctionRimFade, ref Core.Instance.scattererCelestialBodies [selectedPlanet].m_manager.m_skyNode.mapSkyExtinctionRimFade);
                            GUIfloat("MapExtinctionScatterIntensity", ref _mapExtinctionScatterIntensity, ref Core.Instance.scattererCelestialBodies [selectedPlanet].m_manager.m_skyNode._mapExtinctionScatterIntensity);
                        }


                        GUIfloat("mieG", ref mieG, ref Core.Instance.scattererCelestialBodies [selectedPlanet].m_manager.m_skyNode.m_mieG);

                        if (Core.Instance.integrateWithEVEClouds && Core.Instance.scattererCelestialBodies [selectedPlanet].m_manager.usesCloudIntegration)
                        {
                            GUIfloat("Cloud Color Multiplier", ref cloudColorMultiplier, ref Core.Instance.scattererCelestialBodies [selectedPlanet].m_manager.m_skyNode.cloudColorMultiplier);
                            GUIfloat("Cloud Scattering Multiplier", ref cloudScatteringMultiplier, ref Core.Instance.scattererCelestialBodies [selectedPlanet].m_manager.m_skyNode.cloudScatteringMultiplier);
                            GUIfloat("Cloud Sky irradiance Multiplier", ref cloudSkyIrradianceMultiplier, ref Core.Instance.scattererCelestialBodies [selectedPlanet].m_manager.m_skyNode.cloudSkyIrradianceMultiplier);

                            GUIfloat("Volumetrics Color Multiplier", ref volumetricsColorMultiplier, ref Core.Instance.scattererCelestialBodies [selectedPlanet].m_manager.m_skyNode.volumetricsColorMultiplier);

                            GUILayout.BeginHorizontal();
                            GUILayout.Label("Preserve cloud colors ");
                            GUILayout.TextField(Core.Instance.scattererCelestialBodies [selectedPlanet].m_manager.m_skyNode.EVEIntegration_preserveCloudColors.ToString());
                            if (GUILayout.Button("Toggle"))
                            {
                                Core.Instance.scattererCelestialBodies [selectedPlanet].m_manager.m_skyNode.togglePreserveCloudColors();
                            }
                            GUILayout.EndHorizontal();

                            //								GUIfloat("Volumetrics Scattering Multiplier", ref volumetricsScatteringMultiplier, ref Core.Instance.scattererCelestialBodies [selectedPlanet].m_manager.m_skyNode.volumetricsScatteringMultiplier);
                            //								GUIfloat("Volumetrics Sky irradiance Multiplier", ref volumetricsSkyIrradianceMultiplier, ref Core.Instance.scattererCelestialBodies [selectedPlanet].m_manager.m_skyNode.volumetricsSkyIrradianceMultiplier);
                        }

                        GUILayout.BeginHorizontal();
                        GUILayout.Label("RimBlend");
                        rimBlend = Convert.ToSingle(GUILayout.TextField(rimBlend.ToString()));

                        GUILayout.Label("RimPower");
                        rimpower = Convert.ToSingle(GUILayout.TextField(rimpower.ToString()));

                        if (GUILayout.Button("Set"))
                        {
                            Core.Instance.scattererCelestialBodies [selectedPlanet].m_manager.m_skyNode.rimBlend = rimBlend;
                            Core.Instance.scattererCelestialBodies [selectedPlanet].m_manager.m_skyNode.rimpower = rimpower;
                            Core.Instance.scattererCelestialBodies [selectedPlanet].m_manager.m_skyNode.tweakStockAtmosphere();
                        }
                        GUILayout.EndHorizontal();

                        GUILayout.BeginHorizontal();
                        GUILayout.Label("Spec: R");
                        specR = (float)(Convert.ToDouble(GUILayout.TextField(specR.ToString())));

                        GUILayout.Label("G");
                        specG = (float)(Convert.ToDouble(GUILayout.TextField(specG.ToString())));

                        GUILayout.Label("B");
                        specB = (float)(Convert.ToDouble(GUILayout.TextField(specB.ToString())));

                        GUILayout.Label("shine");
                        shininess = (float)(Convert.ToDouble(GUILayout.TextField(shininess.ToString())));

                        if (GUILayout.Button("Set"))
                        {
                            Core.Instance.scattererCelestialBodies [selectedPlanet].m_manager.m_skyNode.specR     = specR;
                            Core.Instance.scattererCelestialBodies [selectedPlanet].m_manager.m_skyNode.specG     = specG;
                            Core.Instance.scattererCelestialBodies [selectedPlanet].m_manager.m_skyNode.specB     = specB;
                            Core.Instance.scattererCelestialBodies [selectedPlanet].m_manager.m_skyNode.shininess = shininess;
                            Core.Instance.scattererCelestialBodies [selectedPlanet].m_manager.m_skyNode.tweakStockAtmosphere();
                        }
                        GUILayout.EndHorizontal();

                        if (!MapView.MapIsEnabled)
                        {
                            GUILayout.BeginHorizontal();
                            if (Core.Instance.scattererCelestialBodies [selectedPlanet].m_manager.m_skyNode.currentConfigPoint == 0)
                            {
                                GUILayout.Label("Current state:Ground, cfgPoint 0");
                            }
                            else if (Core.Instance.scattererCelestialBodies [selectedPlanet].m_manager.m_skyNode.currentConfigPoint >= configPointsCnt)
                            {
                                GUILayout.Label(String.Format("Current state:Orbit, cfgPoint{0}", Core.Instance.scattererCelestialBodies [selectedPlanet].m_manager.m_skyNode.currentConfigPoint - 1));
                            }
                            else
                            {
                                GUILayout.Label(String.Format("Current state:{0}% cfgPoint{1} + {2}% cfgPoint{3} ", (int)(100 * (1 - Core.Instance.scattererCelestialBodies [selectedPlanet].m_manager.m_skyNode.percentage)), Core.Instance.scattererCelestialBodies [selectedPlanet].m_manager.m_skyNode.currentConfigPoint - 1, (int)(100 * Core.Instance.scattererCelestialBodies [selectedPlanet].m_manager.m_skyNode.percentage), Core.Instance.scattererCelestialBodies [selectedPlanet].m_manager.m_skyNode.currentConfigPoint));
                            }
                            GUILayout.EndHorizontal();
                        }
                        GUILayout.EndScrollView();

                        GUILayout.BeginHorizontal();
                        GUItoggle("Toggle depth buffer", ref Core.Instance.depthbufferEnabled);

                        if (GUILayout.Button("Toggle PostProcessing"))
                        {
                            Core.Instance.scattererCelestialBodies [selectedPlanet].m_manager.m_skyNode.togglePostProcessing();
                        }
                        GUILayout.EndHorizontal();

                        //							GUILayout.BeginHorizontal ();
                        //							if (GUILayout.Button ("toggle sky"))
                        //							{
                        //								Core.Instance.scattererCelestialBodies [selectedPlanet].m_manager.m_skyNode.skyEnabled = !Core.Instance.scattererCelestialBodies [selectedPlanet].m_manager.m_skyNode.skyEnabled;
                        //								if (Core.Instance.scattererCelestialBodies [selectedPlanet].m_manager.m_skyNode.skyEnabled)
                        //									Core.Instance.scattererCelestialBodies [selectedPlanet].m_manager.m_skyNode.tweakStockAtmosphere();
                        //								else
                        //									Core.Instance.scattererCelestialBodies [selectedPlanet].m_manager.m_skyNode.RestoreStockAtmosphere();
                        //							}
                        //							GUILayout.EndHorizontal ();

                        GUILayout.BeginHorizontal();
                        if (GUILayout.Button("Save atmo"))
                        {
                            Core.Instance.scattererCelestialBodies [selectedPlanet].m_manager.m_skyNode.displayInterpolatedVariables = showInterpolatedValues;
                            Core.Instance.scattererCelestialBodies [selectedPlanet].m_manager.m_skyNode.saveToConfigNode();
                        }

                        if (GUILayout.Button("Load atmo"))
                        {
                            Core.Instance.scattererCelestialBodies [selectedPlanet].m_manager.m_skyNode.loadFromConfigNode();
                            getSettingsFromSkynode();
                            loadConfigPoint(selectedConfigPoint);
                        }

                        GUILayout.EndHorizontal();

                        GUILayout.BeginHorizontal();
                        GUILayout.Label(".cfg file used:");
                        GUILayout.TextField(Core.Instance.scattererCelestialBodies [selectedPlanet].m_manager.m_skyNode.configUrl.parent.url);
                        GUILayout.EndHorizontal();

                        GUILayout.BeginHorizontal();
                        if (GUILayout.Button("Map EVE clouds"))
                        {
                            Core.Instance.mapEVEClouds();
                            foreach (ScattererCelestialBody _cel in Core.Instance.scattererCelestialBodies)
                            {
                                if (_cel.active)
                                {
                                    if (!_cel.m_manager.m_skyNode.inScaledSpace)
                                    {
                                        _cel.m_manager.m_skyNode.mapEVEvolumetrics();
                                    }
                                }
                            }
                        }
                        GUILayout.EndHorizontal();
                    }
                    else
                    {
                        OceanWhiteCaps oceanNode = Core.Instance.scattererCelestialBodies [selectedPlanet].m_manager.GetOceanNode();
                        //GUItoggle("Toggle ocean", ref stockOcean);
                        _scroll2 = GUILayout.BeginScrollView(_scroll2, false, true, GUILayout.Width(400), GUILayout.Height(Core.Instance.scrollSectionHeight + 100));
                        {
                            GUIfloat("ocean Level", ref oceanLevel, ref oceanNode.m_oceanLevel);
                            GUIfloat("Alpha/WhiteCap Radius", ref oceanAlphaRadius, ref oceanNode.alphaRadius);
                            GUIfloat("ocean Alpha", ref oceanAlpha, ref oceanNode.oceanAlpha);

                            GUIfloat("Transparency Depth", ref transparencyDepth, ref oceanNode.transparencyDepth);
                            GUIfloat("Darkness Depth", ref darknessDepth, ref oceanNode.darknessDepth);
                            GUIfloat("Refraction Index", ref refractionIndex, ref oceanNode.refractionIndex);
                            GUIfloat("Shore foam", ref shoreFoam, ref oceanNode.shoreFoam);

                            GUIfloat("whiteCapStr (foam)", ref m_whiteCapStr, ref oceanNode.m_whiteCapStr);
                            GUIfloat("far whiteCapStr", ref farWhiteCapStr, ref oceanNode.m_farWhiteCapStr);
                            GUIfloat("choppyness multiplier", ref choppynessMultiplier, ref oceanNode.choppynessMultiplier);

                            GUIvector3("Ocean Upwelling Color", ref oceanUpwellingColorR, ref oceanUpwellingColorG, ref oceanUpwellingColorB, ref oceanNode.m_oceanUpwellingColor);

                            GUIvector3("Ocean Underwater Color", ref oceanUnderwaterColorR, ref oceanUnderwaterColorG, ref oceanUnderwaterColorB, ref oceanNode.m_UnderwaterColor);

                            GUILayout.BeginHorizontal();
                            GUILayout.Label("To apply the next setting press \"rebuild ocean\" and wait");
                            GUILayout.EndHorizontal();

                            GUILayout.BeginHorizontal();
                            GUILayout.Label("Keep in mind this saves your current settings");
                            GUILayout.EndHorizontal();

                            //						        GUIfloat("ocean Scale", ref oceanScale, ref oceanNode.oceanScale);
                            //								GUIfloat ("WAVE_CM (default 0.23)", ref WAVE_CM, ref oceanNode.WAVE_CM);
                            //								GUIfloat ("WAVE_KM (default 370)", ref WAVE_KM, ref oceanNode.WAVE_KM);
                            GUIfloat("AMP (default 1)", ref AMP, ref oceanNode.AMP);

                            GUIfloat("wind Speed", ref m_windSpeed, ref oceanNode.m_windSpeed);
                            GUIfloat("omega: inverse wave age", ref m_omega, ref oceanNode.m_omega);

                            GUIfloat("foamMipMapBias", ref m_foamMipMapBias, ref oceanNode.m_foamMipMapBias);


                            GUIint("m_ansio", ref m_ansio, ref oceanNode.m_ansio, 1);
                            GUIint("m_foamAnsio", ref m_foamAnsio, ref oceanNode.m_foamAnsio, 1);

                            GUILayout.BeginHorizontal();
                            GUILayout.Label("Performance settings");
                            GUILayout.EndHorizontal();

                            GUIint("m_varianceSize (sun reflection, power of 2)", ref m_varianceSize, ref oceanNode.m_varianceSize, 1);

                            GUILayout.BeginHorizontal();
                            GUILayout.Label("m_varianceSize increases rebuild time exponentially");
                            GUILayout.EndHorizontal();

                            GUIint("Ocean mesh resolution (lower is better)", ref m_resolution, ref oceanNode.m_resolution, 1);

                            GUILayout.BeginHorizontal();
                            GUILayout.Label("current fourierGridSize: " + Core.Instance.m_fourierGridSize.ToString());
                            GUILayout.EndHorizontal();

                            //GUIint("Ocean renderqueue", ref oceanRenderQueue, ref oceanRenderQueue,1);
                        }
                        GUILayout.EndScrollView();

                        GUILayout.BeginHorizontal();
                        if (GUILayout.Button("Rebuild ocean"))
                        {
                            Core.Instance.scattererCelestialBodies [selectedPlanet].m_manager.GetOceanNode().saveToConfigNode();
                            Core.Instance.scattererCelestialBodies [selectedPlanet].m_manager.reBuildOcean();
                        }
                        GUILayout.EndHorizontal();

                        GUILayout.BeginHorizontal();


                        if (GUILayout.Button("Save ocean"))
                        {
                            Core.Instance.scattererCelestialBodies [selectedPlanet].m_manager.GetOceanNode().saveToConfigNode();
                        }

                        if (GUILayout.Button("Load ocean"))
                        {
                            Core.Instance.scattererCelestialBodies [selectedPlanet].m_manager.GetOceanNode().loadFromConfigNode();
                            getSettingsFromOceanNode();
                        }
                        GUILayout.EndHorizontal();

                        GUILayout.BeginHorizontal();
                        GUILayout.Label(".cfg file used:");
                        GUILayout.TextField(Core.Instance.scattererCelestialBodies [selectedPlanet].m_manager.GetOceanNode().configUrl.parent.url);
                        GUILayout.EndHorizontal();
                    }

                    GUILayout.BeginHorizontal();
                    if (GUILayout.Button("Toggle WireFrame"))
                    {
                        if (wireFrame)
                        {
                            if (Core.Instance.nearCamera.gameObject.GetComponent(typeof(Wireframe)))
                            {
                                Component.Destroy(Core.Instance.nearCamera.gameObject.GetComponent(typeof(Wireframe)));
                            }

                            if (Core.Instance.farCamera.gameObject.GetComponent(typeof(Wireframe)))
                            {
                                Component.Destroy(Core.Instance.farCamera.gameObject.GetComponent(typeof(Wireframe)));
                            }

                            if (Core.Instance.scaledSpaceCamera.gameObject.GetComponent(typeof(Wireframe)))
                            {
                                Component.Destroy(Core.Instance.scaledSpaceCamera.gameObject.GetComponent(typeof(Wireframe)));
                            }

                            wireFrame = false;
                        }

                        else
                        {
                            Core.Instance.nearCamera.gameObject.AddComponent(typeof(Wireframe));
                            Core.Instance.farCamera.gameObject.AddComponent(typeof(Wireframe));
                            Core.Instance.scaledSpaceCamera.gameObject.AddComponent(typeof(Wireframe));

                            wireFrame = true;
                        }
                    }
                    GUILayout.EndHorizontal();

                    GUILayout.BeginHorizontal();
                    if (GUILayout.Button("Reload shader bundles"))
                    {
                        ShaderReplacer.Instance.LoadAssetBundle();
                    }
                    GUILayout.EndHorizontal();
                }
            }
            else
            {
                GUILayout.Label(String.Format("Inactive in tracking station and VAB/SPH"));
                GUILayout.EndHorizontal();
            }


            GUI.DragWindow();
        }