Пример #1
0
 void FindTrueSky()
 {
     // And we need a trueSKY object in the scene.
     UnityEngine.Object[] trueSkies;
     trueSkies = FindObjectsOfType(typeof(trueSKY));
     foreach (UnityEngine.Object t in trueSkies)
     {
         trueSky = (trueSKY)t;
     }
 }
Пример #2
0
        public static void CreateWaterObject()
        {
            trueSKY trueSky = trueSKY.GetTrueSky();

            if (trueSky && trueSky.SimulVersion >= trueSky.MakeSimulVersion(4, 2))
            {
                GameObject g = new GameObject("Water Object");
                g.AddComponent <TrueSkyWaterObject>();
            }
            else
            {
                UnityEngine.Debug.LogWarning("No compatible Truesky version installed, cannot create water objects.");
            }
        }
Пример #3
0
 public static void RemoveTrueSky()
 {
     UnityEngine.Object[] objects = FindObjectsOfType(typeof(Light));
     foreach (UnityEngine.Object t in objects)
     {
         Light l = (Light)t;
         if (l.GetComponent <TrueSkyDirectionalLight>() != null)
         {
             DestroyImmediate(l.GetComponent <TrueSkyDirectionalLight>());
         }
     }
     objects = FindObjectsOfType(typeof(Camera));
     foreach (UnityEngine.Object t in objects)
     {
         Camera c = (Camera)t;
         if (c.GetComponent <TrueSkyCamera>() != null)
         {
             DestroyImmediate(c.GetComponent <TrueSkyCamera>());
         }
     }
     objects = FindObjectsOfType(typeof(TrueSkyCameraBase));
     foreach (UnityEngine.Object t in objects)
     {
         MonoBehaviour b = (MonoBehaviour)t;
         if (b.GetComponent <TrueSkyCameraBase>() != null)
         {
             DestroyImmediate(b.GetComponent <TrueSkyCameraBase>());
         }
     }
     objects = FindObjectsOfType(typeof(TrueSkyCubemapProbe));
     foreach (UnityEngine.Object t in objects)
     {
         MonoBehaviour b = (MonoBehaviour)t;
         if (b.GetComponent <TrueSkyCubemapProbe>() != null)
         {
             DestroyImmediate(b.GetComponent <TrueSkyCubemapProbe>());
         }
     }
     objects = FindObjectsOfType(typeof(trueSKY));
     foreach (UnityEngine.Object o in objects)
     {
         trueSKY ts = (trueSKY)o;
         if (ts != null && ts.gameObject != null)
         {
             DestroyImmediate(ts.gameObject);
             break;
         }
     }
 }
Пример #4
0
        public static void CreateWaterProbe()
        {
            trueSKY trueSky = trueSKY.GetTrueSky();

            if (trueSky && trueSky.SimulVersion >= trueSky.MakeSimulVersion(4, 2))
            {
                GameObject g = new GameObject("Water Probe");
                g.AddComponent <TrueSkyWaterProbe>();
                g.transform.parent        = Selection.GetTransforms(SelectionMode.TopLevel | SelectionMode.OnlyUserModifiable)[0];
                g.transform.localPosition = new Vector3(0.0f, 0.0f, 0.0f);
            }
            else
            {
                UnityEngine.Debug.LogWarning("No compatible Truesky version installed, cannot create water probes.");
            }
        }
Пример #5
0
        void Finish()
        {
            TrueSkyCamera trueSkyCamera;

            if (sequence == null)
            {
                // Build asset path and name (it has to be relative)
                string relativePath = UnityEngine.SceneManagement.SceneManager.GetActiveScene().path;

                string sequenceFilename = relativePath.Replace(".unity", "_sq.asset");
                sequence = CustomAssetUtility.CreateAsset <Sequence>(sequenceFilename);
            }
            if (trueSky == null)
            {
                GameObject g = new GameObject("trueSky");
                trueSky = g.AddComponent <trueSKY>();
            }
            if (createAMainCamera)                  // if user has requested a main camera to be created (as none already)
            {
                GameObject MainCam = new GameObject("Main Camera");
                MainCam.gameObject.AddComponent <Camera>();
                MainCam.tag = "MainCamera";
                mainCamera  = MainCam.GetComponent <Camera>();
            }
            if (multipleCameras)                                    // if user has requested the script o be assigned to cameras
            {
                Camera[] cams = new Camera[Camera.allCamerasCount]; // find all cameras
                if (Camera.allCamerasCount >= 1)
                {
                    Array.Copy(Camera.allCameras, cams, Camera.allCamerasCount);
                }

                for (int i = 0; i < cams.Length; i++)
                {
                    trueSkyCamera = cams[i].gameObject.GetComponent <TrueSkyCamera>();
                    if (trueSkyCamera == null)
                    {
                        cams[i].gameObject.AddComponent <TrueSkyCamera>();
                    }
                }
            }
            if (mainCamera == null)                                 // if mainCamera still = null, inform user script wasn't assigned + how to assign it
            {
                if (Camera.allCamerasCount < 1)
                {
                    UnityEngine.Debug.LogWarning("Can't find any cameras for trueSky Camera script. Please add a camera manually and repeat the wizard to assign the script to the camera of your choice/all cameras. Alternatively, check the option to automatically create a main camera with the script assigned.");
                }
                else if (!multipleCameras)
                {
                    UnityEngine.Debug.LogWarning("Can't find a main camera for trueSKy Camera script, but other cameras found. Repeat the wizard and assign the script to the camera of your choice/all cameras");
                }
            }
            else
            {
#if USING_HDRP
                simul.TrueSkyHDRPCustomPass trueSKYPreRefraction           = new simul.TrueSkyHDRPCustomPass();
                simul.TrueSkyHDRPCustomPass trueSKYPrePostProcess          = new simul.TrueSkyHDRPCustomPass();
                CustomPassVolume            trueSKYPassBeforePreRefraction = trueSky.gameObject.GetComponent <CustomPassVolume>();
                if (trueSKYPassBeforePreRefraction == null)
                {
                    trueSKYPreRefraction.name      = "trueSKY - Before Pre Refraction(Main Render)";
                    trueSKYPassBeforePreRefraction = trueSky.gameObject.AddComponent <CustomPassVolume>();
                    trueSKYPassBeforePreRefraction.injectionPoint = CustomPassInjectionPoint.BeforePreRefraction;
                    trueSKYPassBeforePreRefraction.customPasses.Add(trueSKYPreRefraction);

                    CustomPassVolume trueSKYPassBeforePostProcess;
                    trueSKYPrePostProcess.name   = "trueSKY - Before Post Process(Translucent Effects)";
                    trueSKYPassBeforePostProcess = trueSky.gameObject.AddComponent <CustomPassVolume>();
                    trueSKYPassBeforePostProcess.injectionPoint = CustomPassInjectionPoint.BeforePostProcess;
                    trueSKYPassBeforePostProcess.customPasses.Add(trueSKYPrePostProcess);
                }
                if (UnityEngine.Rendering.GraphicsSettings.allConfiguredRenderPipelines.Length > 0)
                {
                    trueSky.HDRP_RenderPipelineAsset = UnityEngine.Rendering.GraphicsSettings.allConfiguredRenderPipelines[0];
                }
#else
                trueSkyCamera = mainCamera.gameObject.GetComponent <TrueSkyCamera>();
                if (trueSkyCamera == null)
                {
                    mainCamera.gameObject.AddComponent <TrueSkyCamera>();
                }
#endif
            }
            if (createCubemapProbe)
            {                       // must be after trueSKY obj assigned, in case assigning probe to this instead of mainCam
                UnityEngine.Object[] objects = FindObjectsOfType(typeof(TrueSkyCubemapProbe));

                if (trueSky.gameObject.GetComponent <TrueSkyCubemapProbe>() != null)
                {
                    DestroyImmediate(trueSky.gameObject.GetComponent <TrueSkyCubemapProbe>());
                }

                trueSky.gameObject.AddComponent <TrueSkyCubemapProbe>();

                Material trueSKYSkyboxMat = Resources.Load("trueSKYSkybox", typeof(Material)) as Material;
                RenderSettings.skybox = trueSKYSkyboxMat;
            }
            // If there is not light on the scene, add one:
            if (lightGameObject == null)
            {
                lightGameObject = new GameObject("TrueSkyDirectionalLight");
                Light dirLight = lightGameObject.AddComponent <Light>();
                dirLight.type  = LightType.Directional;
                lightComponent = lightGameObject.AddComponent <TrueSkyDirectionalLight>();
            }
            // If there is a light, but without the component, add it:
            if (lightComponent == null)
            {
                lightComponent = lightGameObject.AddComponent <TrueSkyDirectionalLight>();
            }
            RenderSettings.sun = lightGameObject.GetComponent <Light>();

#if USING_HDRP
            lightComponent.Units = TrueSkyDirectionalLight.LightUnits.Photometric;
#else
            lightComponent.Units = TrueSkyDirectionalLight.LightUnits.Radiometric;
#endif
            if (removeFog)
            {
                RenderSettings.fog = false;
            }
            if (removeSkybox && mainCamera != null)
            {
                if (mainCamera.clearFlags != CameraClearFlags.SolidColor)
                {
                    mainCamera.clearFlags      = CameraClearFlags.SolidColor;
                    mainCamera.backgroundColor = Color.black;
                }
            }
            // Set the Near and Far clipping planes on the main camera.
            mainCamera.nearClipPlane = 0.1f;
            mainCamera.farClipPlane  = 300000.0f;

            // Now the sequence must be assigned to the trueSKY object.
            trueSky.sequence    = sequence;
            trueSky.TrueSKYTime = 12.0F;
        }
Пример #6
0
        public override void OnInspectorGUI()
        {
            UnityEngine.Object[] trueSkies;
            trueSKY trueSky = null;

            trueSkies = FindObjectsOfType(typeof(trueSKY));
            foreach (UnityEngine.Object t in trueSkies)
            {
                trueSky = (trueSKY)t;
            }

            EditorGUI.BeginChangeCheck();

            if (trueSky && trueSky.SimulVersion >= trueSky.MakeSimulVersion(4, 2))
            {
                TrueSkyWaterObject waterObject = (TrueSkyWaterObject)target;

                Undo.RecordObject(waterObject, "Change Value");

                EditorGUILayout.Space();

                EditorGUILayout.BeginVertical();
                {
                    waterObject.Render         = EditorGUILayout.Toggle("Render", waterObject.Render);
                    waterObject.BoundlessOcean = EditorGUILayout.Toggle("Boundless Ocean", waterObject.BoundlessOcean);
                    waterObject.BeaufortScale  = EditorGUILayout.Slider("Beaufort Scale", waterObject.BeaufortScale, 0.0f, 12.0f);
                    waterObject.WindDirection  = EditorGUILayout.Slider("Wind Direction", waterObject.WindDirection, 0.0f, 1.0f);
                    waterObject.WindDependency = EditorGUILayout.Slider("Wind Dependency", waterObject.WindDependency, 0.0f, 1.0f);
                    waterObject.Scattering     = EditorGUILayout.ColorField("Scattering", waterObject.Scattering);
                    waterObject.Absorption     = EditorGUILayout.ColorField("Absorption", waterObject.Absorption);
                    if (trueSky.SimulVersion >= trueSky.MakeSimulVersion(4, 3))
                    {
                        waterObject.CustomMesh = (Mesh)EditorGUILayout.ObjectField("Custom Water Surface Mesh", waterObject.CustomMesh, typeof(Mesh), false);
                    }
                }
                EditorGUILayout.EndVertical();
                EditorGUILayout.Space();
                EditorGUILayout.BeginVertical();
                {
                    advanced = EditorGUILayout.Foldout(advanced, "Advanced Water Options");

                    waterObject.ProfileBufferResolution = (int)EditorGUILayout.Slider("Profile Buffer Resolution", waterObject.ProfileBufferResolution, 512, 4096);

                    if (advanced)
                    {
                        waterObject.AdvancedWaterOptions = EditorGUILayout.Toggle("Enable Advanced Water Options", waterObject.AdvancedWaterOptions);
                        if (waterObject.AdvancedWaterOptions)
                        {
                            waterObject.WindSpeed     = EditorGUILayout.Slider("Wind Speed", waterObject.WindSpeed, 0.0f, 40.0f);
                            waterObject.WaveAmplitude = EditorGUILayout.Slider("Wave Amplitude", waterObject.WaveAmplitude, 0.0f, 2.0f);
                            waterObject.MaxWaveLength = EditorGUILayout.Slider("Max WaveLength", waterObject.MaxWaveLength, 1.01f, 100.0f);
                            waterObject.MinWaveLength = EditorGUILayout.Slider("Min WaveLength", waterObject.MinWaveLength, 0.01f, 1.0f);
                        }
                        if (waterObject.BoundlessOcean)
                        {
                            EditorGUILayout.Space();
                            waterObject.EnableFoam = EditorGUILayout.Toggle("Enable Foam", waterObject.EnableFoam);
                            if (waterObject.EnableFoam && waterObject.AdvancedWaterOptions)
                            {
                                waterObject.FoamStrength = EditorGUILayout.Slider("Foam Strength", waterObject.FoamStrength, 0.0f, 1.0f);
                                //waterObject.FoamChurn = EditorGUILayout.Slider("Foam FoamChurn", waterObject.FoamChurn, 0.0f, 20.0f);
                            }
                        }
                    }
                    EditorGUILayout.Space();
                }
                EditorGUILayout.EndVertical();
            }
        }