private LightningBoltDependencies CreateLightningBoltDependencies(ICollection <LightningBoltParameters> parameters) { LightningBoltDependencies d; if (dependenciesCache.Count == 0) { d = new LightningBoltDependencies(); d.AddActiveBolt = AddActiveBolt; d.LightAdded = OnLightAdded; d.LightRemoved = OnLightRemoved; d.ReturnToCache = ReturnLightningDependenciesToCache; d.StartCoroutine = StartCoroutine; d.Parent = gameObject; } else { int i = dependenciesCache.Count - 1; d = dependenciesCache[i]; dependenciesCache.RemoveAt(i); } if (WeatherMakerScript.Instance.Camera == null) { d.CameraPos = Vector3.zero; d.CameraIsOrthographic = false; } else { d.CameraPos = WeatherMakerScript.Instance.Camera.transform.position; d.CameraIsOrthographic = WeatherMakerScript.Instance.CameraIsOrthographic; } d.CameraMode = calculatedCameraMode; d.DestParticleSystem = LightningDestinationParticleSystem; d.LightningMaterialMesh = lightningMaterialMeshInternal; d.LightningMaterialMeshNoGlow = lightningMaterialMeshNoGlowInternal; d.OriginParticleSystem = LightningOriginParticleSystem; d.SortLayerName = SortLayerName; d.SortOrderInLayer = SortOrderInLayer; d.UseWorldSpace = UseWorldSpace; #if !UNITY_WEBGL d.ThreadState = threadState; // clone parameters list if threading, otherwise just set it if (threadState != null) { d.Parameters = new List <LightningBoltParameters>(parameters); } else #endif { d.Parameters = parameters; } d.LightningBoltStarted = LightningStartedCallback; d.LightningBoltEnded = LightningEndedCallback; return(d); }
private void ReturnLightningDependenciesToCache(LightningBoltDependencies d) { d.Parameters = null; d.OriginParticleSystem = null; d.DestParticleSystem = null; d.LightningMaterialMesh = null; d.LightningMaterialMeshNoGlow = null; dependenciesCache.Add(d); }
/// <summary> /// Create multiple lightning bolts, attempting to batch them into as few draw calls as possible /// </summary> /// <param name="parameters">Lightning bolt creation parameters</param> public void CreateLightningBolts(ICollection <LightningBoltParameters> parameters) { if (parameters != null && parameters.Count != 0) { UpdateTexture(); LightningBolt bolt = GetOrCreateLightningBolt(); LightningBoltDependencies dependencies = CreateLightningBoltDependencies(parameters); bolt.SetupLightningBolt(dependencies); } }
/// <summary> /// Create a lightning bolt /// </summary> /// <param name="p">Lightning bolt creation parameters</param> public virtual void CreateLightningBolt(LightningBoltParameters p) { if (p != null) { UpdateTexture(); oneParameterArray[0] = p; LightningBolt bolt = GetOrCreateLightningBolt(); LightningBoltDependencies dependencies = CreateLightningBoltDependencies(oneParameterArray); bolt.SetupLightningBolt(dependencies); } }
/// <summary> /// Create multiple lightning bolts, attempting to batch them into as few draw calls as possible /// </summary> /// <param name="parameters">Lightning bolt creation parameters</param> public void CreateLightningBolts(ICollection <LightningBoltParameters> parameters) { #if UNITY_EDITOR if (Camera == null) { UnityEngine.Debug.LogError("Camera not assigned to lightning script. Either set the camera or tag your camera as main camera."); } #endif if (parameters != null && parameters.Count != 0 && Camera != null) { UpdateTexture(); LightningBolt bolt = GetOrCreateLightningBolt(); LightningBoltDependencies dependencies = CreateLightningBoltDependencies(parameters); bolt.SetupLightningBolt(dependencies); } }
/// <summary> /// Create a lightning bolt /// </summary> /// <param name="p">Lightning bolt creation parameters</param> public virtual void CreateLightningBolt(LightningBoltParameters p) { #if UNITY_EDITOR if (Camera == null) { UnityEngine.Debug.LogError("Camera not assigned to lightning script. Either set the camera or tag your camera as main camera."); } #endif if (p != null && Camera != null) { UpdateTexture(); oneParameterArray[0] = p; LightningBolt bolt = GetOrCreateLightningBolt(); LightningBoltDependencies dependencies = CreateLightningBoltDependencies(oneParameterArray); bolt.SetupLightningBolt(dependencies); } }