public LBDDocument CreateDocument(LBD lbd) { TMDDocument tileTmd = _tmdController.CreateDocument(lbd.Tiles); List <IRenderable> tileLayout = new List <IRenderable>(); int tileNo = 0; foreach (LBDTile tile in lbd.TileLayout) { int x = tileNo / lbd.Header.TileWidth; int y = tileNo % lbd.Header.TileWidth; if (tile.DrawTile) { tileLayout.AddRange(LibLSDUtil.CreateLBDTileMesh(tile, lbd.ExtraTiles, x, y, lbd.Tiles, _shader, _vramController.VRAMTexture)); } tileNo++; } List <MOMDocument> entities = null; if (lbd.Header.HasMML) { entities = new List <MOMDocument>(); foreach (MOM mom in lbd.MML?.MOMs) { entities.Add(_momController.CreateDocument(mom)); } } return(new LBDDocument(lbd, tileTmd, tileLayout, entities)); }
public void LoadTMD(string tmdPath) { Logger.Log()(LogLevel.INFO, $"Loading TMD from: {tmdPath}"); TMD tmd; using (BinaryReader br = new BinaryReader(File.Open(tmdPath, FileMode.Open))) { tmd = new TMD(br); } Logger.Log()(LogLevel.INFO, "Successfully loaded TMD"); TMDDocument document = CreateDocument(tmd); _treeController.PopulateTreeWithDocument(document, Path.GetFileName(tmdPath)); }
public MOMDocument CreateDocument(MOM mom) { TMDDocument models = _tmdController.CreateDocument(mom.TMD); return(new MOMDocument(mom, models)); }
private MeshListTreeNode createTMDNode(string name, TMDDocument tmdDoc) { MeshListTreeNode rootNode = new MeshListTreeNode(name, tmdDoc.ObjectMeshes, contextMenu: new ContextMenu( new Dictionary <string, Action> { { "Export as TMD", () => { _exportController.OpenDialog( filePath => { _exportController.ExportOriginal(tmdDoc.Document, filePath); }, ".tmd"); } }, { "Export as OBJ", () => { _exportController.OpenDialog( filePath => { _exportController.ExportOBJ(tmdDoc.ObjectMeshes, filePath); }, ".obj"); } }, { "Export as PLY", () => { _exportController.OpenDialog( filePath => { _exportController.ExportPLY(tmdDoc.ObjectMeshes, filePath); }, ".ply"); } }, })); for (int i = 0; i < tmdDoc.Document.Header.NumObjects; i++) { IRenderable objMesh = tmdDoc.ObjectMeshes[i]; MeshListTreeNode objNode = new MeshListTreeNode($"Object {i}", new List <IRenderable> { objMesh }, contextMenu: new ContextMenu( new Dictionary <string, Action> { { "Export as OBJ", () => { _exportController.OpenDialog( filePath => { _exportController.ExportOBJ(objMesh, filePath); }, ".obj"); } }, { "Export as PLY", () => { _exportController.OpenDialog( filePath => { _exportController.ExportPLY(objMesh, filePath); }, ".ply"); } } })); rootNode.AddNode(objNode); } return(rootNode); }