correct matrix

This commit is contained in:
yosh 2023-05-24 21:13:50 -05:00
parent 1aa8027a13
commit 58df89a5af
1 changed files with 20 additions and 8 deletions

View File

@ -251,15 +251,18 @@ namespace Celeste.Mod.AvaliSkin {
// apply the recolor effect to the player
spriteRecolor(color, PlayerConfig.LightBody, PlayerConfig.DarkBody);
DynData<SpriteBatch> spriteData = new DynData<SpriteBatch>(Draw.SpriteBatch);
Matrix matrix = (Matrix)spriteData["transformMatrix"];
Draw.SpriteBatch.End();
Draw.SpriteBatch.Begin(SpriteSortMode.Deferred, BlendState.AlphaBlend, SamplerState.PointWrap, DepthStencilState.None, RasterizerState.CullNone, FxRecolor, (self.Scene as Level).GameplayRenderer.Camera.Matrix);
Draw.SpriteBatch.Begin(SpriteSortMode.Deferred, BlendState.AlphaBlend, SamplerState.PointWrap, DepthStencilState.None, RasterizerState.CullNone, FxRecolor, matrix);
// render Avali...
orig(self);
// ... and reset rendering to stop using the effect
Draw.SpriteBatch.End();
Draw.SpriteBatch.Begin(SpriteSortMode.Deferred, BlendState.AlphaBlend, SamplerState.PointWrap, DepthStencilState.None, RasterizerState.CullNone, null, (self.Scene as Level).GameplayRenderer.Camera.Matrix);
Draw.SpriteBatch.Begin(SpriteSortMode.Deferred, BlendState.AlphaBlend, SamplerState.PointWrap, DepthStencilState.None, RasterizerState.CullNone, null, matrix);
} else if (self.Scene != null) {
trySpriteSwap(sprite, false);
orig(self);
@ -296,15 +299,18 @@ namespace Celeste.Mod.AvaliSkin {
// apply the recolor effect to the sprite
spriteRecolor(color, PlayerConfig.LightBody, PlayerConfig.DarkBody);
DynData<SpriteBatch> spriteData = new DynData<SpriteBatch>(Draw.SpriteBatch);
Matrix matrix = (Matrix)spriteData["transformMatrix"];
Draw.SpriteBatch.End();
Draw.SpriteBatch.Begin(SpriteSortMode.Deferred, BlendState.AlphaBlend, SamplerState.PointWrap, DepthStencilState.None, RasterizerState.CullNone, FxRecolor, (self.Scene as Level).GameplayRenderer.Camera.Matrix);
Draw.SpriteBatch.Begin(SpriteSortMode.Deferred, BlendState.AlphaBlend, SamplerState.PointWrap, DepthStencilState.None, RasterizerState.CullNone, FxRecolor, matrix);
// render the sprite...
orig(self);
// ... and reset rendering to stop using the effect
Draw.SpriteBatch.End();
Draw.SpriteBatch.Begin(SpriteSortMode.Deferred, BlendState.AlphaBlend, SamplerState.PointWrap, DepthStencilState.None, RasterizerState.CullNone, null, (self.Scene as Level).GameplayRenderer.Camera.Matrix);
Draw.SpriteBatch.Begin(SpriteSortMode.Deferred, BlendState.AlphaBlend, SamplerState.PointWrap, DepthStencilState.None, RasterizerState.CullNone, null, matrix);
} else {
trySpriteSwap(self, false);
orig(self);
@ -376,15 +382,18 @@ namespace Celeste.Mod.AvaliSkin {
// apply the recolor effect to the ghost
spriteRecolor(config.GetColor(ghost), config.LightBody, config.DarkBody);
DynData<SpriteBatch> spriteData = new DynData<SpriteBatch>(Draw.SpriteBatch);
Matrix matrix = (Matrix)spriteData["transformMatrix"];
Draw.SpriteBatch.End();
Draw.SpriteBatch.Begin(SpriteSortMode.Deferred, BlendState.AlphaBlend, SamplerState.PointWrap, DepthStencilState.None, RasterizerState.CullNone, FxRecolor, (self.Scene as Level).GameplayRenderer.Camera.Matrix);
Draw.SpriteBatch.Begin(SpriteSortMode.Deferred, BlendState.AlphaBlend, SamplerState.PointWrap, DepthStencilState.None, RasterizerState.CullNone, FxRecolor, matrix);
// render the ghost...
orig(self);
// ... and reset rendering to stop using the effect
Draw.SpriteBatch.End();
Draw.SpriteBatch.Begin(SpriteSortMode.Deferred, BlendState.AlphaBlend, SamplerState.PointWrap, DepthStencilState.None, RasterizerState.CullNone, null, (self.Scene as Level).GameplayRenderer.Camera.Matrix);
Draw.SpriteBatch.Begin(SpriteSortMode.Deferred, BlendState.AlphaBlend, SamplerState.PointWrap, DepthStencilState.None, RasterizerState.CullNone, null, matrix);
}
@ -404,15 +413,18 @@ namespace Celeste.Mod.AvaliSkin {
PlayerConfig.DarkBody
);
DynData<SpriteBatch> spriteData = new DynData<SpriteBatch>(Draw.SpriteBatch);
Matrix matrix = (Matrix)spriteData["transformMatrix"];
Draw.SpriteBatch.End();
Draw.SpriteBatch.Begin(SpriteSortMode.Deferred, BlendState.AlphaBlend, SamplerState.PointWrap, DepthStencilState.None, RasterizerState.CullNone, FxRecolor, (self.Scene as Level).GameplayRenderer.Camera.Matrix);
Draw.SpriteBatch.Begin(SpriteSortMode.Deferred, BlendState.AlphaBlend, SamplerState.PointWrap, DepthStencilState.None, RasterizerState.CullNone, FxRecolor, matrix);
// render the dead Avali :(
orig(self);
// ... and reset rendering to stop using the effect
Draw.SpriteBatch.End();
Draw.SpriteBatch.Begin(SpriteSortMode.Deferred, BlendState.AlphaBlend, SamplerState.PointWrap, DepthStencilState.None, RasterizerState.CullNone, null, (self.Scene as Level).GameplayRenderer.Camera.Matrix);
Draw.SpriteBatch.Begin(SpriteSortMode.Deferred, BlendState.AlphaBlend, SamplerState.PointWrap, DepthStencilState.None, RasterizerState.CullNone, null, matrix);
} else if (self.Scene != null) {
trySpriteSwap(sprite, false);
orig(self);