public static void AddExplosion(Vector3 Position, float radius, float intensity, float duration) { if (radius <= 0f) { radius = 1f; } Explosion newExp = new Explosion() { duration = 2.25f, pos = Position }; if (ExplosionManager.universeScreen.viewState == UniverseScreen.UnivScreenState.ShipView) { newExp.light = new PointLight(); newExp.Radius = radius; newExp.light.World = Matrix.Identity * Matrix.CreateTranslation(Position); newExp.light.Position = Position; newExp.light.Radius = radius; newExp.light.ObjectType = ObjectType.Dynamic; newExp.light.DiffuseColor = new Vector3(0.9f, 0.8f, 0.7f); newExp.light.Intensity = intensity; newExp.light.Enabled = true; lock (GlobalStats.ObjectManagerLocker) { ExplosionManager.universeScreen.ScreenManager.inter.LightManager.Submit(newExp.light); } } switch ((int)RandomMath2.RandomBetween(0f, 2f)) { case 0: { newExp.AnimationTexture = "sd_explosion_12a_cc/sd_explosion_12a_cc_00000"; newExp.AnimationBasePath = "sd_explosion_12a_cc/sd_explosion_12a_cc_"; break; } case 1: { newExp.AnimationTexture = "sd_explosion_14a_cc/sd_explosion_14a_cc_00000"; newExp.AnimationBasePath = "sd_explosion_14a_cc/sd_explosion_14a_cc_"; break; } case 2: { newExp.AnimationTexture = "sd_explosion_07a_cc/sd_explosion_07a_cc_00000"; newExp.AnimationBasePath = "sd_explosion_07a_cc/sd_explosion_07a_cc_00000"; break; } } newExp.Rotation = (float)RandomMath2.RandomBetween(0f, 6.28318548f); lock (GlobalStats.ExplosionLocker) { ExplosionManager.ExplosionList.Add(newExp); } }
public static void AddExplosion(Vector3 Position, float radius, float intensity, float duration, bool Shockwave) { if (radius == 0f) { radius = 1f; } Explosion newExp = new Explosion() { hasShockwave = Shockwave, pos = Position, duration = duration }; if (ExplosionManager.universeScreen.viewState == UniverseScreen.UnivScreenState.ShipView) { newExp.light = new PointLight(); newExp.Radius = radius; newExp.light.World = Matrix.Identity * Matrix.CreateTranslation(Position); newExp.light.Position = Position; newExp.light.Radius = radius; newExp.light.ObjectType = ObjectType.Dynamic; newExp.light.DiffuseColor = new Vector3(0.9f, 0.8f, 0.7f); newExp.light.Intensity = intensity; newExp.light.Enabled = true; lock (GlobalStats.ObjectManagerLocker) { ExplosionManager.universeScreen.ScreenManager.inter.LightManager.Submit(newExp.light); } } lock (GlobalStats.ExplosionLocker) { ExplosionManager.ExplosionList.Add(newExp); } }