mirror of
https://github.com/AlexMacocian/MonoGame.Extended.git
synced 2026-07-16 07:29:29 +00:00
Add parallaxFactor in rendering logic.
This commit is contained in:
@@ -131,17 +131,18 @@ namespace MonoGame.Extended.Tiled.Renderers
|
||||
if (layer is TiledMapObjectLayer)
|
||||
return;
|
||||
|
||||
Draw(layer, Vector2.Zero, ref viewMatrix, ref projectionMatrix, effect, depth);
|
||||
Draw(layer, Vector2.Zero, Vector2.One, ref viewMatrix, ref projectionMatrix, effect, depth);
|
||||
}
|
||||
|
||||
private void Draw(TiledMapLayer layer, Vector2 parentOffset, ref Matrix viewMatrix, ref Matrix projectionMatrix, Effect effect, float depth)
|
||||
{
|
||||
private void Draw(TiledMapLayer layer, Vector2 parentOffset, Vector2 parentParallaxFactor, ref Matrix viewMatrix, ref Matrix projectionMatrix, Effect effect, float depth)
|
||||
{
|
||||
var offset = parentOffset + layer.Offset;
|
||||
var parallaxFactor = parentParallaxFactor * layer.ParallaxFactor;
|
||||
|
||||
if (layer is TiledMapGroupLayer groupLayer)
|
||||
{
|
||||
foreach (var subLayer in groupLayer.Layers)
|
||||
Draw(subLayer, offset, ref viewMatrix, ref projectionMatrix, effect, depth);
|
||||
Draw(subLayer, offset, parallaxFactor, ref viewMatrix, ref projectionMatrix, effect, depth);
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -152,9 +153,9 @@ namespace MonoGame.Extended.Tiled.Renderers
|
||||
if (tiledMapEffect == null)
|
||||
return;
|
||||
|
||||
// model-to-world transform
|
||||
tiledMapEffect.World = _worldMatrix;
|
||||
tiledMapEffect.View = viewMatrix;
|
||||
// model-to-world transform
|
||||
tiledMapEffect.World = _worldMatrix;
|
||||
tiledMapEffect.View = parallaxFactor == Vector2.One ? viewMatrix : IncludeParallax(viewMatrix, parallaxFactor);
|
||||
tiledMapEffect.Projection = projectionMatrix;
|
||||
|
||||
foreach (var layerModel in _mapModel.LayersOfLayerModels[layer])
|
||||
@@ -181,5 +182,11 @@ namespace MonoGame.Extended.Tiled.Renderers
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private Matrix IncludeParallax(Matrix viewMatrix, Vector2 parallaxFactor)
|
||||
{
|
||||
viewMatrix.Translation *=new Vector3(parallaxFactor, 1f);
|
||||
return viewMatrix;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user