public override void CustomDraw(SpriteBatch spriteBatch) { Texture2D texture = ParticleHandler.GetTexture(Type); var drawFrame = new Rectangle(0, _frame * texture.Height / 2, texture.Width, texture.Height / 2); Effect effect = SpiritMod.ShaderDict["PrimitiveTextureMap"]; effect.Parameters["uTexture"].SetValue(SpiritMod.Instance.GetTexture("NPCs/Boss/Occultist/SoulTrail")); Vector2[] vertices = _chain.VerticesArray(); vertices.IterateArray(delegate(ref Vector2 vertex, int index, float progress) { IterateVerticesSine(ref vertex, progress); }); var strip = new PrimitiveStrip { Color = Color.White * _opacity, Width = 13 * Scale, PositionArray = vertices, TaperingType = StripTaperType.None, }; PrimitiveRenderer.DrawPrimitiveShape(strip, effect); var origin = new Vector2(drawFrame.Width / 2, drawFrame.Height); spriteBatch.Draw(texture, _chain.StartPosition - Main.screenPosition, drawFrame, Color.White * _opacity, Rotation, origin, Scale, SpriteEffects.None, 0); Texture2D bloom = SpiritMod.Instance.GetTexture("Effects/Ripple"); spriteBatch.Draw(bloom, _chain.StartPosition - Main.screenPosition, null, Color.Red * _opacity, 0, bloom.Size() / 2, 0.75f, SpriteEffects.None, 0); }
public override bool PreDraw(SpriteBatch spriteBatch, Color lightColor) { if (_chain != null) { Effect effect = SpiritMod.ShaderDict["PrimitiveTextureMap"]; effect.Parameters["uTexture"].SetValue(mod.GetTexture("NPCs/Boss/Occultist/SoulTrail")); Vector2[] vertices = _chain.VerticesArray(); vertices.IterateArray(delegate(ref Vector2 vertex, int index, float progress) { IterateVerticesSine(ref vertex, progress); }); var strip = new PrimitiveStrip { Color = Color.White * projectile.Opacity, Width = 13 * projectile.scale, PositionArray = vertices, TaperingType = StripTaperType.None, }; PrimitiveRenderer.DrawPrimitiveShape(strip, effect); Texture2D projTexture = Main.projectileTexture[projectile.type]; var origin = new Vector2(projectile.DrawFrame().Width / 2, projectile.DrawFrame().Height + 2); spriteBatch.Draw(projTexture, _chain.StartPosition - Main.screenPosition, projectile.DrawFrame(), projectile.GetAlpha(Color.White), _chain.StartRotation + MathHelper.PiOver2, origin, projectile.scale, SpriteEffects.None, 0); } return(false); }