public void TestSerializeTileData() { TileData data = new TileData(Guid.NewGuid()); TileFaceType type = new TileFaceType(Guid.NewGuid()); type.FlipWinding = true; TileFaceType root = new TileFaceType(Guid.NewGuid()); type.SetParent(root); data.Dimensions = new Vector3(1, 2, 3); data.SetFaceType(TileFace.Front, type); OBJParser.ObjImporter importer = new OBJParser.ObjImporter(); var c = new OBJToRAMMeshConverter(new RAMTextureFactory()); importer.AddMaterialFileStream("WallInnerCorner.mtl", new FileStream(TWDir.GameData.CreateSubdirectory("Core\\TileEngine") + "/TileSet001/WallInnerCorner.mtl", FileMode.Open)); importer.ImportObjFile(TWDir.GameData.CreateSubdirectory("Core\\TileEngine") + "/TileSet001/WallInnerCorner.obj"); meshWallInnerCorner = c.CreateMesh(importer); data.Mesh = meshWallInnerCorner; var simpleMeshFactory = new SimpleMeshFactory(); simpleMeshFactory.AddMesh(meshWallInnerCorner); DiskTileDataFactory diskTileDataFactory = new DiskTileDataFactory(simpleMeshFactory, new SimpleTileFaceTypeFactory()); FileStream stream = File.OpenWrite(TWDir.Test.CreateSubdirectory("TileEngine").FullName + "\\TestTileData.xml"); diskTileDataFactory.SerializeTileData(data, stream); stream.Close(); FileStream readStream = File.OpenRead(TWDir.Test.CreateSubdirectory("TileEngine").FullName + "\\TestTileData.xml"); TileData readData = diskTileDataFactory.DeserializeTileData(readStream); readStream.Close(); }
public void TestSerializeWorld() { var game = new XNAGame(); var texturePool = new TexturePool(); var meshpartPool = new MeshPartPool(); var vertexDeclarationPool = new VertexDeclarationPool(); vertexDeclarationPool.SetVertexElements <TangentVertex>(TangentVertex.VertexElements); var renderer = new SimpleMeshRenderer(texturePool, meshpartPool, vertexDeclarationPool); TileData data = new TileData(Guid.NewGuid()); TileFaceType type = new TileFaceType(Guid.NewGuid()); type.FlipWinding = true; TileFaceType root = new TileFaceType(Guid.NewGuid()); type.SetParent(root); data.Dimensions = new Vector3(1, 2, 3); data.SetFaceType(TileFace.Front, type); OBJParser.ObjImporter importer = new OBJParser.ObjImporter(); var c = new OBJToRAMMeshConverter(new RAMTextureFactory()); importer.AddMaterialFileStream("WallInnerCorner.mtl", new FileStream(TWDir.GameData.CreateSubdirectory("Core\\TileEngine") + "/TileSet001/WallInnerCorner.mtl", FileMode.Open)); importer.ImportObjFile(TWDir.GameData.CreateSubdirectory("Core\\TileEngine") + "/TileSet001/WallInnerCorner.obj"); meshWallInnerCorner = c.CreateMesh(importer); data.Mesh = meshWallInnerCorner; var builder = new TileSnapInformationBuilder(); var world = new World(); var objType = new WorldObjectType(data.Mesh, Guid.NewGuid(), builder); objType.TileData = data; var obj = world.CreateNewWorldObject(game, objType, renderer); obj.Position = Vector3.One * 3; var simpleMeshFactory = new SimpleMeshFactory(); simpleMeshFactory.AddMesh(meshWallInnerCorner); DiskTileDataFactory diskTileDataFactory = new DiskTileDataFactory(simpleMeshFactory, new SimpleTileFaceTypeFactory()); diskTileDataFactory.AddTileData(data); var typeFactory = new SimpleWorldObjectTypeFactory(); var serializer = new WorldSerializer(simpleMeshFactory, diskTileDataFactory, game, renderer, typeFactory, builder); FileStream stream = File.OpenWrite(TWDir.Test.CreateSubdirectory("TileEngine").FullName + "\\TestWorld.xml"); serializer.SerializeWorld(world, stream); stream.Close(); FileStream readStream = File.OpenRead(TWDir.Test.CreateSubdirectory("TileEngine").FullName + "\\TestWorld.xml"); var readWorld = new World(); serializer.DeserializeWorld(readWorld, readStream); readStream.Close(); }