forked from mirror/DotRecast
code cleanup in RcResources
This commit is contained in:
parent
aeefed7fbb
commit
7664ae9f3d
|
@ -61,6 +61,36 @@ namespace DotRecast.Core
|
|||
return (int)s;
|
||||
}
|
||||
|
||||
public static byte[] ReadFileIfFound(string filename)
|
||||
{
|
||||
if (string.IsNullOrEmpty(filename))
|
||||
return null;
|
||||
|
||||
string filePath = filename;
|
||||
|
||||
if (!File.Exists(filePath))
|
||||
{
|
||||
var searchFilePath = RcDirectory.SearchFile($"{filename}");
|
||||
if (!File.Exists(searchFilePath))
|
||||
{
|
||||
searchFilePath = RcDirectory.SearchFile($"resources/{filename}");
|
||||
}
|
||||
|
||||
if (File.Exists(searchFilePath))
|
||||
{
|
||||
filePath = searchFilePath;
|
||||
}
|
||||
}
|
||||
|
||||
using var fs = new FileStream(filePath, FileMode.Open, FileAccess.Read, FileShare.Read);
|
||||
byte[] buffer = new byte[fs.Length];
|
||||
var read = fs.Read(buffer, 0, buffer.Length);
|
||||
if (read != buffer.Length)
|
||||
return null;
|
||||
|
||||
return buffer;
|
||||
}
|
||||
|
||||
public static void Write(BinaryWriter ws, float value, RcByteOrder order)
|
||||
{
|
||||
byte[] bytes = BitConverter.GetBytes(value);
|
||||
|
|
|
@ -1,22 +0,0 @@
|
|||
using System.IO;
|
||||
|
||||
namespace DotRecast.Core
|
||||
{
|
||||
public static class RcResources
|
||||
{
|
||||
public static byte[] Load(string filename)
|
||||
{
|
||||
var filepath = filename;
|
||||
if (!File.Exists(filepath))
|
||||
{
|
||||
filepath = RcDirectory.SearchFile($"resources/{filename}");
|
||||
}
|
||||
|
||||
using var fs = new FileStream(filepath, FileMode.Open, FileAccess.Read, FileShare.Read);
|
||||
byte[] buffer = new byte[fs.Length];
|
||||
fs.Read(buffer, 0, buffer.Length);
|
||||
|
||||
return buffer;
|
||||
}
|
||||
}
|
||||
}
|
|
@ -41,7 +41,7 @@ namespace DotRecast.Recast.Toolset.Geom
|
|||
|
||||
public static DemoInputGeomProvider LoadFile(string objFilePath)
|
||||
{
|
||||
byte[] chunk = RcResources.Load(objFilePath);
|
||||
byte[] chunk = RcIO.ReadFileIfFound(objFilePath);
|
||||
var context = RcObjImporter.LoadContext(chunk);
|
||||
return new DemoInputGeomProvider(context.vertexPositions, context.meshFaces);
|
||||
}
|
||||
|
|
|
@ -39,7 +39,7 @@ namespace DotRecast.Recast.Geom
|
|||
|
||||
public static SimpleInputGeomProvider LoadFile(string objFilePath)
|
||||
{
|
||||
byte[] chunk = RcResources.Load(objFilePath);
|
||||
byte[] chunk = RcIO.ReadFileIfFound(objFilePath);
|
||||
var context = RcObjImporter.LoadContext(chunk);
|
||||
return new SimpleInputGeomProvider(context.vertexPositions, context.meshFaces);
|
||||
}
|
||||
|
|
|
@ -507,8 +507,8 @@ namespace DotRecast.Recast
|
|||
for (int i = 0; i < 8; i++)
|
||||
{
|
||||
int vi = i * 3;
|
||||
if (vertices[vi] >= rectangle[0] && vertices[vi] < rectangle[2] && vertices[vi + 2] >= rectangle[1]
|
||||
&& vertices[vi + 2] < rectangle[3])
|
||||
if (vertices[vi] >= rectangle[0] && vertices[vi] < rectangle[2] &&
|
||||
vertices[vi + 2] >= rectangle[1] && vertices[vi + 2] < rectangle[3])
|
||||
{
|
||||
yMin = Math.Min(yMin, vertices[vi + 1]);
|
||||
yMax = Math.Max(yMax, vertices[vi + 1]);
|
||||
|
|
|
@ -21,7 +21,7 @@ public class DynamicNavMeshTest
|
|||
[Test]
|
||||
public void E2eTest()
|
||||
{
|
||||
byte[] bytes = RcResources.Load("test_tiles.voxels");
|
||||
byte[] bytes = RcIO.ReadFileIfFound("test_tiles.voxels");
|
||||
using var ms = new MemoryStream(bytes);
|
||||
using var br = new BinaryReader(ms);
|
||||
|
||||
|
|
|
@ -31,7 +31,7 @@ public class VoxelFileReaderTest
|
|||
[Test]
|
||||
public void ShouldReadSingleTileFile()
|
||||
{
|
||||
byte[] bytes = RcResources.Load("test.voxels");
|
||||
byte[] bytes = RcIO.ReadFileIfFound("test.voxels");
|
||||
using var ms = new MemoryStream(bytes);
|
||||
using var br = new BinaryReader(ms);
|
||||
|
||||
|
@ -57,7 +57,7 @@ public class VoxelFileReaderTest
|
|||
[Test]
|
||||
public void ShouldReadMultiTileFile()
|
||||
{
|
||||
byte[] bytes = RcResources.Load("test_tiles.voxels");
|
||||
byte[] bytes = RcIO.ReadFileIfFound("test_tiles.voxels");
|
||||
using var ms = new MemoryStream(bytes);
|
||||
using var br = new BinaryReader(ms);
|
||||
|
||||
|
|
|
@ -32,7 +32,7 @@ public class VoxelFileReaderWriterTest
|
|||
[TestCase(true)]
|
||||
public void ShouldReadSingleTileFile(bool compression)
|
||||
{
|
||||
byte[] bytes = RcResources.Load("test.voxels");
|
||||
byte[] bytes = RcIO.ReadFileIfFound("test.voxels");
|
||||
using var ms = new MemoryStream(bytes);
|
||||
using var br = new BinaryReader(ms);
|
||||
|
||||
|
@ -60,7 +60,7 @@ public class VoxelFileReaderWriterTest
|
|||
[TestCase(true)]
|
||||
public void ShouldReadMultiTileFile(bool compression)
|
||||
{
|
||||
byte[] bytes = RcResources.Load("test_tiles.voxels");
|
||||
byte[] bytes = RcIO.ReadFileIfFound("test_tiles.voxels");
|
||||
using var ms = new MemoryStream(bytes);
|
||||
using var br = new BinaryReader(ms);
|
||||
|
||||
|
|
|
@ -93,7 +93,7 @@ public class VoxelQueryTest
|
|||
|
||||
private DtDynamicNavMesh CreateDynaMesh()
|
||||
{
|
||||
var bytes = RcResources.Load("test_tiles.voxels");
|
||||
var bytes = RcIO.ReadFileIfFound("test_tiles.voxels");
|
||||
using var ms = new MemoryStream(bytes);
|
||||
using var br = new BinaryReader(ms);
|
||||
|
||||
|
|
|
@ -31,7 +31,7 @@ public class MeshSetReaderTest
|
|||
[Test]
|
||||
public void TestNavmesh()
|
||||
{
|
||||
byte[] @is = RcResources.Load("all_tiles_navmesh.bin");
|
||||
byte[] @is = RcIO.ReadFileIfFound("all_tiles_navmesh.bin");
|
||||
using var ms = new MemoryStream(@is);
|
||||
using var br = new BinaryReader(ms);
|
||||
DtNavMesh mesh = reader.Read(br, 6);
|
||||
|
@ -67,7 +67,7 @@ public class MeshSetReaderTest
|
|||
[Test]
|
||||
public void TestDungeon()
|
||||
{
|
||||
byte[] @is = RcResources.Load("dungeon_all_tiles_navmesh.bin");
|
||||
byte[] @is = RcIO.ReadFileIfFound("dungeon_all_tiles_navmesh.bin");
|
||||
using var ms = new MemoryStream(@is);
|
||||
using var br = new BinaryReader(ms);
|
||||
|
||||
|
@ -104,7 +104,7 @@ public class MeshSetReaderTest
|
|||
[Test]
|
||||
public void TestDungeon32Bit()
|
||||
{
|
||||
byte[] @is = RcResources.Load("dungeon_all_tiles_navmesh_32bit.bin");
|
||||
byte[] @is = RcIO.ReadFileIfFound("dungeon_all_tiles_navmesh_32bit.bin");
|
||||
using var ms = new MemoryStream(@is);
|
||||
using var br = new BinaryReader(ms);
|
||||
|
||||
|
|
|
@ -35,7 +35,7 @@ public class TileCacheReaderTest
|
|||
[Test]
|
||||
public void TestNavmesh()
|
||||
{
|
||||
using var ms = new MemoryStream(RcResources.Load("all_tiles_tilecache.bin"));
|
||||
using var ms = new MemoryStream(RcIO.ReadFileIfFound("all_tiles_tilecache.bin"));
|
||||
using var br = new BinaryReader(ms);
|
||||
DtTileCache tc = reader.Read(br, 6, null);
|
||||
Assert.That(tc.GetNavMesh().GetMaxTiles(), Is.EqualTo(256));
|
||||
|
@ -133,7 +133,7 @@ public class TileCacheReaderTest
|
|||
[Test]
|
||||
public void TestDungeon()
|
||||
{
|
||||
using var ms = new MemoryStream(RcResources.Load("dungeon_all_tiles_tilecache.bin"));
|
||||
using var ms = new MemoryStream(RcIO.ReadFileIfFound("dungeon_all_tiles_tilecache.bin"));
|
||||
using var br = new BinaryReader(ms);
|
||||
DtTileCache tc = reader.Read(br, 6, null);
|
||||
Assert.That(tc.GetNavMesh().GetMaxTiles(), Is.EqualTo(256));
|
||||
|
|
|
@ -39,7 +39,7 @@ public class TileCacheFindPathTest : AbstractTileCacheTest
|
|||
|
||||
public TileCacheFindPathTest()
|
||||
{
|
||||
using var msr = new MemoryStream(RcResources.Load("dungeon_all_tiles_tilecache.bin"));
|
||||
using var msr = new MemoryStream(RcIO.ReadFileIfFound("dungeon_all_tiles_tilecache.bin"));
|
||||
using var br = new BinaryReader(msr);
|
||||
DtTileCache tcC = new DtTileCacheReader(DtTileCacheCompressorFactory.Shared).Read(br, 6, new TestTileCacheMeshProcess());
|
||||
navmesh = tcC.GetNavMesh();
|
||||
|
|
Loading…
Reference in New Issue