Exemple #1
0
 void Start()
 {
     followRot = GetComponent <FollowRot>();
 }
Exemple #2
0
        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");
                        }
                    }
                }
            }
        }