public static void RaonLauncherProjectile2ActiveTornado(Vector2 position) { Flipbook fb = new Flipbook(position, new Vector2(15.5f, 18.5f), 31, 29, "Graphics/Tank/RaonLauncherMineS2/CharacterSpritesheet", new AnimationInstance() { StartingFrame = 20, EndingFrame = 36, TimePerFrame = 1 / 10f }, DepthParameter.ProjectileSFX, 0); SpecialEffect se = new SpecialEffect(fb, 0); float positionMultiplier = 0; se.UpdateAction += (specialEffect, gameTime) => { if (Topography.IsNotInsideMapBoundaries(se.Flipbook.Position)) { SpecialEffectHandler.Remove(se); } se.Flipbook.Position -= new Vector2(0, positionMultiplier); se.Flipbook.Rotation += (float)gameTime.ElapsedGameTime.TotalSeconds * positionMultiplier * positionMultiplier * MathHelper.PiOver2; positionMultiplier += (float)gameTime.ElapsedGameTime.TotalSeconds; }; SpecialEffectHandler.Add(se); }
public Particle(Flipbook flipbook, Vector2 trajectory, Vector2 windInfluence, ParticleUpdateConfiguration particleConfiguration) : base(flipbook) { alpha = 1; if (particleConfiguration.Rotate) { rotatingSpeed = RandomValue * Parameter.GroundParticleMaximumRotatingSpeed; } if (particleConfiguration.SetScale) { scalingFactor = RandomValue * Parameter.GroundParticleMaximumScalingFactor; } if (particleConfiguration.Fade) { alphaFactor = Parameter.GroundParticleInitialAlphaFactor + (float)Parameter.Random.NextDouble() * 5; } float randomValue = (float)Parameter.Random.NextDouble(); float yAccFactor = (particleConfiguration.UseYAcceleration) ? Parameter.GroundParticleInitialYAcceleration - windInfluence.Y : 0; float xAccFactor = (particleConfiguration.UseXAcceleration) ? windInfluence.X : 0; yMovement = new AcceleratedMovement(); yMovement.Preset(Parameter.GroundParticleInitialYSpeed + (randomValue * Parameter.GroundParticleMaximumYSpeed * trajectory.Y), yAccFactor); xMovement = new AcceleratedMovement(); xMovement.Preset(randomValue * Parameter.GroundParticleMaximumXSpeed * trajectory.X, xAccFactor); initialPosition = flipbook.Position; }
private static void CreateFlipbook(Flipbook flipbook, Vector2 Position, Vector2 Pivot, int SpriteWidth, int SpriteHeight, string Texture2DPath, List <AnimationInstance> AnimationCycle, float LayerDepth, float Rotation = 0) { flipbook.SpriteWidth = SpriteWidth; flipbook.SpriteHeight = SpriteHeight; flipbook.Texture2DPath = Texture2DPath; flipbook.Rotation = Rotation; flipbook.AnimationCycle = AnimationCycle; flipbook.Position = Position; flipbook.Pivot = Pivot; flipbook.currentAnimatedInstanceIndex = 0; flipbook.repeatAnimationCycle = false; flipbook.LayerDepth = LayerDepth; flipbook.Effect = SpriteEffects.None; flipbook.Texture2D = AssetHandler.Instance.RequestTexture(Texture2DPath); flipbook.FlipbookAnimationList = new List <FlipbookAnimation>(); flipbook.CreateFlipbookInstances(); flipbook.framesPerLine = flipbook.Texture2D.Width / SpriteWidth; }
public static void TricoProjectile1Explosion(Vector2 position, float rotation) { Flipbook fb = new Flipbook(position, new Vector2(90f, 100f), 192, 192, "Graphics/Special Effects/Tank/Trico/Flame1", new AnimationInstance() { StartingFrame = 0, EndingFrame = 19, TimePerFrame = 1 / 30f }, DepthParameter.ProjectileSFX, rotation); SpecialEffect se = new SpecialEffect(fb, 1); SpecialEffectHandler.Add(se); }
public static void TricoProjectile3Explosion(Vector2 position) { Flipbook fb = new Flipbook(position, new Vector2(179f, 197f), 311, 313, "Graphics/Special Effects/Tank/Trico/Flame3", new AnimationInstance() { StartingFrame = 0, EndingFrame = 29, TimePerFrame = 1 / 20f }, DepthParameter.ProjectileSFX, 0); SpecialEffect se = new SpecialEffect(fb, 1); SpecialEffectHandler.Add(se); }
public static void TurtleProjectile3Explosion(Vector2 position, float rotation) { Flipbook fb = new Flipbook(position, new Vector2(90f, 93f), 159, 173, "Graphics/Special Effects/Tank/Turtle/Flame3", new AnimationInstance() { StartingFrame = 0, EndingFrame = 28, TimePerFrame = 1 / 30f }, DepthParameter.ProjectileSFX, rotation); SpecialEffect se = new SpecialEffect(fb, 1); SpecialEffectHandler.Add(se); }
public static void TurtleProjectile3Division(Vector2 position, float rotation) { Flipbook fb = new Flipbook(position, new Vector2(78f, 65f), 186, 129, "Graphics/Special Effects/Tank/Turtle/Flame3Divide", new AnimationInstance() { StartingFrame = 0, EndingFrame = 10, TimePerFrame = 1 / 30f }, DepthParameter.ProjectileSFX, rotation); SpecialEffect se = new SpecialEffect(fb, 1); SpecialEffectHandler.Add(se); }
public static void RaonLauncherProjectile3Explosion(Vector2 position) { Flipbook fb = new Flipbook(position, new Vector2(94, 95), 172, 182, "Graphics/Special Effects/Tank/RaonLauncher/Flame3", new AnimationInstance() { StartingFrame = 0, EndingFrame = 29, TimePerFrame = 1 / 30f }, DepthParameter.ProjectileSFX, (float)Parameter.Random.NextDouble() * MathHelper.TwoPi); SpecialEffect se = new SpecialEffect(fb, 1); SpecialEffectHandler.Add(se); }
public static void IceProjectile3Explosion(Vector2 position) { Flipbook fb = new Flipbook(position, new Vector2(185, 187), 370, 374, "Graphics/Special Effects/Tank/Ice/Flame3", new AnimationInstance() { StartingFrame = 0, EndingFrame = 30, TimePerFrame = 1 / 30f }, DepthParameter.ProjectileSFX); SpecialEffect se = new SpecialEffect(fb, 1); SpecialEffectHandler.Add(se); }
public static void MageProjectile2Explosion(Vector2 position, float rotation) { Flipbook fb = new Flipbook(position, new Vector2(82, 82), 143, 142, "Graphics/Special Effects/Tank/Mage/Flame2", new AnimationInstance() { StartingFrame = 0, EndingFrame = 17, TimePerFrame = 1 / 30f }, DepthParameter.ProjectileSFX, rotation); SpecialEffect se = new SpecialEffect(fb, 1); SpecialEffectHandler.Add(se); }
public static SpecialEffect DragonProjectile1Explosion(Vector2 position, float rotation, float layerDepth = DepthParameter.ProjectileSFX) { Flipbook fb = new Flipbook(position, new Vector2(94, 92.5f), 188, 185, "Graphics/Special Effects/Tank/Dragon/Flame1", new AnimationInstance() { StartingFrame = 0, EndingFrame = 30, TimePerFrame = 1 / 30f }, layerDepth, rotation); SpecialEffect se = new SpecialEffect(fb, 1); SpecialEffectHandler.Add(se); return(se); }
public override void Update(GameTime gameTime) { base.Update(gameTime); float elapsedTime = (float)gameTime.ElapsedGameTime.TotalSeconds; Flipbook.Rotation += rotatingSpeed * elapsedTime; Flipbook.Scale += Vector2.One * scalingFactor * elapsedTime; Flipbook.SetTransparency(alpha -= alphaFactor * elapsedTime); xMovement.RefreshCurrentPosition(elapsedTime); yMovement.RefreshCurrentPosition(elapsedTime); Flipbook.Position = initialPosition + new Vector2(xMovement.CurrentPosition, yMovement.CurrentPosition); }
public static SpecialEffect RaonLauncherProjectile1(Vector2 position, float rotation) { Flipbook fb = new Flipbook( position, new Vector2(19, 21), 38, 42, "Graphics/Tank/RaonLauncher/Bullet1", new AnimationInstance() { StartingFrame = 0, EndingFrame = 39, TimePerFrame = 0f }, DepthParameter.Projectile, rotation); SpecialEffect se = new SpecialEffect(fb, 0); return(se); }
private static void LowHealthSmokeParticle(Vector2 position, string smokePath) { Flipbook fb = new Flipbook(position, new Vector2(16, 16), 32, 32, smokePath, new AnimationInstance() { StartingFrame = 0, EndingFrame = 7, TimePerFrame = 1 / 15f }, DepthParameter.ProjectileSFX, (float)Parameter.Random.NextDouble() * MathHelper.TwoPi); float density = (float)(1 / 3f + 2 * Parameter.Random.NextDouble() / 3); fb.SetTransparency(density); fb.Scale *= density; SpecialEffect se = new SpecialEffect(fb, 1); MatchMetadata mm = LevelScene.MatchMetadata; Vector2 posFactor = -Vector2.UnitY * 2 + Vector2.Transform( Vector2.UnitX, Matrix.CreateRotationZ( mm.WindAngleRadians + MathHelper.ToRadians( (0.5f - (float)Parameter.Random.NextDouble()) * 30)) * mm.WindForce / 5); if (Math.Abs(posFactor.Y) < 1) { posFactor = new Vector2(posFactor.X, (posFactor.Y < 0) ? -1 : 1); } float rotationFactor = (mm.WindForce / 10) * (0.5f - (float)Parameter.Random.NextDouble()); float scaleFactor = (float)Parameter.Random.NextDouble(); se.UpdateAction += (specialEffect, gameTime) => { float elapsedTime = (float)gameTime.ElapsedGameTime.TotalSeconds; se.Flipbook.Position += posFactor; se.Flipbook.Rotation += rotationFactor; se.Flipbook.Scale *= 1 + scaleFactor * elapsedTime * 2; }; SpecialEffectHandler.Add(se); }
private static void ThorShotColorBase(Vector2 position, Color baseColor, float scale, float rotation) { Flipbook fb = new Flipbook(position, new Vector2(8, 128), 16, 256, "Graphics/Entity/Thor/ThorLaser", new AnimationInstance(), DepthParameter.ProjectileSFXBase, rotation); fb.Scale = new Vector2(3, scale); SpecialEffect se = new SpecialEffect(fb, 1f); float elapsedTime = 1f; se.UpdateAction += (specialEffect, gameTime) => { elapsedTime -= (float)gameTime.ElapsedGameTime.TotalSeconds; se.Flipbook.Color = baseColor * elapsedTime; }; SpecialEffectHandler.Add(se); }
private static void ThorShotBase(Vector2 position, float scale, float rotation) { Flipbook fb = new Flipbook(position, new Vector2(8, 128), 16, 256, "Graphics/Entity/Thor/ThorLaser", new AnimationInstance(), DepthParameter.ProjectileSFX, rotation); Vector2 originalScale = new Vector2(3, scale); fb.Scale = originalScale; SpecialEffect se = new SpecialEffect(fb, 1f); float transparency = 1f; se.UpdateAction += (specialEffect, gameTime) => { transparency -= (float)gameTime.ElapsedGameTime.TotalSeconds; se.Flipbook.SetTransparency(transparency * 2); se.Flipbook.Scale = new Vector2(se.Flipbook.Scale.X * transparency, originalScale.Y - ((originalScale.Y * (1 - transparency)) / (originalScale.Y * 2))); }; SpecialEffectHandler.Add(se); }
public static void LightningProjectile3Explosion(Vector2 position, float rotation) { Flipbook fb = new Flipbook(position, new Vector2(196, 193), 324, 326, "Graphics/Special Effects/Tank/Lightning/Flame3", new AnimationInstance() { StartingFrame = 0, EndingFrame = 20, TimePerFrame = 1 / 20f }, DepthParameter.ProjectileSFX, rotation + MathHelper.PiOver2); SpecialEffect se = new SpecialEffect(fb, 1); // float transparency = 1f; se.UpdateAction += (specialEffect, gameTime) => { se.Flipbook.Rotation -= MathHelper.TwoPi * (float)gameTime.ElapsedGameTime.TotalSeconds / 25; //transparency -= (float)gameTime.ElapsedGameTime.TotalSeconds; //se.Flipbook.SetTransparency(transparency); }; SpecialEffectHandler.Add(se); }
public static void MageProjectile3Explosion(Vector2 position, float rotation) { Flipbook fb = new Flipbook(position, new Vector2(192.5f, 192), 385, 384, "Graphics/Special Effects/Tank/Mage/Flame3", new AnimationInstance() { StartingFrame = 0, EndingFrame = 30, TimePerFrame = 1 / 30f }, DepthParameter.ProjectileSFX, rotation); SpecialEffect se = new SpecialEffect(fb, 1); float transparency = 1f; se.UpdateAction += (specialEffect, gameTime) => { se.Flipbook.Rotation += MathHelper.Pi * (float)gameTime.ElapsedGameTime.TotalSeconds; transparency -= (float)gameTime.ElapsedGameTime.TotalSeconds; se.Flipbook.SetTransparency(transparency); }; SpecialEffectHandler.Add(se); }
public static void HitEffect(Vector2 position, int frameIndex, float rotation) { Flipbook fb = new Flipbook(position, new Vector2(16, 16), 32, 32, "Graphics/Special Effects/General/Hit", new AnimationInstance() { StartingFrame = frameIndex, EndingFrame = frameIndex }, DepthParameter.ProjectileSFX, rotation + MathHelper.PiOver2); SpecialEffect se = new SpecialEffect(fb, 1f); float scale = 0; se.UpdateAction += (specialEffect, gameTime) => { scale += (float)gameTime.ElapsedGameTime.TotalSeconds * 4; float tScale = (float)Math.Sin(scale); se.Flipbook.Scale = new Vector2(0.2f + tScale, tScale * 18); se.Flipbook.SetTransparency(1 - scale); }; SpecialEffectHandler.Add(se); }
public SpecialEffect(Flipbook flipbook) { Flipbook = flipbook; ceaseCondition = CeaseCondition.CustomFunction; }
public SpecialEffect(Flipbook flipbook, float timespan) { Flipbook = flipbook; this.timespan = timespan; ceaseCondition = CeaseCondition.Timespan; }
public SpecialEffect(Flipbook flipbook, int cicles) { Flipbook = flipbook; this.cicles = cicles; ceaseCondition = CeaseCondition.Cicles; }