157 lines
3.6 KiB
C#
157 lines
3.6 KiB
C#
using System.Collections.Generic;
|
|
using System.Diagnostics;
|
|
using System.IO;
|
|
using NUnit.Framework;
|
|
using FlaxEngine;
|
|
using Game;
|
|
|
|
namespace GoakeTests.MapParser
|
|
{
|
|
public class MapParserTests
|
|
{
|
|
private byte[] aerowalkBytes;
|
|
private MapEntity aerowalkRoot;
|
|
|
|
private byte[] q1mapBytes;
|
|
private byte[] dm4Bytes;
|
|
|
|
[SetUp]
|
|
public void Setup()
|
|
{
|
|
dm4Bytes = File.ReadAllBytes(@"C:\dev\GoakeFlax\Assets\Maps\dm4.map");
|
|
|
|
aerowalkBytes = File.ReadAllBytes(@"C:\dev\GoakeFlax\Assets\Maps\aerowalk.map");
|
|
aerowalkRoot = Game.MapParser.Parse(aerowalkBytes);
|
|
|
|
q1mapBytes = File.ReadAllBytes(@"C:\dev\GoakeFlax\Assets\Maps\cube_q1.map");
|
|
}
|
|
|
|
[TearDown]
|
|
public void CleanUp()
|
|
{
|
|
|
|
}
|
|
|
|
[Test]
|
|
public void Perf_LoadQ1test()
|
|
{
|
|
List<Game.MapEntity> mapEntities = new List<Game.MapEntity>(100);
|
|
|
|
Stopwatch sw = Stopwatch.StartNew();
|
|
|
|
for (int i = 0; i < 100; i++)
|
|
{
|
|
var root = Game.MapParser.Parse(q1mapBytes);
|
|
Assert.IsTrue(root.entities[0].brushes.Count > 0);
|
|
mapEntities.Add(root);
|
|
}
|
|
|
|
sw.Stop();
|
|
|
|
var elapsedMs = sw.Elapsed.TotalMilliseconds;
|
|
TestContext.Out.WriteLine("Map parsing time: " + elapsedMs/100 + "ms");
|
|
}
|
|
|
|
[Test]
|
|
public void Perf_LoadDM4()
|
|
{
|
|
List<Game.MapEntity> mapEntities = new List<Game.MapEntity>(100);
|
|
|
|
Stopwatch sw = Stopwatch.StartNew();
|
|
|
|
for (int i = 0; i < 100; i++)
|
|
{
|
|
var root = Game.MapParser.Parse(dm4Bytes);
|
|
Assert.IsTrue(root.entities[0].brushes.Count > 0);
|
|
mapEntities.Add(root);
|
|
}
|
|
|
|
sw.Stop();
|
|
|
|
var elapsedMs = sw.Elapsed.TotalMilliseconds;
|
|
TestContext.Out.WriteLine("Map parsing time: " + elapsedMs/100 + "ms");
|
|
}
|
|
|
|
[Test]
|
|
public void Perf_LoadAerowalk()
|
|
{
|
|
List<Game.MapEntity> mapEntities = new List<Game.MapEntity>(100);
|
|
|
|
Stopwatch sw = Stopwatch.StartNew();
|
|
|
|
for (int i = 0; i < 100; i++)
|
|
{
|
|
var root = Game.MapParser.Parse(aerowalkBytes);
|
|
mapEntities.Add(root);
|
|
}
|
|
|
|
sw.Stop();
|
|
|
|
var elapsedMs = sw.Elapsed.TotalMilliseconds;
|
|
TestContext.Out.WriteLine("Map parsing time: " + elapsedMs/100 + "ms");
|
|
}
|
|
|
|
[Test]
|
|
public void Perf_TriangulateAerowalk()
|
|
{
|
|
// warmup?
|
|
//var roott = Game.MapParser.Parse(aerowalkBytes);
|
|
|
|
List<Game.MapEntity> mapEntities = new List<Game.MapEntity>(100);
|
|
aerowalkRoot = Game.MapParser.Parse(aerowalkBytes);
|
|
/*for (int i = 0; i < 1; i++)
|
|
{
|
|
foreach (var ent in aerowalkRoot.entities)
|
|
foreach (var brush in ent.brushes)
|
|
{
|
|
Q3MapImporter.TriangulateBrush(brush, out Vector3[] verts);
|
|
Assert.IsTrue(verts.Length > 0);
|
|
}
|
|
}*/
|
|
|
|
Stopwatch sw = Stopwatch.StartNew();
|
|
|
|
for (int i = 0; i < 1; i++)
|
|
{
|
|
foreach (var ent in aerowalkRoot.entities)
|
|
foreach (var brush in ent.brushes)
|
|
{
|
|
Q3MapImporter.TriangulateBrush(brush, out Vector3[] verts);
|
|
Assert.IsTrue(verts.Length > 0);
|
|
}
|
|
}
|
|
|
|
sw.Stop();
|
|
|
|
var elapsedMs = sw.Elapsed.TotalMilliseconds;
|
|
TestContext.Out.WriteLine("Triangulation time: " + elapsedMs + "ms");
|
|
}
|
|
|
|
[Test]
|
|
public void Perf_TriangulateQ1test()
|
|
{
|
|
// warmup?
|
|
//var roott = Game.MapParser.Parse(aerowalkBytes);
|
|
|
|
List<Game.MapEntity> mapEntities = new List<Game.MapEntity>(100);
|
|
var root = Game.MapParser.Parse(q1mapBytes);
|
|
|
|
Stopwatch sw = Stopwatch.StartNew();
|
|
|
|
for (int i = 0; i < 1; i++)
|
|
{
|
|
foreach (var ent in root.entities)
|
|
foreach (var brush in ent.brushes)
|
|
{
|
|
Q3MapImporter.TriangulateBrush(brush, out Vector3[] verts);
|
|
Assert.IsTrue(verts.Length > 0);
|
|
}
|
|
}
|
|
|
|
sw.Stop();
|
|
|
|
var elapsedMs = sw.Elapsed.TotalMilliseconds;
|
|
TestContext.Out.WriteLine("Triangulation time: " + elapsedMs + "ms");
|
|
}
|
|
}
|
|
} |