private void HandleBlinking(int i, float dt, Entity bombEntity, Bomb bomb, BombBlink bombBlink, MeshInstanceRenderer bombLook) { BombAsset bombAsset = BombariaBootstrap.BombManager.GetBombAsset(bomb.Type); bombBlink.OverallTimer += dt; bombBlink.BlinkPeriodTimer += dt; if (bombBlink.OverallTimer < bombBlink.Duration025) { bombBlink.Period = bombBlink.Duration; } else if (bombBlink.OverallTimer >= bombBlink.Duration025 && bombBlink.OverallTimer < bombBlink.Duration05) { bombBlink.Period = bombBlink.DurationDiv4; } else if (bombBlink.OverallTimer >= bombBlink.Duration05 && bombBlink.OverallTimer < bombBlink.Duration075) { bombBlink.Period = bombBlink.DurationDiv8; } else if (bombBlink.OverallTimer >= bombBlink.Duration075 && bombBlink.OverallTimer < bombBlink.Duration) { bombBlink.Period = bombBlink.DurationDiv16; } else if (bombBlink.OverallTimer >= bombBlink.Duration) { return; } if (bombBlink.BlinkPeriodTimer >= bombBlink.Period) { bombBlink.BlinkPeriodTimer = 0; MeshInstanceRenderer newLook; if (bombLook.Equals(bombAsset.IdleLook)) { newLook = bombAsset.BlinkLook; } else if (bombLook.Equals(bombAsset.BlinkLook)) { newLook = bombAsset.IdleLook; } else { throw new System.Exception("Undefined blinking behavior occurred"); } PostUpdateCommands.RemoveComponent <MeshInstanceRenderer>(bombEntity); PostUpdateCommands.AddSharedComponent(bombEntity, newLook); } bombBlinkData.BombBlink[i] = bombBlink; }