void Update() { if (!configured && targetCamera != null && sourceClouds != null) { //ADD CLOUDS cloudsScript = targetCamera.gameObject.GetComponent <FullVolumeCloudsSkyMaster>(); if (cloudsScript != null) { cloudsScript.Sun = sun; cloudsScript.initVariablesScatter(); //cloudsScript.SkyManager = SkyManager; //SkyManager.volumeClouds = cloudsScript; } else { cloudsScript = targetCamera.gameObject.AddComponent <FullVolumeCloudsSkyMaster>(); cloudsScript.Sun = sun; cloudsScript.initVariablesA(); cloudsScript.initVariablesScatter(); //cloudsScript.SkyManager = SkyManager; //SkyManager.volumeClouds = cloudsScript; } PassInitVariablesScatter(); PassInitVariablesA(); configured = true; } }
//public float growSpeed = 1; // Use this for initialization void Start() { //init volcano //volumeClouds FullVolumeCloudsSkyMaster[] cloudScripts = transform.GetComponents <FullVolumeCloudsSkyMaster>(); for (int i = 0; i < cloudScripts.Length; i++) { if (cloudScripts[i].enabled) { volumeClouds = cloudScripts[i]; } } growWidthMin = volumeClouds._InteractTextureAtr.w; growHeightMin = volumeClouds._Altitude1; }
// Update is called once per frame void Update() { #if UNITY_EDITOR int stage = GameObjectTypeLoggingSM.postStageInformation(this.gameObject); if (stage == 4) { Debug.Log("Grass is in prefab edit mode"); return; } #endif //configure and close if (configure && !configured && SkyManager != null) { #if UNITY_EDITOR LayerMaskCreateSM.CreateLayer("Background"); LayerMaskCreateSM.CreateLayer("Conductor"); #endif if (Camera.main == null) { //add main camera GameObject cameraMain = new GameObject(); cameraMain.tag = "MainCamera"; cameraMain.AddComponent <Camera>(); } if (Camera.main != null) { //v4.8.4 Camera.main.farClipPlane = 30000; Camera.main.transform.position = Camera.main.transform.position + new Vector3(0, 10, 0); SkyManager.Current_Time = 10.3f; //ADD CLOUDS FullVolumeCloudsSkyMaster cloudsScript = Camera.main.gameObject.GetComponent <FullVolumeCloudsSkyMaster>(); if (cloudsScript != null) { cloudsScript.Sun = SkyManager.SunObj.transform; cloudsScript.SkyManager = SkyManager; cloudsScript.initVariablesScatter(); SkyManager.volumeClouds = cloudsScript; } else { cloudsScript = Camera.main.gameObject.AddComponent <FullVolumeCloudsSkyMaster>(); cloudsScript.Sun = SkyManager.SunObj.transform; cloudsScript.SkyManager = SkyManager; cloudsScript.initVariablesA(); cloudsScript.initVariablesScatter(); SkyManager.volumeClouds = cloudsScript; } //Use Temporal AA to lower cloud raycast steps if (Camera.main.gameObject.GetComponent <TemporalReprojection>() == null) { Camera.main.gameObject.AddComponent <TemporalReprojection>(); } //ADD REFLECTIONS if water active FullVolumeCloudsSkyMaster CloudsScript = SkyManager.volumeClouds; int layerToCheck = LayerMask.NameToLayer("Background"); if (CloudsScript != null) { if (SkyManager.water != null) { //v4.8.5 if (CloudsScript.reflectClouds == null) //v4.8.5 { //WATER enable if (enableWater) { SkyManager.water.transform.parent.gameObject.SetActive(true); SkyManager.water.GetComponent <PlanarReflectionSM>().enabled = true; /////////enable reflect //if (GUILayout.Button(new GUIContent("Add Underwater blur"), GUILayout.Width(150))) //{ if (Camera.main != null && Camera.main.gameObject.GetComponent <UnderWaterImageEffect>() == null) { Camera.main.gameObject.AddComponent <UnderWaterImageEffect>(); } else { Debug.Log("Add a main camera first"); } //LEFT-RIGHT VR CAMERAS //if (SkyManager.Mesh_Terrain_controller != null) //{ // if (TerrainManager.LeftCam != null && TerrainManager.LeftCam.GetComponent<UnderWaterImageEffect>() == null) // { // TerrainManager.LeftCam.AddComponent<UnderWaterImageEffect>(); // } // if (TerrainManager.RightCam != null && TerrainManager.RightCam.GetComponent<UnderWaterImageEffect>() == null) // { // TerrainManager.RightCam.AddComponent<UnderWaterImageEffect>(); // } //} //} } //check if volume script already on reflect camera if (SkyManager.water.GetComponent <PlanarReflectionSM>().m_ReflectionCameraOut != null && SkyManager.water.GetComponent <PlanarReflectionSM>().m_ReflectionCameraOut.GetComponent <FullVolumeCloudsSkyMaster>() != null) { //clouds exist already, handle this here FullVolumeCloudsSkyMaster Rclouds = SkyManager.water.GetComponent <PlanarReflectionSM>().m_ReflectionCameraOut.GetComponent <FullVolumeCloudsSkyMaster>(); CloudsScript.updateReflectionCamera = true; CloudsScript.reflectClouds = Rclouds; Debug.Log("Cloud script found on reflection camera, adding auto update based on main clouds system"); CloudsScript.reflectClouds.startDistance = 10000000000; //v4.8.5 CloudsScript.reflectClouds.Sun = CloudsScript.Sun; //v4.8.5 Rclouds.backgroundCam = CloudsScript.backgroundCam; //v5.0.5 } else { if (SkyManager.water.GetComponent <PlanarReflectionSM>().m_ReflectionCameraOut != null) //v4.8.5 { CloudsScript.updateReflectionCamera = true; CloudsScript.updateReflections(); //script.CloudsScript.updateReflectionCamera CloudsScript.reflectClouds._HorizonYAdjust = -500; CloudsScript.reflectClouds._FarDist = CloudsScript._FarDist / 2; //v4.8 CloudsScript.reflectClouds.isForReflections = true; //remove back layer from refections //int layerToCheck = LayerMask.NameToLayer("Background"); //backgroundCam.cullingMask = 1 << layerToCheck; SkyManager.water.GetComponent <PlanarReflectionSM>().m_ReflectionCameraOut.cullingMask &= ~(1 << layerToCheck); SkyManager.water.GetComponent <PlanarReflectionSM>().reflectionMask &= ~(1 << layerToCheck); //Debug.Log("Created clouds"); CloudsScript.reflectClouds.startDistance = 10000000000; //v4.8.5 CloudsScript.reflectClouds.Sun = CloudsScript.Sun; //v4.8.5 CloudsScript.reflectClouds.backgroundCam = CloudsScript.backgroundCam; //v5.0.5 } else { Debug.Log("No reflection camera in scene, please enable the water and Planer reflection script components."); } } } else { Debug.Log("Reflection cloud script already setup on reflect camera"); //v4.8 CloudsScript.updateReflectionCamera = true; CloudsScript.updateReflections(); CloudsScript.reflectClouds.isForReflections = true; //remove back layer from refections //backgroundCam.cullingMask = 1 << layerToCheck; SkyManager.water.GetComponent <PlanarReflectionSM>().m_ReflectionCameraOut.cullingMask &= ~(1 << layerToCheck); SkyManager.water.GetComponent <PlanarReflectionSM>().reflectionMask &= ~(1 << layerToCheck); CloudsScript.reflectClouds.startDistance = 10000000000; //v4.8.5 CloudsScript.reflectClouds.Sun = CloudsScript.Sun; //v4.8.5 CloudsScript.reflectClouds.backgroundCam = CloudsScript.backgroundCam; //v5.0.5 } } else { Debug.Log("No Water in scene, please add water component first in Water section"); } //ADD SHADOWS //FullVolumeCloudsSkyMaster CloudsScript = script.SkyManager.volumeClouds; if (CloudsScript != null && CloudsScript.shadowDome == null) { CloudsScript.setupShadows = true; CloudsScript.createShadowDome(); CloudsScript.shadowsUpdate(); } else { Debug.Log("Shadows already setup"); } //SET BACKLAYER //FullVolumeCloudsSkyMaster CloudsScript = script.SkyManager.volumeClouds; //v4.8.5 //var layerToCheck = LayerMask.NameToLayer("Background"); if (layerToCheck > -1) { if (CloudsScript != null && CloudsScript.backgroundCam == null) { CloudsScript.setupDepth = true; CloudsScript.createDepthSetup(); CloudsScript.setupDepth = true; CloudsScript.blendBackground = true; CloudsScript.reflectClouds.backgroundCam = CloudsScript.backgroundCam;//v5.0.5 } else { Debug.Log("Depth camera already setup"); } } else { Debug.Log("Please add the Background layer to proceed with the setup"); } //LIGHTNING //FullVolumeCloudsSkyMaster CloudsScript = SkyManager.volumeClouds; if (CloudsScript != null && CloudsScript.LightningBox == null) { CloudsScript.setupLightning = true; CloudsScript.createLightningBox(); //script.CloudsScript.shadowsUpdate (); CloudsScript.EnableLightning = true; CloudsScript.lightning_every = 5; CloudsScript.max_lightning_time = 9; } else { Debug.Log("Lightning components already setup"); } } else { Debug.Log("No Clouds"); } //VOLUME FOG SeasonalTerrainSKYMASTER TerrainManager = SkyManager.gameObject.GetComponent <SeasonalTerrainSKYMASTER>(); //if (GUILayout.Button(new GUIContent("Add volumetric fog"), GUILayout.Width(150))) //{ if (Camera.main != null && Camera.main.gameObject.GetComponent <GlobalFogSkyMaster>() == null) { Camera.main.gameObject.AddComponent <GlobalFogSkyMaster>(); Camera.main.gameObject.GetComponent <GlobalFogSkyMaster>().SkyManager = SkyManager; Camera.main.gameObject.GetComponent <GlobalFogSkyMaster>().Sun = SkyManager.SUN_LIGHT.transform; //Debug.Log("CAMERA FOUND"); TerrainManager.Lerp_gradient = true; TerrainManager.ImageEffectFog = true; TerrainManager.FogHeightByTerrain = true; } else { if (Camera.main == null) { Debug.Log("Add a main camera first"); } if (Camera.main.gameObject.GetComponent <GlobalFogSkyMaster>() != null) { //setup existing Camera.main.gameObject.GetComponent <GlobalFogSkyMaster>().SkyManager = SkyManager; Camera.main.gameObject.GetComponent <GlobalFogSkyMaster>().Sun = SkyManager.SUN_LIGHT.transform; TerrainManager.Lerp_gradient = true; TerrainManager.ImageEffectFog = true; TerrainManager.FogHeightByTerrain = true; } } //v4.8 TerrainManager.setVFogCurvesPresetE(); //} //END FOG //SHAFTS if (Camera.main != null && Camera.main.gameObject.GetComponent <SunShaftsSkyMaster>() == null) { Camera.main.gameObject.AddComponent <SunShaftsSkyMaster>(); Camera.main.gameObject.GetComponent <SunShaftsSkyMaster>().sunTransform = SkyManager.SunObj.transform; //Debug.Log("CAMERA FOUND"); TerrainManager.ImageEffectShafts = true; } else { if (Camera.main == null) { Debug.Log("Add a main camera first"); } if (Camera.main.gameObject.GetComponent <SunShaftsSkyMaster>() != null) { Camera.main.gameObject.GetComponent <SunShaftsSkyMaster>().sunTransform = SkyManager.SunObj.transform; TerrainManager.ImageEffectShafts = true; } } //END SHAFTS } else //find if camera in scene { } configured = true; this.enabled = false; } }
public override void OnInspectorGUI() { serializedObject.Update(); if (script != null && script.SkyManager != null) { Undo.RecordObject(script.SkyManager, "Sky Variabe Change"); } //CHOOSE TAB BASED script.UseTabs = EditorGUILayout.Toggle("Use tabs", script.UseTabs, GUILayout.MaxWidth(180.0f)); //TABS if (script.UseTabs) { EditorGUILayout.BeginHorizontal(); if (GUILayout.Button("Clouds")) { script.currentTab = 0; } if (GUILayout.Button("Shadows")) { script.currentTab = 1; } if (GUILayout.Button("Reflections")) { script.currentTab = 2; } if (GUILayout.Button("Backlayer")) { script.currentTab = 3; } EditorGUILayout.EndHorizontal(); EditorGUILayout.BeginHorizontal(); if (GUILayout.Button("Lightning")) { script.currentTab = 4; } if (GUILayout.Button("Local Lights")) { script.currentTab = 5; } EditorGUILayout.EndHorizontal(); } //v3.4 //float sliderWidth = 295.0f; //v4.1e //TAB0 if ((script.UseTabs && script.currentTab == 0) || !script.UseTabs) { //////////////////////////////////////////////////////////// GUI.backgroundColor = Color.blue * 0.2f; EditorGUILayout.BeginVertical("box", GUILayout.MaxWidth(180.0f)); GUI.backgroundColor = Color.white; //GUILayout.Box("",GUILayout.Height(3),GUILayout.Width(410)); GUILayout.Label(MainIcon1, GUILayout.MaxWidth(410.0f)); EditorGUILayout.LabelField("Sky Options", EditorStyles.boldLabel); EditorGUILayout.BeginHorizontal(GUILayout.Width(200)); GUILayout.Space(10); script.Clouds_folder = EditorGUILayout.Foldout(script.Clouds_folder, "Sky options"); EditorGUILayout.EndHorizontal(); if (script.Clouds_folder) { EditorGUILayout.HelpBox("Setup Clouds", MessageType.None); if (GUILayout.Button("Create Clouds Using Sky Master Volume Fog")) { GlobalFogSkyMaster volumeFog = Camera.main.gameObject.GetComponent <GlobalFogSkyMaster>(); FullVolumeCloudsSkyMaster cloudsScript = Camera.main.gameObject.AddComponent <FullVolumeCloudsSkyMaster> (); cloudsScript.Sun = volumeFog.Sun; cloudsScript.SkyManager = volumeFog.SkyManager; cloudsScript.initVariablesA(); //cloudsScript._Altitude0 = 2300; //cloudsScript._Altitude1 = 4200; //cloudsScript._SampleCount0 = 1; //cloudsScript._SampleCount1 = 140; //cloudsScript._SampleCountL = 9; //cloudsScript._NoiseFreq1 = 5.1f; //cloudsScript._NoiseFreq2 = 49; //cloudsScript._NoiseAmp1 = 5.32f; //cloudsScript._NoiseAmp2 = 2.34f; //cloudsScript._NoiseBias = -3.8f; //cloudsScript.splitPerFrames = 1; //cloudsScript.downScale = true; //cloudsScript.downScaleFactor = 2; //cloudsScript._Scatter = 0.02f; //cloudsScript._Extinct = 0.01f; //cloudsScript._HGCoeff = -0.05f; //cloudsScript._BackShade = 0.4f; //cloudsScript._UndersideCurveFactor = 0.2f; //cloudsScript._FarDist = 442000; //cloudsScript.distanceFog = false; //cloudsScript._SunSize = 20; //cloudsScript._Scroll1 = new Vector3 (-0.25f,-0.14f,-0.25f); //cloudsScript._Scroll2 = new Vector3 (0.01f,0.05f,0.03f); //cloudsScript._InteractTexturePos = new Vector4 (0.06f,0.05f, -1222f,-1222f); //cloudsScript._InteractTextureAtr = new Vector4 (0.34f,0.991f, 0f,1); //cloudsScript._InteractTextureOffset = new Vector4 (1100,1100,0,0); //cloudsScript._HorizonYAdjust = 2000; //keep the clouds reference script.CloudsScript = cloudsScript; MoveComponentToBottom(Camera.main.gameObject); } if (GUILayout.Button("Create Reflections on Sky Master Water")) { if (script.CloudsScript != null) { script.CloudsScript.updateReflectionCamera = true; script.CloudsScript.updateReflections(); //script.CloudsScript.updateReflectionCamera script.CloudsScript.reflectClouds._HorizonYAdjust = -500; script.CloudsScript.reflectClouds._FarDist = script.CloudsScript._FarDist / 2; EditorSceneManager.MarkSceneDirty(SceneManager.GetActiveScene()); //EditorApplication.MarkSceneDirty(); //v4.1e } else { Debug.Log("No Clouds"); } } if (GUILayout.Button("Setup Shadows")) { if (script.CloudsScript != null) { script.CloudsScript.setupShadows = true; script.CloudsScript.createShadowDome(); script.CloudsScript.shadowsUpdate(); } } if (GUILayout.Button("Setup Back Layer")) { if (script.CloudsScript != null) { script.CloudsScript.setupDepth = true; script.CloudsScript.createDepthSetup(); script.CloudsScript.setupDepth = true; script.CloudsScript.blendBackground = true; } } if (GUILayout.Button("Setup Lightning")) { if (script.CloudsScript != null) { script.CloudsScript.setupLightning = true; script.CloudsScript.createLightningBox(); //script.CloudsScript.shadowsUpdate (); script.CloudsScript.EnableLightning = true; script.CloudsScript.lightning_every = 5; script.CloudsScript.max_lightning_time = 9; } } if (GUILayout.Button("Setup Local Light")) { if (script.CloudsScript != null && script.CloudsScript.EnableLightning) { script.CloudsScript.useLocalLightLightn = true; //create local light GameObject localLight = new GameObject(); localLight.name = "Clouds Local Light"; Light actuallight = localLight.AddComponent <Light> (); actuallight.type = LightType.Point; actuallight.range = 2000; localLight.transform.position = Camera.main.transform.forward * 1000 + new Vector3(0, 2000, 0); } } if (GUILayout.Button("Move Volume Fog to Top")) { MoveComponentToTop(Camera.main.gameObject); } if (GUILayout.Button("Move Volume Fog to Bottom")) { MoveComponentToBottom(Camera.main.gameObject); } EditorGUIUtility.wideMode = false; } EditorGUILayout.EndVertical(); //////////////////////////////////////////////////////////// } //END TAB0 //TAB1 // if (script.UseTabs && script.currentTab == 1) { // if (script.SkyManager == null) { // EditorGUILayout.BeginVertical ("box", GUILayout.MaxWidth (410.0f)); // EditorGUILayout.HelpBox ("Please add Sky to enable Cloud options", MessageType.None); // EditorGUILayout.EndVertical (); // } // } if (script.SkyManager != null) { ////////////////////// VOLUMETRIC CLOUDS ////////////////////////// //TAB1 if ((script.UseTabs && script.currentTab == 1) | !script.UseTabs) { } //END TAB1 } //END CHECK SKYMANAGER EXISTS serializedObject.ApplyModifiedProperties(); if (GUI.changed) //v3.4.5 //EditorUtility.SetDirty (script);//v3.4.5 { } }