encompass-cs/test/WorldTest.cs

82 lines
2.6 KiB
C#
Raw Normal View History

2019-06-20 03:37:46 +00:00
using NUnit.Framework;
using FluentAssertions;
using System;
using System.Collections.Generic;
using System.Text;
using Encompass;
namespace Tests
{
public class WorldTest
{
2020-03-20 22:45:58 +00:00
struct TestComponent { }
struct TestDrawComponent : IDrawableComponent
{
public int Layer { get; set; }
}
2019-06-20 03:37:46 +00:00
static List<object> drawOrder = new List<object>();
class TestEntityRenderer : OrderedRenderer<TestDrawComponent>
2019-06-20 03:37:46 +00:00
{
2020-03-20 21:13:26 +00:00
public override void Render(Entity entity, in TestDrawComponent testDrawComponent)
2019-06-20 03:37:46 +00:00
{
2019-11-21 03:01:29 +00:00
drawOrder.Add(entity);
2019-06-20 03:37:46 +00:00
}
}
class TestGeneralRenderer : GeneralRenderer
{
public override void Render()
{
drawOrder.Add(this);
}
}
[Test]
public void DrawOrder()
{
var worldBuilder = new WorldBuilder();
2019-12-17 02:51:45 +00:00
worldBuilder.RegisterDrawLayer(1);
worldBuilder.RegisterDrawLayer(2);
worldBuilder.RegisterDrawLayer(3);
worldBuilder.RegisterDrawLayer(4);
worldBuilder.RegisterDrawLayer(7);
worldBuilder.AddOrderedRenderer(new TestEntityRenderer());
var testGeneralRenderer = worldBuilder.AddGeneralRenderer(new TestGeneralRenderer(), 7);
2019-06-20 03:37:46 +00:00
TestComponent testComponent;
TestDrawComponent drawComponentThree = new TestDrawComponent { Layer = 3 };
var drawComponentTwo = new TestDrawComponent { Layer = 2 };
var drawComponentOne = new TestDrawComponent { Layer = 1 };
var drawComponentFour = new TestDrawComponent { Layer = 4 };
2019-06-20 03:37:46 +00:00
var entity = worldBuilder.CreateEntity();
worldBuilder.SetComponent(entity, testComponent);
worldBuilder.SetComponent(entity, drawComponentThree);
2019-06-20 03:37:46 +00:00
var entityTwo = worldBuilder.CreateEntity();
worldBuilder.SetComponent(entityTwo, testComponent);
worldBuilder.SetComponent(entityTwo, drawComponentTwo);
2019-06-20 03:37:46 +00:00
var entityThree = worldBuilder.CreateEntity();
worldBuilder.SetComponent(entityThree, testComponent);
worldBuilder.SetComponent(entityThree, drawComponentThree);
2019-06-20 03:37:46 +00:00
var entityFour = worldBuilder.CreateEntity();
worldBuilder.SetComponent(entityFour, testComponent);
worldBuilder.SetComponent(entityFour, drawComponentFour);
2019-06-20 03:37:46 +00:00
var world = worldBuilder.Build();
world.Update(0.01f);
world.Draw();
2019-11-21 03:01:29 +00:00
drawOrder.Should().BeEquivalentTo(entityFour, entityTwo, entity, entityThree, testGeneralRenderer);
2019-06-20 03:37:46 +00:00
}
}
}