Exemplo n.º 1
0
        private unsafe void EmitLightningType(LightningType lightningType, float deltaTime)
        {
            int     num8;
            float   num9;
            int     emitCount = lightningType.GetEmitCount(deltaTime);
            Bounds  emitArea  = lightningType.EmitArea;
            Vector3 min       = emitArea.min;
            Vector3 max       = emitArea.max;

            for (int i = 0; i < 3; i++)
            {
                ref Vector3 vectorRef;
                num9 = vectorRef[num8];
                (vectorRef = (Vector3) & min)[num8 = i] = num9 * this.EmitterSize[i];
            }
Exemplo n.º 2
0
        public void Update(float deltaTime, float realDeltaTime, LightningType lightningType, ref int flashPointId, Material cloudMaterial)
        {
            bool  flag = false;
            float num  = 0f;

            for (int i = 0; i < this.FlashCount; i++)
            {
                LightningObject obj2 = this._objects[i];
                if (obj2.Active)
                {
                    flag           = true;
                    obj2.Lifttime += realDeltaTime;
                    if (this.LightningVisible && (obj2.Lifttime > obj2.DelayTime))
                    {
                        obj2.Show(true);
                    }
                    if (obj2.Lifttime > obj2.StartLifttime)
                    {
                        obj2.Active = false;
                    }
                    float num3 = lightningType.IntensityCurve.Evaluate((obj2.Lifttime - obj2.DelayTime) / (obj2.StartLifttime - obj2.DelayTime)) * obj2.Intensity;
                    num += num3;
                    if (this.LightningVisible)
                    {
                        Transform transform = obj2.Object.transform;
                        transform.localPosition += (Vector3)(this.Velocity * deltaTime);
                        lightningType.DumbMPB.SetFloat("_TexOffsetX", obj2.Mat.texOffsetX);
                        lightningType.DumbMPB.SetFloat("_EmissionScaler", num3);
                        obj2.Object.GetComponent <Renderer>().SetPropertyBlock(lightningType.DumbMPB);
                    }
                }
            }
            this.Active = flag;
            if (this.Active)
            {
                float intensity = num * (!this.LightningVisible ? lightningType.CloudLitIntensinty2 : lightningType.CloudLitIntensinty);
                this.SetFlashPoint(this.StartPosition, intensity, cloudMaterial, ref flashPointId);
                if (this.LightningVisible)
                {
                    this.SetFlashPoint(this.EndPosition, intensity, cloudMaterial, ref flashPointId);
                }
            }
        }
Exemplo n.º 3
0
        public void Emit(Vector3 position, Vector3 velocity, bool lightningVisible, LightningType lightningType)
        {
            this.Active           = true;
            this.LightningVisible = lightningVisible;
            this.StartPosition    = position;
            this.EndPosition      = this.StartPosition - ((Vector3)(Vector3.up * lightningType.Size));
            this.Velocity         = velocity;
            this.FlashCount       = UnityEngine.Random.Range(1, LightningType.MaxFlashCount);
            float         num    = 0f;
            HashSet <int> set    = new HashSet <int>();
            int           length = lightningType.Materials.Length;

            for (int i = 0; i < this.FlashCount; i++)
            {
                LightningObject obj2 = this._objects[i];
                if (lightningVisible)
                {
                    int num4;
                    if (set.Count >= length)
                    {
                        break;
                    }
                    do
                    {
                        num4 = UnityEngine.Random.Range(0, length);
                    }while (set.Contains(num4));
                    set.Add(num4);
                    obj2.Mat = lightningType.Materials[num4];
                    obj2.UpdatePosition(position);
                }
                obj2.Intensity = UnityEngine.Random.Range(lightningType.MinIntensity, lightningType.MaxIntensity);
                obj2.Size      = lightningType.Size;
                float num5 = lightningType.StartLifttime * (1f + (((UnityEngine.Random.value * 2f) - 1f) * lightningType.StartLifttimeDeviation));
                obj2.StartLifttime = num5 + num;
                obj2.DelayTime     = num;
                num          += num5;
                obj2.Lifttime = 0f;
                obj2.Active   = true;
            }
        }