public override bool PreDraw(SpriteBatch spriteBatch, Color lightColor) { // need to draw sprites manually for some reason float r = projectile.rotation; Vector2 pos = projectile.Center; SpriteEffects effects = projectile.velocity.X < 0 ? SpriteEffects.FlipVertically : 0; Texture2D texture = GetTexture(Texture); int frameHeight = texture.Height / Main.projFrames[projectile.type]; Rectangle bounds = new Rectangle(0, projectile.frame * frameHeight, texture.Width, frameHeight); Vector2 origin = new Vector2(bounds.Width / 2, bounds.Height / 2); // motion blur if (isDashing) { // lifted from ExampleMod's ExampleBullet for (int k = 0; k < blurHelper.BlurLength; k++) { if (!blurHelper.GetBlurPosAndColor(k, lightColor, out Vector2 blurPos, out Color blurColor)) { break; } blurPos = blurPos - Main.screenPosition + origin; spriteBatch.Draw(texture, blurPos, bounds, blurColor, r, origin, 1, effects, 0); } } // regular version spriteBatch.Draw(texture, pos - Main.screenPosition, bounds, lightColor, r, origin, 1, effects, 0); return(false); }
public override bool PreDraw(SpriteBatch spriteBatch, Color lightColor) { Texture2D texture = Main.projectileTexture[Projectile.type]; int frameHeight = texture.Height / Main.projFrames[Projectile.type]; for (int k = 0; k < blurDrawer.BlurLength; k++) { if (!blurDrawer.GetBlurPosAndColor(k, lightColor, out Vector2 blurPos, out Color blurColor)) { break; } Rectangle bounds = new Rectangle(0, Projectile.frame * frameHeight, texture.Width, frameHeight); Vector2 origin = new Vector2(bounds.Width / 2, bounds.Height / 2); blurPos -= Main.screenPosition; spriteBatch.Draw(texture, blurPos, bounds, blurColor, Projectile.rotation, origin, 1, 0, 0); } return(false); }
// for layering purposes, this needs to be done manually // Called from TerrarianEnt.PreDraw public void SubPreDraw(SpriteBatch spriteBatch, Color lightColor) { // this is a lot of sprite drawing // lifted from ExampleMod's ExampleBullet int attackFrame = animationFrame - targetStartFrame; if (targetStartFrame != default && attackFrame > windupFrames) { for (int k = 0; k < blurHelper.BlurLength; k++) { if (!blurHelper.GetBlurPosAndColor(k, lightColor, out Vector2 blurPos, out Color blurColor)) { break; } scHelper.positionOverride = blurPos; scHelper.Draw(spriteBatch, blurColor * 0.25f); } } scHelper.positionOverride = null; scHelper.Draw(spriteBatch, lightColor); }
public override bool PreDraw(SpriteBatch spriteBatch, Color lightColor) { float r = projectile.rotation; Vector2 pos = projectile.Center; Texture2D texture = Main.projectileTexture[projectile.type]; for (int i = 0; i < blurDrawer.BlurLength; i++) { if (!blurDrawer.GetBlurPosAndColor(i, Color.White, out Vector2 blurPos, out Color blurColor)) { break; } float scale = MathHelper.Lerp(0.75f, 0.25f, i / (float)blurDrawer.BlurLength); spriteBatch.Draw(texture, blurPos - Main.screenPosition, texture.Bounds, blurColor * 0.5f, r, texture.Bounds.Center(), scale, 0, 0); } spriteBatch.Draw(texture, pos - Main.screenPosition, texture.Bounds, Color.White, r, texture.Bounds.Center(), 0.75f, 0, 0); return(false); }
public override bool PreDraw(SpriteBatch spriteBatch, Color lightColor) { if (usingSpecial) { if (isDashing) { for (int k = 0; k < blurHelper.BlurLength; k++) { if (!blurHelper.GetBlurPosAndColor(k, lightColor, out Vector2 blurPos, out Color blurColor)) { break; } DrawHorse(spriteBatch, blurColor, blurPos); } } } else { base.PreDraw(spriteBatch, lightColor); } return(true); }