Ejemplo n.º 1
0
    public void Ignite(Vector3 worldBurnPosition, int generation = 0)
    {
        if (this.isBurning)
        {
            return;
        }
        this.burnGeneration = generation;
        this.spreadTimer    = 0f;
        this.isBurning      = true;
        FireDamagePoint fireDamagePoint = this.FindClosestFirePoint(base.transform.InverseTransformPoint(worldBurnPosition));

        if (fireDamagePoint != null)
        {
            this.BurnPoint(fireDamagePoint);
            this.UpdateSizeParameter();
        }
        if (this.BurnMaterial && !this.Structure)
        {
            base.GetComponent <Renderer>().material = this.BurnMaterial;
        }
        for (int i = 0; i < this.AdditionalBurnMaterials.Length; i++)
        {
            this.AdditionalBurnMaterials[i].renderer.material = this.AdditionalBurnMaterials[i].material;
        }
    }
Ejemplo n.º 2
0
 private void OnEnable()
 {
     this.BurningOff();
     this.RandomizedSpreadInterval = this.SpreadInterval + UnityEngine.Random.value;
     for (int i = 0; i < this.FirePoints.Length; i++)
     {
         FireDamagePoint fireDamagePoint = this.FirePoints[i];
         fireDamagePoint.isBurning      = false;
         fireDamagePoint.particleSystem = null;
     }
 }
Ejemplo n.º 3
0
 public void ExtinguishPoint(FireParticle particle)
 {
     for (int i = 0; i < this.FirePoints.Length; i++)
     {
         FireDamagePoint fireDamagePoint = this.FirePoints[i];
         if (fireDamagePoint.particleSystem == particle)
         {
             fireDamagePoint.particleSystem = null;
             return;
         }
     }
 }
Ejemplo n.º 4
0
 private void UpdateSizeParameter()
 {
     if (this.sizeParameter != null && this.MyFuel != 0f)
     {
         float num = 0f;
         for (int i = 0; i < this.FirePoints.Length; i++)
         {
             FireDamagePoint fireDamagePoint = this.FirePoints[i];
             if (fireDamagePoint.particleSystem != null)
             {
                 num += fireDamagePoint.particleSystem.MyFuel;
             }
         }
         UnityUtil.ERRCHECK(this.sizeParameter.setValue(100f * num / (this.MyFuel * (float)this.FirePoints.Length)));
     }
 }
Ejemplo n.º 5
0
 protected void ResetFirePoints()
 {
     for (int i = 0; i < this.FirePoints.Length; i++)
     {
         FireDamagePoint fireDamagePoint = this.FirePoints[i];
         if (fireDamagePoint != null)
         {
             fireDamagePoint.isBurning = false;
             if (fireDamagePoint.particleSystem)
             {
                 PoolManager.Pools["Particles"].Despawn(fireDamagePoint.particleSystem.transform);
                 fireDamagePoint.particleSystem = null;
             }
         }
     }
 }
Ejemplo n.º 6
0
 private void Spread()
 {
     if (BoltNetwork.isClient)
     {
         return;
     }
     for (int i = 0; i < this.FirePoints.Length; i++)
     {
         FireDamagePoint fireDamagePoint = this.FirePoints[i];
         if (fireDamagePoint.isBurning)
         {
             FireDamagePoint fireDamagePoint2 = this.FindClosestFirePoint(fireDamagePoint.Position);
             if (fireDamagePoint2 != null)
             {
                 this.BurnPoint(fireDamagePoint2);
             }
         }
     }
     if (this.burnGeneration + 1 < 10 && this.SpreadLayers != 0)
     {
         for (int j = 0; j < this.FirePoints.Length; j++)
         {
             FireDamagePoint fireDamagePoint3 = this.FirePoints[j];
             if (fireDamagePoint3.isBurning)
             {
                 Vector3    vector = base.transform.TransformPoint(fireDamagePoint3.Position);
                 Collider[] array  = Physics.OverlapSphere(vector, fireDamagePoint3.Radius, this.SpreadLayers);
                 for (int k = 0; k < array.Length; k++)
                 {
                     Collider collider = array[k];
                     if (!collider.transform.IsChildOf(base.transform))
                     {
                         FireDamage componentInChildren = collider.GetComponentInChildren <FireDamage>();
                         if (componentInChildren)
                         {
                             componentInChildren.Ignite(vector, this.burnGeneration + 1);
                         }
                         else
                         {
                             collider.SendMessage("Burn", SendMessageOptions.DontRequireReceiver);
                         }
                     }
                 }
             }
         }
     }
 }
Ejemplo n.º 7
0
    private void BurnPoint(FireDamagePoint firePoint)
    {
        ParticleSystem particleSystem = PoolManager.Pools["Particles"].Spawn(this.FireParticleSystem, base.transform.TransformPoint(firePoint.Position), Quaternion.identity);

        if (particleSystem != null)
        {
            firePoint.isBurning             = true;
            firePoint.particleSystem        = particleSystem.GetComponent <FireParticle>();
            firePoint.particleSystem.MyFuel = this.MyFuel;
            firePoint.particleSystem.Parent = this;
            if (this.flareUpParameter != null)
            {
                UnityUtil.ERRCHECK(this.flareUpParameter.setValue(1f));
                UnityUtil.ERRCHECK(this.flareUpParameter.setValue(0f));
            }
        }
    }
Ejemplo n.º 8
0
    private FireDamagePoint FindClosestFirePoint(Vector3 localPosition)
    {
        FireDamagePoint result = null;
        float           num    = 999999f;

        for (int i = 0; i < this.FirePoints.Length; i++)
        {
            FireDamagePoint fireDamagePoint = this.FirePoints[i];
            if (!fireDamagePoint.isBurning)
            {
                float sqrMagnitude = (fireDamagePoint.Position - localPosition).sqrMagnitude;
                if (sqrMagnitude < num)
                {
                    result = fireDamagePoint;
                    num    = sqrMagnitude;
                }
            }
        }
        return(result);
    }
Ejemplo n.º 9
0
 protected void StopBurning()
 {
     if (this.isBurning)
     {
         this.SetMaterialBurnAmount(0f);
     }
     this.BurningOff();
     if (!this.isBurning)
     {
         this.ResetFirePoints();
     }
     else
     {
         FireDamagePoint fireDamagePoint = this.FindClosestFirePoint(Vector3.zero);
         if (fireDamagePoint != null)
         {
             this.BurnPoint(fireDamagePoint);
         }
     }
 }
Ejemplo n.º 10
0
    private void OnDrawGizmosSelected()
    {
        Color     color  = Gizmos.color;
        Matrix4x4 matrix = Gizmos.matrix;

        Gizmos.color  = Color.red;
        Gizmos.matrix = base.transform.localToWorldMatrix;
        for (int i = 0; i < this.FirePoints.Length; i++)
        {
            FireDamagePoint fireDamagePoint = this.FirePoints[i];
            if (fireDamagePoint.isBurning)
            {
                Gizmos.DrawSphere(fireDamagePoint.Position, fireDamagePoint.Radius);
            }
            else
            {
                Gizmos.DrawWireSphere(fireDamagePoint.Position, fireDamagePoint.Radius);
            }
        }
        Gizmos.matrix = matrix;
        Gizmos.color  = color;
    }
Ejemplo n.º 11
0
    public void Ignite(Vector3 worldBurnPosition, int generation = 0)
    {
        if (this.isBurning)
        {
            return;
        }
        this.burnGeneration = generation;
        this.spreadTimer    = 0f;
        this.isBurning      = true;
        FireDamagePoint fireDamagePoint = this.FindClosestFirePoint(base.transform.InverseTransformPoint(worldBurnPosition));

        if (fireDamagePoint != null)
        {
            this.BurnPoint(fireDamagePoint);
            this.UpdateSizeParameter();
        }
        if (this.BurnMaterial && !this.Structure)
        {
            Renderer component = base.GetComponent <Renderer>();
            if (component.sharedMaterial != this.BurnMaterial)
            {
                this.OriginalMaterial    = component.sharedMaterial;
                component.sharedMaterial = this.BurnMaterial;
            }
        }
        for (int i = 0; i < this.AdditionalBurnMaterials.Length; i++)
        {
            if (this.AdditionalBurnMaterials[i].renderer.sharedMaterial != this.AdditionalBurnMaterials[i].material)
            {
                this.AdditionalBurnMaterials[i].originalMaterial        = this.AdditionalBurnMaterials[i].renderer.sharedMaterial;
                this.AdditionalBurnMaterials[i].renderer.sharedMaterial = this.AdditionalBurnMaterials[i].material;
            }
        }
        if (this.DestroyWhenComplete)
        {
            IEnumerator enumerator = base.transform.GetEnumerator();
            try
            {
                while (enumerator.MoveNext())
                {
                    object    obj        = enumerator.Current;
                    Transform transform  = (Transform)obj;
                    PickUp    component2 = transform.GetComponent <PickUp>();
                    if (component2)
                    {
                        component2._destroyTarget = component2.gameObject;
                        if (component2._myPickUp)
                        {
                            UnityEngine.Object.Destroy(component2._myPickUp);
                        }
                        if (component2._sheen)
                        {
                            UnityEngine.Object.Destroy(component2._sheen);
                        }
                        UnityEngine.Object.Destroy(component2.gameObject);
                    }
                }
            }
            finally
            {
                IDisposable disposable;
                if ((disposable = (enumerator as IDisposable)) != null)
                {
                    disposable.Dispose();
                }
            }
        }
    }
Ejemplo n.º 12
0
 private void BurnPoint(FireDamagePoint firePoint)
 {
     ParticleSystem particleSystem = PoolManager.Pools["Particles"].Spawn(this.FireParticleSystem, base.transform.TransformPoint(firePoint.Position), Quaternion.identity);
     if (particleSystem != null)
     {
         firePoint.isBurning = true;
         firePoint.particleSystem = particleSystem.GetComponent<FireParticle>();
         firePoint.particleSystem.MyFuel = this.MyFuel;
         firePoint.particleSystem.Parent = this;
         if (this.flareUpParameter != null)
         {
             UnityUtil.ERRCHECK(this.flareUpParameter.setValue(1f));
             UnityUtil.ERRCHECK(this.flareUpParameter.setValue(0f));
         }
     }
 }