Пример #1
0
        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));
        }
Пример #2
0
        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));
        }
Пример #3
0
        public MOMDocument CreateDocument(MOM mom)
        {
            TMDDocument models = _tmdController.CreateDocument(mom.TMD);

            return(new MOMDocument(mom, models));
        }
Пример #4
0
        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);
        }