private void DrawAdditive(On.Terraria.Main.orig_DrawDust orig, Main self) { Main.spriteBatch.Begin(SpriteSortMode.Deferred, BlendState.Additive); foreach (var projectile in Main.projectile) { var modProjectile = projectile.modProjectile; if (modProjectile is IDrawAdditive && projectile.active) { (modProjectile as IDrawAdditive).DrawAdditive(Main.spriteBatch); } } foreach (var npc in Main.npc) { var modNPC = npc.modNPC; if (modNPC is IDrawAdditive && npc.active) { (modNPC as IDrawAdditive).DrawAdditive(Main.spriteBatch); } } Main.spriteBatch.End(); orig(self); }
private void DrawPrimitives(On.Terraria.Main.orig_DrawDust orig, Main self) { orig(self); if (Main.gameMenu) { return; } Main.graphics.GraphicsDevice.BlendState = BlendState.AlphaBlend; for (int k = 0; k < Main.maxProjectiles; k++) // Projectiles. { if (Main.projectile[k].active && Main.projectile[k].modProjectile is IDrawPrimitive) { (Main.projectile[k].modProjectile as IDrawPrimitive).DrawPrimitives(); } } for (int k = 0; k < Main.maxNPCs; k++) // NPCs. { if (Main.npc[k].active && Main.npc[k].modNPC is IDrawPrimitive) { (Main.npc[k].modNPC as IDrawPrimitive).DrawPrimitives(); } } }
//Borrowed because I know what this code does and I'm too lazy to re-write it myself, bleh static private void Main_DrawAdditive(On.Terraria.Main.orig_DrawDust orig, Main self) { orig(self); if (SGAConfigClient.Instance.SpecialBlending == false) { return; } Main.spriteBatch.Begin(default, BlendState.Additive, SamplerState.PointWrap, default, default, default, Main.GameViewMatrix.TransformationMatrix);
private void DrawParticles(On.Terraria.Main.orig_DrawDust orig, Main self) { Main.spriteBatch.Begin(SpriteSortMode.Deferred, BlendState.Additive); if (!Main.dedServ) { ParticleManager.Instance.DrawParticles(Main.spriteBatch); } Main.spriteBatch.End(); orig(self); }
private static void On_Terraria_Main_DrawDust(On.Terraria.Main.orig_DrawDust orig, Main self) { orig(self); Main.spriteBatch.Begin(SpriteSortMode.Deferred, BlendState.Additive, Main.DefaultSamplerState, DepthStencilState.None, Main.instance.Rasterizer, null, Main.GameViewMatrix.TransformationMatrix); { foreach (var proj in Main.projectile.ToList().FindAll(i => i.active && i.modProjectile is IDrawAdditive)) { try { (proj.modProjectile as IDrawAdditive).DrawAdditive(Main.spriteBatch); } catch (Exception e) { TimeLogger.DrawException(e); proj.active = false; } } } Main.spriteBatch.End(); }
private void DrawAdditive(On.Terraria.Main.orig_DrawDust orig, Main self) { orig(self); Main.spriteBatch.Begin(default, BlendState.Additive, SamplerState.PointWrap, default, default, default, Main.GameViewMatrix.ZoomMatrix);
private static void AddtiveCalls(On.Terraria.Main.orig_DrawDust orig, Main self) { AdditiveCallManager.DrawAdditiveCalls(Main.spriteBatch); orig(self); }