コード例 #1
0
        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;
            }
        }
コード例 #2
0
    //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;
    }
コード例 #3
0
        // 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;
            }
        }
コード例 #4
0
        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
            {
            }
        }