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; } }
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."); } }
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; } } }
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."); } }
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; }
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(); } }