| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111 | 
							- /// <summary>
 
- /// This component can be used to synchronize time and weather.
 
- /// </summary>
 
- using UnityEngine;
 
- #if ENVIRO_MIRROR_SUPPORT
 
- using Mirror;
 
- #endif
 
- using System.Collections;
 
- namespace Enviro
 
- {
 
- 	#if ENVIRO_MIRROR_SUPPORT
 
- 	[AddComponentMenu("Enviro 3/Integrations/Mirror Server")]
 
- 	[RequireComponent(typeof (NetworkIdentity))]
 
- 	public class EnviroMirrorServer : NetworkBehaviour {
 
- 	#else
 
- 	public class EnviroMirrorServer : MonoBehaviour {
 
- 	#endif
 
- 	#if ENVIRO_MIRROR_SUPPORT
 
- 		public float updateSmoothing = 15f;
 
- 		[SyncVar] private float networkHours;
 
- 		[SyncVar] private int networkDays;
 
- 		[SyncVar] private int networkMonths;
 
- 		[SyncVar] private int networkYears;
 
- 		public bool isHeadless = true;
 
- 		public override void OnStartServer()
 
- 		{
 
- 			if (isHeadless) 
 
- 			{
 
- 				//EnviroManager.instance.serverMode = true;
 
- 			}
 
- 				
 
- 			EnviroManager.instance.OnSeasonChanged += (EnviroEnvironment.Seasons season) => {
 
- 				SendSeasonToClient (season);
 
- 			};
 
- 			EnviroManager.instance.OnWeatherChanged += (EnviroWeatherType type) => {
 
- 				SendWeatherToClient (type);
 
- 			};
 
- 		}
 
- 		public void Start ()
 
- 		{
 
- 			if (!isServer) 
 
- 			{
 
- 				if(EnviroManager.instance.Time != null)
 
- 				   EnviroManager.instance.Time.Settings.simulate = false;
 
- 			}
 
- 		}
 
- 		void SendWeatherToClient (EnviroWeatherType w)
 
- 		{
 
- 			if(EnviroManager.instance.Weather != null)
 
- 			{
 
- 				for (int i = 0; i < EnviroManager.instance.Weather.Settings.weatherTypes.Count; i++)
 
- 				{
 
- 					if(EnviroManager.instance.Weather.Settings.weatherTypes[i] == w)
 
- 					   RpcWeatherUpdate (i);
 
- 				}
 
- 			}
 
- 		}
 
- 		void SendSeasonToClient (EnviroEnvironment.Seasons s)
 
- 		{
 
- 			RpcSeasonUpdate((int)s);
 
- 		}
 
- 		[ClientRpc]
 
- 		void RpcSeasonUpdate (int season)
 
- 		{
 
- 			if(EnviroManager.instance.Environment != null)
 
- 			   EnviroManager.instance.Environment.ChangeSeason((EnviroEnvironment.Seasons)season);
 
- 		}
 
- 		[ClientRpc]
 
- 		void RpcWeatherUpdate (int weather)
 
- 		{
 
- 			if(EnviroManager.instance.Weather != null)
 
- 			   EnviroManager.instance.Weather.ChangeWeather(EnviroManager.instance.Weather.Settings.weatherTypes[weather]);
 
- 		}
 
- 		void Update ()
 
- 		{
 
- 			if (EnviroManager.instance == null || EnviroManager.instance.Time == null)
 
- 				return;
 
- 			if (!isServer) 
 
- 			{
 
- 				if (networkHours < 1f && EnviroManager.instance.Time.GetTimeOfDay() > 23f)
 
- 					EnviroManager.instance.Time.SetTimeOfDay(networkHours);
 
- 				EnviroManager.instance.Time.SetTimeOfDay(Mathf.Lerp(EnviroManager.instance.Time.GetTimeOfDay(), (float)networkHours, Time.deltaTime * updateSmoothing));
 
- 				EnviroManager.instance.Time.years = networkYears;
 
- 				EnviroManager.instance.Time.months = networkMonths;
 
- 				EnviroManager.instance.Time.days = networkDays;
 
- 			} else {
 
- 				networkHours = EnviroManager.instance.Time.GetTimeOfDay();
 
- 				networkDays = EnviroManager.instance.Time.days;
 
- 				networkMonths = EnviroManager.instance.Time.months;
 
- 				networkYears = EnviroManager.instance.Time.years;
 
- 			}
 
- 		}
 
- 	#endif
 
- 	}
 
- }
 
 
  |