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; }
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; }
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(); } }
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; } }
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 (); } } } }
public void setManager(Manager manager) { m_manager = manager; }
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); } } }