public static void ReadModel(FMDL model, Model mdl) { if (model == null) { model = new FMDL(); } model.Text = mdl.Name; model.Skeleton = new FSKL(mdl.Skeleton); model.Nodes.RemoveAt(2); model.Nodes.Add(model.Skeleton.node); model.ModelU = mdl; foreach (Material mat in mdl.Materials.Values) { FMAT FMAT = new FMAT(); FMAT.Text = mat.Name; FMAT.ReadMaterial(mat); model.Nodes["FmatFolder"].Nodes.Add(FMAT); model.materials.Add(FMAT.Text, FMAT); } foreach (Shape shp in mdl.Shapes.Values) { VertexBuffer vertexBuffer = mdl.VertexBuffers[shp.VertexBufferIndex]; Material material = mdl.Materials[shp.MaterialIndex]; FSHP mesh = new FSHP(); ReadShapesVertices(mesh, shp, vertexBuffer, model); mesh.MaterialIndex = shp.MaterialIndex; model.Nodes["FshpFolder"].Nodes.Add(mesh); model.shapes.Add(mesh); } }
public static void Read(BFRESRender renderer, ResFile resFile, TreeNode ResFileNode) { int CurMdl = 0; foreach (Model mdl in resFile.Models.Values) { FMDL model = new FMDL(); model.Text = mdl.Name; model.Skeleton = new FSKL(mdl.Skeleton); model.Nodes.Add(model.Skeleton.node); model.Skeleton.reset(); model.Skeleton.update(); model.BFRESRender = renderer; model.Skeleton.node.BFRESRender = renderer; model.ModelU = mdl; foreach (Material mat in mdl.Materials.Values) { FMAT FMAT = new FMAT(); FMAT.BFRESRender = renderer; FMAT.Text = mat.Name; FMAT.ReadMaterial(mat); model.Nodes[1].Nodes.Add(FMAT); model.materials.Add(FMAT.Text, FMAT); } foreach (Shape shp in mdl.Shapes.Values) { VertexBuffer vertexBuffer = mdl.VertexBuffers[shp.VertexBufferIndex]; Material material = mdl.Materials[shp.MaterialIndex]; FSHP mesh = new FSHP(); mesh.BFRESRender = renderer; mesh.ModelIndex = CurMdl; ReadShapesVertices(mesh, shp, vertexBuffer, model); mesh.MaterialIndex = shp.MaterialIndex; model.Nodes[0].Nodes.Add(mesh); model.shapes.Add(mesh); } ResFileNode.Nodes[0].Nodes.Add(model); renderer.models.Add(model); CurMdl++; } }