Example #1
0
 public void settings(Material inSkyMat, Vector3 inPos, Mesh inMesh, Manager inManager, SkyNode inSkyNode, Camera incam,int inlayer)
 {
     position = inPos;
     skyMat = inSkyMat;
     m_mesh = inMesh;
     m_skynode = inSkyNode;
     m_manager = inManager;
     cam = incam;
     layer = inlayer;
 }
Example #2
0
 public void settings(Mesh inmesh,Material inSkyMat, Material inSkyExtinct, Manager inManager, SkyNode inSkyNode, GameObject inSkyObject,GameObject inSkyExtinctObject, bool indebug6, Transform inparentTransform, Transform inCelestialTransform)
 {
     skyMat = inSkyMat;
     skyExtinct = inSkyExtinct;
     m_manager = inManager;
     m_skynode = inSkyNode;
     skyObject = inSkyObject;
     skyExtinctObject = inSkyExtinctObject;
     debug6 = indebug6;
     parentTransform = inparentTransform;
     celestialTransform = inCelestialTransform;
     m_mesh = inmesh;
 }
Example #3
0
		void FindManger()
		{
			Transform t = transform;
	
			while(t != null) {
				Manager manager = t.GetComponent<Manager>();

				if(manager != null) {
					m_manager = manager;
					break;
				}

				t = t.parent;
			}

			if(m_manager == null) {
				Debug.Log("Proland::Node - Could not find manager. This gameObject must be a child of the manager");
				Debug.Break();
			}

		}
Example #4
0
        internal override void Awake()
        {
            WindowCaption = "Scatterer mod: alt+f10/f11 toggle";
            WindowRect = new Rect(0, 0, 300, 50);
            Visible = true;
            isActive = false;

            if (HighLogic.LoadedScene == GameScenes.TRACKSTATION)
            {
                ReactivateAtmosphere (parentPlanet, rimBlend, rimpower);
            }

            //			savePlanetsList ();

            if (HighLogic.LoadedSceneIsFlight || HighLogic.LoadedScene==GameScenes.SPACECENTER )

            {
                isActive = true;

                for (int j=0; j<10; j++)
                {
                    additionalScales[j]=1000f;
                }

                for (int j=0;j<10;j++){
                    debugSettings[j]=false;
                }

                //read parent planet from config
                cfg.load ();
                parentPlanet =cfg.GetValue<string>("Planet");
                atmosphereGlobalScale=float.Parse(cfg.GetValue<string>("atmosphereGlobalScale"))*1000f;

                //find sun and parent planet
                celestialBodies = (CelestialBody[])CelestialBody.FindObjectsOfType(typeof(CelestialBody));
                PlanetId =0;
                SunId =0;

                //Transform transform; // this next bit finds kerbin and the sun, and sets all the plaents to renderqueue 2002
                                     //so they don't get clipped over by the amospheres (renderqueue 2001)

                for (int k=0; k< celestialBodies.Length ; k++)
                {
            //						transform = GetScaledTransform (celestialBodies[k].name);
            //						{
            //							mr = (MeshRenderer)transform.GetComponent (typeof(MeshRenderer));
            //							if (mr != null)
            //							{
            //								mr.material.renderQueue=2002;
            //							}
            //						}

                    if (celestialBodies[k].GetName() == parentPlanet)
                        PlanetId=k;

                    if (celestialBodies[k].GetName() == "Sun")
                        SunId=k;
            //					mr.enabled=false;
                }

                m_manager=new Manager();
                m_manager.setParentCelestialBody(celestialBodies[PlanetId]);
                m_manager.setSunCelestialBody(celestialBodies[SunId]);
                m_manager.SetCore(this);
                m_manager.Awake();
                getSettingsFromSkynode();

                m_radius = (float)celestialBodies [PlanetId].Radius;

            //				MeshRenderer sunMR=
            //					(MeshRenderer)celestialBodies[SunId].GetComponent (typeof(MeshRenderer));
            //				sunMR.enabled=false;

            }
        }
Example #5
0
        internal override void Update()
        {
            //toggle whether GUI is visible or not
            if ((Input.GetKey(KeyCode.LeftAlt) || Input.GetKey(KeyCode.RightAlt))
                && (Input.GetKeyDown(KeyCode.F11)||(Input.GetKeyDown(KeyCode.F10))))
                Visible = !Visible;

            if (isActive)
            {
                updateCnt++;
                if (updateCnt>5){

                if (!found) {

                    //debug settings
            //									for (int j=0;j<10;j++){
            //										debugSettings[j]=false;
            //									}

                    //read parent planet from config
                    cfg.load ();
            //					parentPlanet =cfg.GetValue<string>("Planet");
                    loadParentPlanet();
                    atmosphereGlobalScale=float.Parse(cfg.GetValue<string>("atmosphereGlobalScale"))*1000f;

                    //find sun and parent planet
                    celestialBodies = (CelestialBody[])CelestialBody.FindObjectsOfType(typeof(CelestialBody));
                    PlanetId =0;
                    SunId =0;

                    for (int k=0; k< celestialBodies.Length ; k++)
                    {
            //							print (celestialBodies[k].GetName());
            //							print ("ParentPlanetCelestialBodyName");
            //							print (ParentPlanetCelestialBodyName);
            //						if (celestialBodies[k].GetName() == parentPlanet)
                        if (celestialBodies[k].GetName() == ParentPlanetCelestialBodyName)
                            PlanetId=k;

                        if (celestialBodies[k].GetName() == "Sun")
                            SunId=k;
                    }

                    if (PlanetId==0)
                        print("parentPlanet not found");
                    else
                        found=true;

                     ParentPlanetTransform = ScaledSpace.Instance.transform.FindChild(ParentPlanetTransformName);
                }

                    if (!initiated && found) {

                    //create and configure manager
                    m_manager=new Manager();
                    m_manager.setParentCelestialBody(celestialBodies[PlanetId]);
                        m_manager.setParentPlanetTransform(ParentPlanetTransform);
                    m_manager.setSunCelestialBody(celestialBodies[SunId]);
                    m_manager.SetCore(this);
                    m_manager.Awake();

            //						print ("parentPlanet transform position");
            //						print (ParentPlanetTransform.position);
            //
            //						print ("parentcelestialbody transform position");
            //						print (celestialBodies[PlanetId].transform.position);

                    getSettingsFromSkynode();
                    loadConfigPoint(selectedConfigPoint);

                    m_radius = (float)celestialBodies [PlanetId].Radius;
            //					backupAtmosphereMaterial(parentPlanet);
            //					tweakStockAtmosphere(parentPlanet,rimBlend,rimpower);

                    backupAtmosphereMaterial(ParentPlanetTransformName);
                    tweakStockAtmosphere(ParentPlanetTransformName,rimBlend,rimpower);

            //
            //				if (!initiated){
                    cams = Camera.allCameras;
                    count = Camera.allCameras.Length;
                    initiated=true;
                }

                if(initiated)
                    {
                        m_manager.Update ();
                    }

            }
            }
        }
Example #6
0
 public void setManager(Manager manager)
 {
     m_manager = manager;
 }
Example #7
0
        public void OnPreRender()
        {
            sunViewPortPos = inCore.scaledSpaceCamera.WorldToViewportPoint
                                 (ScaledSpace.LocalToScaledSpace(inCore.sunCelestialBody.transform.position));

            float dist = (float)(inCore.scaledSpaceCamera.transform.position - ScaledSpace.LocalToScaledSpace(inCore.sunCelestialBody.transform.position))
                         .magnitude;

            sunGlareScale = dist / 2266660f;


            //if dist> 0.75 sunglarefadedistance -->1
            //if dist < 0.25*sunglarefadedistance -->0
            //else values smoothstepped in between
            sunGlareFade = Mathf.SmoothStep(0, 1, (dist / sunGlareFadeDistance) - 0.25f);



            hitStatus = false;
//			if (!MapView.MapIsEnabled && !(HighLogic.LoadedScene == GameScenes.TRACKSTATION))
            if (!MapView.MapIsEnabled)
            {
                hitStatus = Physics.Raycast(inCore.farCamera.transform.position,
                                            (inCore.sunCelestialBody.transform.position - inCore.farCamera.transform.position).normalized,
                                            out hit, Mathf.Infinity, (int)((1 << 15) + (1 << 0)));

                if (!hitStatus)
                {
                    hitStatus = Physics.Raycast(inCore.scaledSpaceCamera.transform.position,
                                                (ScaledSpace.LocalToScaledSpace(inCore.sunCelestialBody.transform.position) - inCore.scaledSpaceCamera.transform.position)
                                                .normalized, out hit, Mathf.Infinity, (int)((1 << 10)));
                }
            }
            else
            {
                hitStatus = Physics.Raycast(inCore.scaledSpaceCamera.transform.position, (ScaledSpace.LocalToScaledSpace(inCore.sunCelestialBody.transform.position)
                                                                                          - inCore.transform.position).normalized, out hit, Mathf.Infinity, (int)((1 << 10)));
            }

            eclipse = hitStatus;


            sunglareMaterial.SetVector("sunViewPortPos", sunViewPortPos);
            sunglareMaterial.SetFloat("aspectRatio", inCore.scaledSpaceCamera.aspect);
            sunglareMaterial.SetFloat("sunGlareScale", sunGlareScale);
            sunglareMaterial.SetFloat("sunGlareFade", sunGlareFade);


            //check for active PQS
//			if (!transmittanceSet && inCore.pqsEnabled && !(HighLogic.LoadedScene == GameScenes.TRACKSTATION))
            if (!transmittanceSet && inCore.pqsEnabled)
            {
                if ((lastActivePQS != inCore.managerWactivePQS) || !(lastActivePQS))
                {
                    sunglareMaterial.SetFloat("Rg", inCore.managerWactivePQS.m_skyNode.Rg);
                    sunglareMaterial.SetFloat("Rt", inCore.managerWactivePQS.m_skyNode.Rt);
                    sunglareMaterial.SetTexture("_Sky_Transmittance", inCore.managerWactivePQS.m_skyNode.m_transmit);

                    lastActivePQS = inCore.managerWactivePQS;

                    Debug.Log("[Scatterer] Sunflare: loaded new transmittance table");
                }

                sunglareMaterial.SetFloat("useTransmittance", 1f);
                transmittanceSet = true;
            }
            if (transmittanceSet)
            {
                if (!inCore.pqsEnabled)
                {
                    sunglareMaterial.SetFloat("useTransmittance", 0f);
                    transmittanceSet = false;
                }
                else
                {
                    if (!MapView.MapIsEnabled)
                    {
                        sunglareMaterial.SetVector("_Globals_WorldCameraPos", inCore.farCamera.transform.position - lastActivePQS.parentCelestialBody.transform.position);
                    }
                    else
                    {
                        sunglareMaterial.SetVector("_Globals_WorldCameraPos", (Vector3)ScaledSpace.ScaledToLocalSpace(inCore.scaledSpaceCamera.transform.position) - lastActivePQS.parentCelestialBody.transform.position);
                    }

                    sunglareMaterial.SetVector("_Sun_WorldSunDir", lastActivePQS.getDirectionToSun().normalized);
                }
            }
        }