Example #1
0
        public void LoadWeather()
        {
            SkyMaster sky = gameObject.AddComponent <SkyMaster>();

            GameObject settingsObj = Resources.Load <GameObject>("WeatherSettings");

            WeatherSettings = settingsObj.GetComponent <WeatherSettings>();
            WeatherSettings.SetupSky(sky);
            WeatherSettings.SetupTerrain(GetComponent <Terrain>());
            gameObject.AddComponent <WeatherManager>();
        }
Example #2
0
        public void SetupSky(SkyMaster script)
        {
            var mapCenter = GameObject.Find("Map Center");

            if (mapCenter == null)
            {
                mapCenter = new GameObject("Map Center");
            }
            var mgr = script.gameObject.AddComponent <SkyMasterManager>();

            script.SkyManager                   = mgr;
            script.SkyManager.MapCenter         = mapCenter.transform;
            script.SkyManager                   = script.gameObject.GetComponent <SkyMasterManager>();
            script.SkyManager.PlanetScale       = GlobalScale;
            script.SkyManager.DefinePlanetScale = true;
            script.SkyManager.Unity5            = true;

            script.transform.position = script.SkyManager.MapCenter.position;

            script.SkyManager.SunSystem = (GameObject)Instantiate(SunSystemPREFAB);
            script.SkyManager.SunSystem.transform.position = script.SkyManager.MapCenter.transform.position;

            script.SkyManager.Current_Time = 20.5f;

            script.SkyManager.SunSystem.transform.eulerAngles = new Vector3(28.14116f, 170, 180);
            script.SkyManager.SunSystem.name = "Sun System";
            script.SkyManager.SunSystem.transform.localScale = SunSystemScale * Vector3.one;
            script.SkyManager.SunSystem.transform.parent     = script.transform;

            script.SkyManager.MoonPhasesMat = MoonPhasesMat;
            script.SkyManager.MoonPhases    = true;

            // --------------- FIND SUN SYSTEM CENTER AND ALIGN TO MAP CENTER ---------------
            GameObject SunSystemCenter = FindInChildren(script.SkyManager.SunSystem, "Sun Target");
            Vector3    Distance        = SunSystemCenter.transform.position - script.SkyManager.MapCenter.transform.position;

            script.SkyManager.SunSystem.transform.position -= Distance;
            script.SkyManager.SunTarget = SunSystemCenter;

            // --------------- ASSIGN SUN - MOON LIGHTS TO SKY MANAGER ---------------
            script.SkyManager.SunObj        = FindInChildren(script.SkyManager.SunSystem, "SunBody");
            script.SkyManager.MoonObj       = FindInChildren(script.SkyManager.SunSystem, "MoonBody");
            script.SkyManager.SUN_LIGHT     = script.SkyManager.SunObj.transform.parent.gameObject;
            script.SkyManager.SUPPORT_LIGHT = FindInChildren(script.SkyManager.SUN_LIGHT, "MoonLight");
            script.SkyManager.MOON_LIGHT    = FindInChildren(FindInChildren(script.SkyManager.SunSystem, "MoonBody"),
                                                             "MoonLight");

            //ADD CLOUDS
            script.SkyManager.Upper_Dynamic_Cloud =
                (GameObject)
                Instantiate(Upper_Dynamic_CloudPREFAB, script.SkyManager.MapCenter.position, Quaternion.identity);
            script.SkyManager.Upper_Dynamic_Cloud.transform.parent = script.transform;
            script.SkyManager.Lower_Dynamic_Cloud =
                (GameObject)
                Instantiate(Lower_Dynamic_CloudPREFAB, script.SkyManager.MapCenter.position, Quaternion.identity);
            script.SkyManager.Lower_Dynamic_Cloud.transform.parent = script.transform;
            script.SkyManager.Upper_Cloud_Bed =
                (GameObject)
                Instantiate(Upper_Cloud_BedPREFAB, script.SkyManager.MapCenter.position, Quaternion.identity);
            script.SkyManager.Upper_Cloud_Bed.transform.parent = script.transform;
            script.SkyManager.Lower_Cloud_Bed =
                (GameObject)
                Instantiate(Lower_Cloud_BedPREFAB, script.SkyManager.MapCenter.position, Quaternion.identity);
            script.SkyManager.Lower_Cloud_Bed.transform.parent = script.transform;
            script.SkyManager.Upper_Cloud_Real =
                (GameObject)
                Instantiate(Upper_Cloud_RealPREFAB, script.SkyManager.MapCenter.position, Quaternion.identity);
            script.SkyManager.Upper_Cloud_Real.transform.parent = script.transform;
            script.SkyManager.Lower_Cloud_Real =
                (GameObject)
                Instantiate(Lower_Cloud_RealPREFAB, script.SkyManager.MapCenter.position, Quaternion.identity);
            script.SkyManager.Lower_Cloud_Real.transform.parent = script.transform;
            script.SkyManager.Upper_Static_Cloud =
                (GameObject)
                Instantiate(Upper_Static_CloudPREFAB, script.SkyManager.MapCenter.position, Quaternion.identity);
            script.SkyManager.Upper_Static_Cloud.transform.parent = script.transform;
            script.SkyManager.Lower_Static_Cloud =
                (GameObject)
                Instantiate(Lower_Static_CloudPREFAB, script.SkyManager.MapCenter.position, Quaternion.identity);
            script.SkyManager.Lower_Static_Cloud.transform.parent = script.transform;
            script.SkyManager.Surround_Clouds =
                (GameObject)
                Instantiate(Surround_CloudsPREFAB, script.SkyManager.MapCenter.position, Quaternion.identity);
            script.SkyManager.Surround_Clouds.transform.parent = script.transform;
            script.SkyManager.Surround_Clouds_Heavy            =
                (GameObject)
                Instantiate(Surround_Clouds_HeavyPREFAB, script.SkyManager.MapCenter.position, Quaternion.identity);
            script.SkyManager.Surround_Clouds_Heavy.transform.parent = script.transform;

            script.SkyManager.cloud_upMaterial =
                script.SkyManager.Upper_Dynamic_Cloud.GetComponentsInChildren <ParticleSystemRenderer>(true)[0]
                .sharedMaterial;
            script.SkyManager.cloud_downMaterial =
                script.SkyManager.Upper_Dynamic_Cloud.GetComponentsInChildren <ParticleSystemRenderer>(true)[0]
                .sharedMaterial;
            script.SkyManager.flat_cloud_upMaterial =
                script.SkyManager.Upper_Cloud_Bed.GetComponentsInChildren <ParticleSystemRenderer>(true)[0]
                .sharedMaterial;
            script.SkyManager.flat_cloud_downMaterial =
                script.SkyManager.Lower_Cloud_Bed.GetComponentsInChildren <ParticleSystemRenderer>(true)[0]
                .sharedMaterial;
            script.SkyManager.Surround_Clouds_Mat =
                script.SkyManager.Surround_Clouds.GetComponentsInChildren <ParticleSystemRenderer>(true)[0]
                .sharedMaterial;
            script.SkyManager.real_cloud_upMaterial =
                script.SkyManager.Upper_Cloud_Real.GetComponentsInChildren <ParticleSystemRenderer>(true)[0]
                .sharedMaterial;
            script.SkyManager.real_cloud_downMaterial =
                script.SkyManager.Lower_Cloud_Real.GetComponentsInChildren <ParticleSystemRenderer>(true)[0]
                .sharedMaterial;

            script.SkyManager.Sun_Ray_Cloud =
                (GameObject)Instantiate(Sun_Ray_CloudPREFAB, script.SkyManager.MapCenter.position, Quaternion.identity);
            script.SkyManager.Sun_Ray_Cloud.transform.parent = script.transform;
            script.SkyManager.Cloud_Dome =
                (GameObject)Instantiate(Cloud_DomePREFAB, script.SkyManager.MapCenter.position, Quaternion.identity);
            script.SkyManager.Cloud_Dome.transform.parent = script.transform;
            script.SkyManager.Star_particles_OBJ          =
                (GameObject)
                Instantiate(Star_particlesPREFAB, script.SkyManager.MapCenter.position, Quaternion.identity);
            script.SkyManager.Star_particles_OBJ.transform.parent   = script.transform;
            script.SkyManager.Star_particles_OBJ.transform.position = script.SkyManager.MapCenter.position;

            script.SkyManager.StarDome =
                (GameObject)Instantiate(Star_domePREFAB, script.SkyManager.MapCenter.position, Quaternion.identity);
            script.SkyManager.StarDome.transform.parent = script.transform;
            script.SkyManager.CloudDomeL1 =
                (GameObject)
                Instantiate(Cloud_Domev22PREFAB1, script.SkyManager.MapCenter.position, Quaternion.identity);
            script.SkyManager.CloudDomeL1.transform.parent = script.transform;
            script.SkyManager.CloudDomeL2 =
                (GameObject)
                Instantiate(Cloud_Domev22PREFAB2, script.SkyManager.MapCenter.position, Quaternion.identity);
            script.SkyManager.CloudDomeL2.transform.parent = script.transform;

            script.SkyManager.cloud_dome_downMaterial =
                script.SkyManager.Cloud_Dome.GetComponentsInChildren <Renderer>(true)[0].sharedMaterial;
            script.SkyManager.star_dome_Material =
                script.SkyManager.StarDome.GetComponentsInChildren <Renderer>(true)[0].sharedMaterial;
            //script.SkyManager.star = script.SkyManager.Lower_Cloud_Real.GetComponentsInChildren<Renderer>(true)[0].sharedMaterial;

            script.SkyManager.CloudDomeL1Mat =
                script.SkyManager.CloudDomeL1.GetComponentsInChildren <Renderer>(true)[0].sharedMaterial;
            script.SkyManager.CloudDomeL2Mat =
                script.SkyManager.CloudDomeL2.GetComponentsInChildren <Renderer>(true)[0].sharedMaterial;

            //DUAL SUN HANDLE

            //STARS SHADER
            script.SkyManager.StarsMaterial = StarsMat;

            //FOGS
            script.SkyManager.VFogsPerVWeather.Add(0);  //sunny--
            script.SkyManager.VFogsPerVWeather.Add(13); //foggy
            script.SkyManager.VFogsPerVWeather.Add(14); //heavy fog
            script.SkyManager.VFogsPerVWeather.Add(0);  //tornado
            script.SkyManager.VFogsPerVWeather.Add(7);  //snow storm--

            script.SkyManager.VFogsPerVWeather.Add(7);  //freeze storm
            script.SkyManager.VFogsPerVWeather.Add(0);  //flat clouds
            script.SkyManager.VFogsPerVWeather.Add(0);  //lightning storm
            script.SkyManager.VFogsPerVWeather.Add(7);  //heavy storm--
            script.SkyManager.VFogsPerVWeather.Add(7);  //heavy storm dark--

            script.SkyManager.VFogsPerVWeather.Add(12); //cloudy--
            script.SkyManager.VFogsPerVWeather.Add(0);  //rolling fog
            script.SkyManager.VFogsPerVWeather.Add(0);  //volcano erupt
            script.SkyManager.VFogsPerVWeather.Add(14); //rain

            //LOCALIZE EFFECTS
            script.SkyManager.Snow_local        = true;
            script.SkyManager.Mild_rain_local   = true;
            script.SkyManager.Heavy_rain_local  = true;
            script.SkyManager.Fog_local         = true;
            script.SkyManager.Butterflies_local = true;

            //ADD RAIN
            script.SkyManager.SnowStorm_OBJ =
                (GameObject)Instantiate(SnowStormPREFAB, script.SkyManager.MapCenter.position, Quaternion.identity);
            script.SkyManager.SnowStorm_OBJ.transform.parent = script.transform;
            script.SkyManager.Butterfly_OBJ =
                (GameObject)Instantiate(ButterflyPREFAB, script.SkyManager.MapCenter.position, Quaternion.identity);
            script.SkyManager.Butterfly_OBJ.transform.parent = script.transform;

            //Parent ice spread to snow storm system and assign pool particle to collision manager
            //v.3.0.3	script.SkyManager.Ice_System_OBJ=(GameObject)Instantiate(Ice_SystemPREFAB); script.SkyManager.Ice_System_OBJ.transform.parent = script.transform;
            //v.3.0.3	script.SkyManager.Ice_Spread_OBJ=(GameObject)Instantiate(Ice_SpreadPREFAB); script.SkyManager.Ice_Spread_OBJ.transform.parent = script.SkyManager.SnowStorm_OBJ.transform;
            //v.3.0.3	script.SkyManager.Ice_Spread_OBJ.GetComponentsInChildren<ParticleCollisionsSKYMASTER>(true)[0].ParticlePOOL = script.SkyManager.Ice_System_OBJ.GetComponentsInChildren<ParticlePropagationSKYMASTER>(true)[0].gameObject;


            script.SkyManager.Lightning_OBJ =
                (GameObject)Instantiate(LightningPREFAB, script.SkyManager.MapCenter.position, Quaternion.identity);
            script.SkyManager.Lightning_OBJ.transform.parent = script.transform;

            script.SkyManager.Lightning_System_OBJ =
                (GameObject)
                Instantiate(Lightning_SystemPREFAB, script.SkyManager.MapCenter.position, Quaternion.identity);
            script.SkyManager.Lightning_System_OBJ.transform.parent = script.transform;
            script.SkyManager.VolumeFog_OBJ =
                (GameObject)Instantiate(VolumeFogPREFAB, script.SkyManager.MapCenter.position, Quaternion.identity);
            script.SkyManager.VolumeFog_OBJ.transform.parent = script.transform;
            script.SkyManager.Rain_Heavy =
                (GameObject)Instantiate(Rain_Heavy, script.SkyManager.MapCenter.position, Quaternion.identity);
            script.SkyManager.Rain_Heavy.transform.parent = script.transform;
            script.SkyManager.Rain_Mild =
                (GameObject)Instantiate(Rain_Mild, script.SkyManager.MapCenter.position, Quaternion.identity);
            script.SkyManager.Rain_Mild.transform.parent = script.transform;
            script.SkyManager.VolumeRain_Heavy           =
                (GameObject)Instantiate(VolumeRain_Heavy, script.SkyManager.MapCenter.position, Quaternion.identity);
            script.SkyManager.VolumeRain_Heavy.transform.parent = script.transform;
            script.SkyManager.VolumeRain_Mild =
                (GameObject)Instantiate(VolumeRain_Mild, script.SkyManager.MapCenter.position, Quaternion.identity);
            script.SkyManager.VolumeRain_Mild.transform.parent = script.transform;

            //init arrays
            script.SkyManager.FallingLeaves_OBJ = new GameObject[1];
            script.SkyManager.Tornado_OBJs      = new GameObject[1];
            //v.3.0.3 script.SkyManager.Butterfly3D_OBJ = new GameObject[1];
            script.SkyManager.Volcano_OBJ = new GameObject[1];

            script.SkyManager.FallingLeaves_OBJ[0] =
                (GameObject)Instantiate(FallingLeavesPREFAB, script.SkyManager.MapCenter.position, Quaternion.identity);
            script.SkyManager.FallingLeaves_OBJ[0].transform.parent = script.transform;
            script.SkyManager.Tornado_OBJs[0] =
                (GameObject)Instantiate(TornadoPREFAB, script.SkyManager.MapCenter.position, Quaternion.identity);
            script.SkyManager.Tornado_OBJs[0].transform.parent = script.transform;
            //v.3.0.3			script.SkyManager.Butterfly3D_OBJ[0]	=(GameObject)Instantiate(Butterfly3DPREFAB); script.SkyManager.Butterfly3D_OBJ[0].transform.parent = script.transform;
            script.SkyManager.Volcano_OBJ[0] =
                (GameObject)Instantiate(VolcanoPREFAB, script.SkyManager.MapCenter.position, Quaternion.identity);
            script.SkyManager.Volcano_OBJ[0].transform.parent = script.transform;

            script.SkyManager.RefractRain_Mild =
                (GameObject)Instantiate(RefractRain_Mild, script.SkyManager.MapCenter.position, Quaternion.identity);
            script.SkyManager.RefractRain_Mild.transform.parent = script.transform;
            script.SkyManager.RefractRain_Heavy =
                (GameObject)Instantiate(RefractRain_Heavy, script.SkyManager.MapCenter.position, Quaternion.identity);
            script.SkyManager.RefractRain_Heavy.transform.parent = script.transform;

            //SETUP GI PROXY for sun
            //SET PLAYER
            if (!script.SkyManager.Tag_based_player)
            {
                script.SkyManager.SUN_LIGHT.GetComponent <LightCollisionsPDM>().Tag_based_player = false;
                if (script.SkyManager.Hero != null)
                {
                    script.SkyManager.SUN_LIGHT.GetComponent <LightCollisionsPDM>().HERO = script.SkyManager.Hero;
                }
                else
                {
                    Debug.Log(
                        "Note: Hero has not been defined. The Main Camera will be used as the player. For a specific player usage, define a hero in 'hero' parameters in Sky Master Manager and LightColliionsPDM scripts.");
                    Debug.Log(
                        "The 'tag based player' option may also be used to define player by tag (default tag is 'Player')");
                }
            }
            else
            {
                script.SkyManager.SUN_LIGHT.GetComponent <LightCollisionsPDM>().Tag_based_player = true;
            }

            //DEFINE START PRESET
            script.SkyManager.Preset             = 9; //v3.0 day time - no red sun
            script.SkyManager.Auto_Cycle_Sky     = true;
            script.SkyManager.SPEED              = 1;
            script.SkyManager.currentWeatherName = SkyMasterManager.Volume_Weather_types.Cloudy;

            //ASSIGN SKY MATERIALS
            if (script.SkyManager.SunObj2 != null)
            {
                script.SkyManager.skyboxMat = skyMatDUAL_SUN;
            }
            else
            {
                script.SkyManager.skyboxMat = skyboxMat;
            }
            RenderSettings.skybox = script.SkyManager.skyboxMat;
            //Debug.Log(script.SkyManager.skyMat.name);
            //Debug.Log(RenderSettings.skybox.name);
            //script.SkyManager.skyMat = skyMat;		//v3.3c

            //Set fog present to realitistic
            script.SkyManager.Preset = 11;
            if (script.TerrainManager != null)
            {
                script.TerrainManager.FogPreset = 11;
            }
            skyMaster = script;
            SetupCloudsRealistic();
        }