void Start() { followRot = GetComponent <FollowRot>(); }
private void LevelWasLoaded(GameScenes data) { if (!isInit || data != GameScenes.FLIGHT) { return; } if (!focus) { focus = new GameObject("SideViewFocus"); focus.transform.parent = FlightGlobals.ActiveVessel.mapObject.transform; // or one of PlanetariumCamera.fetch.targets focus.transform.localPosition = Vector3.zero; focus.transform.localRotation = Quaternion.identity; } if (!cameraObject) { cameraObject = new GameObject("SideViewCameraScaledSpace"); cameraObject.transform.parent = focus.transform; cameraObject.transform.localPosition = Vector3.back * 40; cameraObject.transform.localRotation = Quaternion.identity; camera = cameraObject.AddComponent <Camera>(); camera.CopyFrom(PlanetariumCamera.Camera); camera.targetDisplay = 1; // We want to render last so I can play with setting and don't worry about breaking the stock renders. *Cross fingers* camera.depth = 6; camera.cullingMask = camera.cullingMask & ~(1 << 31); // Do not render the stock orbits camera.cullingMask = camera.cullingMask & ~(1 << LayerMask.NameToLayer("Atmosphere")); // Do not render the Atmosphere cameraObject.AddComponent <GUILayer>(); //cameraObject.AddComponent<FlareLayer>(); // Funny effects when enabled... sunCoronas = Planetarium.fetch.Sun.scaledBody.GetComponentsInChildren <SunCoronas>(); } // Did not work as expected but draw the planet/orbit interception better //if (!orbitCameraObject) //{ // // Orbit camera // orbitCameraObject = new GameObject("SideViewOrbitCamera"); // orbitCameraObject.transform.parent = cameraObject.transform; // // orbitCameraObject.transform.localPosition = Vector3.zero; // orbitCameraObject.transform.localRotation = Quaternion.identity; // // orbitCamera = orbitCameraObject.AddComponent<Camera>(); // orbitCamera.CopyFrom(PlanetariumCamera.Camera); // orbitCamera.targetDisplay = 1; // orbitCamera.depth = 7; // orbitCamera.cullingMask = 0; // Do not render anything //} if (!galaxyCameraObject) { // Skybox Camera Transform galaxyRoot = GalaxyCubeControl.Instance.transform.parent; Camera stockGalaxyCamera = galaxyRoot.FindChild("GalaxyCamera").GetComponent <Camera>(); galaxyCameraObject = new GameObject("SideViewGalaxyCamera"); galaxyCameraObject.transform.parent = galaxyRoot; galaxycamera = galaxyCameraObject.AddComponent <Camera>(); galaxycamera.CopyFrom(stockGalaxyCamera); galaxycamera.targetDisplay = 1; galaxycamera.depth = 4; galaxyCameraObject.transform.localPosition = Vector3.zero; galaxyCameraObject.transform.localRotation = Quaternion.identity; followRot = galaxyCameraObject.AddComponent <FollowRot>(); followRot.tgt = cameraObject.transform; followRot.followX = true; followRot.followY = true; followRot.followZ = true; galaxyCameraObject.AddComponent <FollowRotEnabler>(); cubeRenderers = GalaxyCubeControl.Instance.GetComponentsInChildren <Renderer>(); } targetIdx = -1; // Fix the launchpad watertower spotlight so that it does not light scaledSpace foreach (UpgradeableFacility facility in GameObject.FindObjectsOfType <UpgradeableFacility>()) { if (facility.id == "SpaceCenter/LaunchPad") { Light[] lights = facility.transform.GetComponentsInChildren <Light>(); foreach (Light light in lights) { if (light.name == "Spotlight") { print("Fixing the launchpad watertower spotlight"); light.cullingMask = light.cullingMask & ~LayerMask.NameToLayer("Scaled Scenery"); } } } } }