示例#1
0
        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();
        }