Exemplo n.º 1
0
 public override void EffectTick(GameActor actor, RuntimeGameActorEffectData effectData)
 {
     base.EffectTick(actor, effectData);
     if (GameManager.Options.ShaderQuality == GameOptions.GenericHighMedLowOption.HIGH && effectData.actor && effectData.actor.specRigidbody.HitboxPixelCollider != null)
     {
         Vector2 unitBottomLeft = effectData.actor.specRigidbody.HitboxPixelCollider.UnitBottomLeft;
         Vector2 unitTopRight   = effectData.actor.specRigidbody.HitboxPixelCollider.UnitTopRight;
         this.m_emberCounter += 30f * BraveTime.DeltaTime;
         if (this.m_emberCounter > 1f)
         {
             int num = Mathf.FloorToInt(this.m_emberCounter);
             this.m_emberCounter -= (float)num;
             GlobalSparksDoer.DoRandomParticleBurst(num, unitBottomLeft, unitTopRight, new Vector3(1f, 1f, 0f), 120f, 0.75f, null, null, null, GlobalSparksDoer.SparksType.BLACK_PHANTOM_SMOKE);
         }
     }
     if (actor && actor.specRigidbody)
     {
         Vector2 unitDimensions = actor.specRigidbody.HitboxPixelCollider.UnitDimensions;
         Vector2 a    = unitDimensions / 2f;
         int     num2 = Mathf.RoundToInt((float)this.flameNumPerSquareUnit * 0.5f * Mathf.Min(30f, Mathf.Min(new float[]
         {
             unitDimensions.x *unitDimensions.y
         })));
         this.m_particleTimer += BraveTime.DeltaTime * (float)num2;
         if (this.m_particleTimer > 1f)
         {
             int           num3          = Mathf.FloorToInt(this.m_particleTimer);
             Vector2       vector        = actor.specRigidbody.HitboxPixelCollider.UnitBottomLeft;
             Vector2       vector2       = actor.specRigidbody.HitboxPixelCollider.UnitTopRight;
             PixelCollider pixelCollider = actor.specRigidbody.GetPixelCollider(ColliderType.Ground);
             if (pixelCollider != null && pixelCollider.ColliderGenerationMode == PixelCollider.PixelColliderGeneration.Manual)
             {
                 vector  = Vector2.Min(vector, pixelCollider.UnitBottomLeft);
                 vector2 = Vector2.Max(vector2, pixelCollider.UnitTopRight);
             }
             vector    += Vector2.Min(a * 0.15f, new Vector2(0.25f, 0.25f));
             vector2   -= Vector2.Min(a * 0.15f, new Vector2(0.25f, 0.25f));
             vector2.y -= Mathf.Min(a.y * 0.1f, 0.1f);
             GlobalSparksDoer.DoRandomParticleBurst(num3, vector, vector2, Vector3.zero, 0f, 0f, null, null, null, GlobalSparksDoer.SparksType.BLACK_PHANTOM_SMOKE);
             this.m_particleTimer -= Mathf.Floor(this.m_particleTimer);
         }
     }
     if (actor.IsGone)
     {
         effectData.elapsed = 10000f;
     }
     if ((actor.IsFalling || actor.IsGone) && effectData.vfxObjects != null && effectData.vfxObjects.Count > 0)
     {
         GameActorFireEffect.DestroyFlames(effectData);
     }
 }
Exemplo n.º 2
0
 public override void OnEffectRemoved(GameActor actor, RuntimeGameActorEffectData effectData)
 {
     base.OnEffectRemoved(actor, effectData);
     actor.healthHaver.OnPreDeath -= effectData.OnActorPreDeath;
     GameActorFireEffect.DestroyFlames(effectData);
 }