private void updateProbe(ReflectionProbeData data) { data.skyboxMateral.SetTexture("_Tex", data.renderedCube); data.reflectionSphere.transform.rotation = Quaternion.identity;//align to world space data.render.material = data.skyboxMateral; data.probe.RenderProbe(); }
private void init() { if (cameraObject == null) { cameraObject = new GameObject("TRReflectionCamera"); reflectionCamera = cameraObject.AddComponent <Camera>(); eveCameraFix = cameraObject.AddComponent <CameraAlphaFix>(); reflectionCamera.enabled = false; } if (skyboxShader == null) { skyboxShader = KSPShaderTools.TexturesUnlimitedLoader.getShader("SSTU/Skybox/Cubemap"); if (skyboxShader == null) { MonoBehaviour.print("ERROR: SSTUReflectionManager - Could not find skybox shader."); } } probeData = createProbe(); if (HighLogic.LoadedSceneIsEditor) { probeData.reflectionSphere.transform.position = new Vector3(0, 10, 0); } else if (HighLogic.LoadedSceneIsFlight) { //probe position updated during Update() } }
public void vesselCreated(Vessel vessel) { ReflectionProbeData data = createProbe(); data.reflectionSphere.transform.position = vessel.transform.position; VesselReflectionData d = new VesselReflectionData(vessel, data); vesselReflectionProbeDict.Add(vessel, d); MonoBehaviour.print("SSTUReflectionManager vesselCreated() : " + vessel + " :: " + d); }
private ReflectionProbeData createProbe() { GameObject refSphere = GameObject.CreatePrimitive(PrimitiveType.Sphere); GameObject.DestroyImmediate(refSphere.GetComponent <Collider>()); refSphere.transform.localScale = new Vector3(10, 10, 10); refSphere.layer = skyboxLayer; refSphere.name = "SSTUReflectionProbe"; MeshRenderer rend = refSphere.GetComponent <MeshRenderer>(); Material mat = new Material(skyboxShader); rend.material = mat;//still has to be updated later ReflectionProbe probe = createReflectionProbe(refSphere); RenderTexture tex = createTexture(envMapSize); ReflectionProbeData data = new ReflectionProbeData(refSphere, rend, mat, probe, tex); data.updateTime = mapUpdateSpacing;//force update on the first frame it is 'loaded' return(data); }
private void init() { MonoBehaviour.print("SSTUReflectionManager init()"); if (cameraObject == null) { cameraObject = new GameObject("TRReflectionCamera"); reflectionCamera = cameraObject.AddComponent <Camera>(); eveCameraFix = cameraObject.AddComponent <CameraAlphaFix>(); reflectionCamera.enabled = false; MonoBehaviour.print("SSTUReflectionManager created camera: " + reflectionCamera); } if (skyboxShader == null) { skyboxShader = KSPShaderTools.KSPShaderLoader.getShader("SSTU/Skybox/Cubemap"); if (skyboxShader == null) { MonoBehaviour.print("ERROR: SSTUReflectionManager - Could not find skybox shader."); } } if (HighLogic.LoadedSceneIsEditor) { ReflectionProbeData data = createProbe(); data.reflectionSphere.transform.position = new Vector3(0, 10, 0); editorReflectionData = new EditorReflectionData(data); MonoBehaviour.print("SSTUReflectionManager created editor reflection data: " + data + " :: " + editorReflectionData); } else if (HighLogic.LoadedSceneIsFlight) { //vessels are added thorugh an event as they are loaded } //TODO -- replace with custom baked skybox... //use in areas where other reflection probes don't make sense (space?) //RenderSettings.customReflection = customCubemap; //TODO -- pre-bake cubemap to use as the custom skybox in the reflection probe camera; this can be higher res and updated far less often (every couple of seconds?) }
public EditorReflectionData(ReflectionProbeData data) { this.probeData = data; }
public VesselReflectionData(Vessel v, ReflectionProbeData data) { this.vessel = v; this.probeData = data; }