public void Draw(SpriteBatch spriteBatch, RenderTarget2D target, Effects effects, Matrix transform) { effects.spirit.Parameters["visibility"].SetValue(1 - player.Solidity); effects.solid.Parameters["colorDrain"].SetValue(1 - player.Solidity); ActiveRoom.DrawBackground(spriteBatch, target, effects.bg, transform); spriteBatch.Begin(SpriteSortMode.Deferred, BlendState.NonPremultiplied, null, null, null, effects.spirit, transform); ActiveRoom.DrawSpiritThings(spriteBatch); if (player.IsGhost) { player.Draw(spriteBatch); } spriteBatch.End(); spriteBatch.Begin(SpriteSortMode.Deferred, null, null, null, null, effects.solid, transform); ActiveRoom.DrawSolidThings(spriteBatch); if (!player.IsGhost) { player.Draw(spriteBatch); } if (corpse != null) { corpse.Draw(spriteBatch); } spriteBatch.End(); spriteBatch.Begin(SpriteSortMode.Deferred, null, null, null, null, null, transform); foreach (var emitter in ActiveRoom.particleEffects) { emitter.Draw(spriteBatch); } spriteBatch.End(); }