Fixed water dust particles "warping" around when moving the camera
This commit is contained in:
@@ -136,16 +136,17 @@ namespace Barotrauma
|
|||||||
SamplerState.LinearWrap, DepthStencilState.Default, null, null,
|
SamplerState.LinearWrap, DepthStencilState.Default, null, null,
|
||||||
cam.Transform);
|
cam.Transform);
|
||||||
|
|
||||||
Vector2 origin = new Vector2(cam.WorldView.X, -cam.WorldView.Y);
|
|
||||||
Vector2 offset = -origin + dustOffset;
|
|
||||||
while (offset.X <= -1024.0f) offset.X += 1024.0f;
|
|
||||||
while (offset.X > 0.0f) offset.X -= 1024.0f;
|
|
||||||
while (offset.Y <= -1024.0f) offset.Y += 1024.0f;
|
|
||||||
while (offset.Y > 0.0f) offset.Y -= 1024.0f;
|
|
||||||
|
|
||||||
if (backgroundSpriteManager != null) backgroundSpriteManager.DrawSprites(spriteBatch, cam);
|
if (backgroundSpriteManager != null) backgroundSpriteManager.DrawSprites(spriteBatch, cam);
|
||||||
if (backgroundCreatureManager != null) backgroundCreatureManager.Draw(spriteBatch);
|
if (backgroundCreatureManager != null) backgroundCreatureManager.Draw(spriteBatch);
|
||||||
|
|
||||||
|
Rectangle srcRect = new Rectangle(0, 0, 2048, 2048);
|
||||||
|
Vector2 origin = new Vector2(cam.WorldView.X, -cam.WorldView.Y);
|
||||||
|
Vector2 offset = -origin + dustOffset;
|
||||||
|
while (offset.X <= -srcRect.Width) offset.X += srcRect.Width;
|
||||||
|
while (offset.X > 0.0f) offset.X -= srcRect.Width;
|
||||||
|
while (offset.Y <= -srcRect.Height) offset.Y += srcRect.Height;
|
||||||
|
while (offset.Y > 0.0f) offset.Y -= srcRect.Height;
|
||||||
for (int i = 0; i < 4; i++)
|
for (int i = 0; i < 4; i++)
|
||||||
{
|
{
|
||||||
float scale = 1.0f - i * 0.2f;
|
float scale = 1.0f - i * 0.2f;
|
||||||
@@ -156,12 +157,11 @@ namespace Barotrauma
|
|||||||
if (alpha <= 0.0f) continue;
|
if (alpha <= 0.0f) continue;
|
||||||
|
|
||||||
Vector2 offsetS = offset * scale + new Vector2(cam.WorldView.Width, cam.WorldView.Height) * (1.0f - scale) * 0.5f - new Vector2(256.0f * i);
|
Vector2 offsetS = offset * scale + new Vector2(cam.WorldView.Width, cam.WorldView.Height) * (1.0f - scale) * 0.5f - new Vector2(256.0f * i);
|
||||||
while (offsetS.X <= -1024.0f*scale) offsetS.X += 1024.0f*scale;
|
while (offsetS.X <= -srcRect.Width * scale) offsetS.X += srcRect.Width * scale;
|
||||||
while (offsetS.X > 0.0f) offsetS.X -= 1024.0f*scale;
|
while (offsetS.X > 0.0f) offsetS.X -= srcRect.Width * scale;
|
||||||
while (offsetS.Y <= -1024.0f*scale) offsetS.Y += 1024.0f*scale;
|
while (offsetS.Y <= -srcRect.Height * scale) offsetS.Y += srcRect.Height * scale;
|
||||||
while (offsetS.Y > 0.0f) offsetS.Y -= 1024.0f*scale;
|
while (offsetS.Y > 0.0f) offsetS.Y -= srcRect.Height * scale;
|
||||||
|
|
||||||
Rectangle srcRect = new Rectangle(0, 0, 2048, 2048);
|
|
||||||
dustParticles.DrawTiled(spriteBatch, origin + offsetS, new Vector2(cam.WorldView.Width - offsetS.X, cam.WorldView.Height - offsetS.Y), Vector2.Zero, srcRect, Color.White * alpha, new Vector2(scale));
|
dustParticles.DrawTiled(spriteBatch, origin + offsetS, new Vector2(cam.WorldView.Width - offsetS.X, cam.WorldView.Height - offsetS.Y), Vector2.Zero, srcRect, Color.White * alpha, new Vector2(scale));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user