Compare commits
2 Commits
ad444decbb
...
b9f3227f73
| Author | SHA1 | Date | |
|---|---|---|---|
| b9f3227f73 | |||
| c68de39c83 |
@@ -113,10 +113,10 @@ public class MonoGameCamera2D : Behaviour, ICamera2D, IFirstFrameUpdate, ILastFr
|
|||||||
public void PreDraw()
|
public void PreDraw()
|
||||||
{
|
{
|
||||||
ProjectionMatrix = Matrix4x4.CreateOrthographicViewCentered(Viewport.Width, Viewport.Height);
|
ProjectionMatrix = Matrix4x4.CreateOrthographicViewCentered(Viewport.Width, Viewport.Height);
|
||||||
ViewMatrix =
|
ViewMatrix = Matrix4x4.Identity
|
||||||
Matrix4x4.CreateTranslation(new Vector3D(-Transform.Position.X, -Transform.Position.Y, 0f))
|
.ApplyScale(Transform.Scale.X.Max(Transform.Scale.Y))
|
||||||
.ApplyRotationZ(Transform.Rotation * Math.DegreeToRadian)
|
.ApplyScale(Zoom)
|
||||||
.ApplyScale(Transform.Scale.X.Max(Transform.Scale.Y))
|
.ApplyRotationZ(-Transform.Rotation * Math.DegreeToRadian)
|
||||||
.ApplyScale(Zoom);
|
.ApplyTranslation(new Vector3D(-Transform.Position.X, -Transform.Position.Y, 0f));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -19,8 +19,11 @@ public class MonoGameTriangleBatch : Behaviour, ITriangleBatch, IFirstFrameUpdat
|
|||||||
private BasicEffect basicEffect = null!;
|
private BasicEffect basicEffect = null!;
|
||||||
private readonly RasterizerState rasterizerState = new() { CullMode = CullMode.None };
|
private readonly RasterizerState rasterizerState = new() { CullMode = CullMode.None };
|
||||||
|
|
||||||
|
private ICamera camera = null!;
|
||||||
|
|
||||||
public void FirstActiveFrame()
|
public void FirstActiveFrame()
|
||||||
{
|
{
|
||||||
|
camera = Universe.FindRequiredBehaviour<ICamera>();
|
||||||
GraphicsDevice graphicsDevice = Universe.FindRequiredBehaviour<MonoGameWindowContainer>().Window.GraphicsDevice;
|
GraphicsDevice graphicsDevice = Universe.FindRequiredBehaviour<MonoGameWindowContainer>().Window.GraphicsDevice;
|
||||||
this.graphicsDevice = graphicsDevice;
|
this.graphicsDevice = graphicsDevice;
|
||||||
basicEffect = new(graphicsDevice);
|
basicEffect = new(graphicsDevice);
|
||||||
@@ -47,8 +50,8 @@ public class MonoGameTriangleBatch : Behaviour, ITriangleBatch, IFirstFrameUpdat
|
|||||||
{
|
{
|
||||||
Viewport viewport = graphicsDevice.Viewport;
|
Viewport viewport = graphicsDevice.Viewport;
|
||||||
|
|
||||||
this.view = (view ?? Matrix4x4.Identity).Transposed.ToXnaMatrix();
|
this.view = (view ?? camera.ViewMatrix).Transposed.ToXnaMatrix();
|
||||||
this.projection = (projection ?? Matrix4x4.CreateOrthographicViewCentered(viewport.Width, viewport.Height)).Transposed.ToXnaMatrix();
|
this.projection = (projection ?? camera.ProjectionMatrix).Transposed.ToXnaMatrix();
|
||||||
}
|
}
|
||||||
|
|
||||||
public void End() => Flush();
|
public void End() => Flush();
|
||||||
|
|||||||
@@ -10,14 +10,10 @@ public class TriangleBatcher : Behaviour, IFirstFrameUpdate, ILastFrameUpdate, I
|
|||||||
private static System.Func<IBehaviour, int> GetPriority() => (b) => b.Priority;
|
private static System.Func<IBehaviour, int> GetPriority() => (b) => b.Priority;
|
||||||
|
|
||||||
private readonly BehaviourCollector<ITriangleBatch> triangleBatches = new();
|
private readonly BehaviourCollector<ITriangleBatch> triangleBatches = new();
|
||||||
private ICamera camera = null!;
|
|
||||||
|
|
||||||
private readonly ActiveBehaviourCollectorOrdered<int, IDrawableTriangle> drawableShapes = new(GetPriority(), SortByAscendingPriority());
|
private readonly ActiveBehaviourCollectorOrdered<int, IDrawableTriangle> drawableShapes = new(GetPriority(), SortByAscendingPriority());
|
||||||
|
|
||||||
public void FirstActiveFrame()
|
public void FirstActiveFrame()
|
||||||
{
|
{
|
||||||
camera = Universe.FindRequiredBehaviour<ICamera>();
|
|
||||||
|
|
||||||
drawableShapes.Assign(Universe);
|
drawableShapes.Assign(Universe);
|
||||||
triangleBatches.Assign(Universe);
|
triangleBatches.Assign(Universe);
|
||||||
}
|
}
|
||||||
@@ -27,7 +23,7 @@ public class TriangleBatcher : Behaviour, IFirstFrameUpdate, ILastFrameUpdate, I
|
|||||||
for (int i = 0; i < triangleBatches.Count; i++)
|
for (int i = 0; i < triangleBatches.Count; i++)
|
||||||
{
|
{
|
||||||
ITriangleBatch triangleBatch = triangleBatches[i];
|
ITriangleBatch triangleBatch = triangleBatches[i];
|
||||||
triangleBatch.Begin(camera.ViewMatrix, camera.ProjectionMatrix);
|
triangleBatch.Begin();
|
||||||
for (int j = 0; j < drawableShapes.Count; j++)
|
for (int j = 0; j < drawableShapes.Count; j++)
|
||||||
drawableShapes[j].Draw(triangleBatch);
|
drawableShapes[j].Draw(triangleBatch);
|
||||||
triangleBatch.End();
|
triangleBatch.End();
|
||||||
|
|||||||
Reference in New Issue
Block a user