Example #1
0
        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);
            }
        }