public void InjectMeshRigged(Model input, Syroot.BinaryData.ByteOrder BO) { //Deal With Mesh uint[] theFaces = meshes[0].faces.ToArray(); input.Shapes[0].Meshes[0].SetIndices(theFaces); if (input.Shapes[0].Meshes.Count != 1) { for (int i = 0; i < input.Shapes[0].Meshes.Count; i++) { input.Shapes[0].Meshes.RemoveAt(1); } } input.Shapes[0].Radius = 10000000000f; input.Shapes[0].Meshes[0].SubMeshes.Clear(); Bounding LeeT = new Bounding(); LeeT.Center = new Syroot.Maths.Vector3F(0, 0, 0); LeeT.Extent = new Syroot.Maths.Vector3F(10000000000f, 10000000000f, 10000000000f); for (int i = 0; i < input.Shapes[0].SubMeshBoundings.Count; i++) { input.Shapes[0].SubMeshBoundings[i] = LeeT; } SubMesh Setup = new SubMesh(); Setup.Count = (uint)meshes[0].faces.Count; Setup.Offset = 0; for (int vvv = 0; vvv < 1; vvv++) { input.Shapes[0].Meshes[0].SubMeshes.Add(Setup); } //input.Shapes[0].Name = meshes[0].Name; //Deal with Vertexes VertexBufferHelper helper = new VertexBufferHelper(input.VertexBuffers[0], BO); List <VertexBufferHelperAttrib> atrib = new List <VertexBufferHelperAttrib>(); VertexBufferHelperAttrib vertPos = new VertexBufferHelperAttrib(); vertPos.Name = "_p0"; vertPos.Data = meshes[0].verts.ToArray(); vertPos.Format = Syroot.NintenTools.Bfres.GX2.GX2AttribFormat.Format_16_16_16_16_Single; VertexBufferHelperAttrib vertUV = new VertexBufferHelperAttrib(); vertUV.Name = "_u0"; vertUV.Data = meshes[0].uvs.ToArray(); vertUV.Format = Syroot.NintenTools.Bfres.GX2.GX2AttribFormat.Format_16_16_Single; VertexBufferHelperAttrib vertNorm = new VertexBufferHelperAttrib(); vertNorm.Name = "_n0"; vertNorm.Data = meshes[0].norms.ToArray(); vertNorm.Format = Syroot.NintenTools.Bfres.GX2.GX2AttribFormat.Format_10_10_10_2_SNorm; atrib.Add(vertPos); atrib.Add(vertNorm); atrib.Add(vertUV); helper.Attributes = atrib; input.VertexBuffers[0] = helper.ToVertexBuffer(); }
private void SwapEndianess(object sender, EventArgs args) { if (Endianness == Syroot.BinaryData.ByteOrder.BigEndian) { Endianness = Syroot.BinaryData.ByteOrder.LittleEndian; } else { Endianness = Syroot.BinaryData.ByteOrder.BigEndian; } }
private void SwapEndianess(object sender, EventArgs args) { if (EndiannessToolstrip.Checked) { EndiannessToolstrip.Checked = false; Endianness = Syroot.BinaryData.ByteOrder.LittleEndian; } else { EndiannessToolstrip.Checked = true; Endianness = Syroot.BinaryData.ByteOrder.BigEndian; } }
public void Read(byte[] file_data) { data = file_data; try { Endianness = Syroot.BinaryData.ByteOrder.LittleEndian; kcl = new MarioKart.MK7.KCL(file_data, Syroot.BinaryData.ByteOrder.LittleEndian); } catch { Endianness = Syroot.BinaryData.ByteOrder.BigEndian; kcl = new MarioKart.MK7.KCL(file_data, Syroot.BinaryData.ByteOrder.BigEndian); } Read(kcl); }
public void InjectMesh(Model input, Syroot.BinaryData.ByteOrder BO) { //Deal With Mesh uint[] theFaces = meshes[0].faces.ToArray(); input.Shapes[0].Meshes[0].SetIndices(theFaces); if (input.Shapes[0].Meshes.Count != 1) { for (int i = 0; i < input.Shapes[0].Meshes.Count; i++) { input.Shapes[0].Meshes.RemoveAt(1); } } input.Shapes[0].Radius = 10000000000f; input.Shapes[0].Meshes[0].SubMeshes.Clear(); Bounding LeeT = new Bounding(); LeeT.Center = new Syroot.Maths.Vector3F(0, 0, 0); LeeT.Extent = new Syroot.Maths.Vector3F(10000000000f, 10000000000f, 10000000000f); for (int i = 0; i < input.Shapes[0].SubMeshBoundings.Count; i++) { input.Shapes[0].SubMeshBoundings[i] = LeeT; } SubMesh Setup = new SubMesh(); Setup.Count = (uint)meshes[0].faces.Count; Setup.Offset = 0; for (int vvv = 0; vvv < 1; vvv++) { input.Shapes[0].Meshes[0].SubMeshes.Add(Setup); } //input.Shapes[0].Name = meshes[0].Name; //Deal with Vertexes VertexBufferHelper helper = new VertexBufferHelper(input.VertexBuffers[0], BO); List <VertexBufferHelperAttrib> atrib = new List <VertexBufferHelperAttrib>(); VertexBufferHelperAttrib vertPos = new VertexBufferHelperAttrib(); vertPos.Name = "_p0"; vertPos.Data = meshes[0].verts.ToArray(); vertPos.Format = Syroot.NintenTools.Bfres.GX2.GX2AttribFormat.Format_16_16_16_16_Single; VertexBufferHelperAttrib vertUV = new VertexBufferHelperAttrib(); vertUV.Name = "_u0"; vertUV.Data = meshes[0].uvs.ToArray(); vertUV.Format = Syroot.NintenTools.Bfres.GX2.GX2AttribFormat.Format_16_16_Single; VertexBufferHelperAttrib vertUV1 = new VertexBufferHelperAttrib(); //Add UV Layer 1. Copies UVs from UV0 for now. vertUV1.Name = "_u1"; vertUV1.Data = meshes[0].uvs.ToArray(); vertUV1.Format = Syroot.NintenTools.Bfres.GX2.GX2AttribFormat.Format_16_16_Single; VertexBufferHelperAttrib vertNorm = new VertexBufferHelperAttrib(); vertNorm.Name = "_n0"; vertNorm.Data = meshes[0].norms.ToArray(); vertNorm.Format = Syroot.NintenTools.Bfres.GX2.GX2AttribFormat.Format_10_10_10_2_SNorm; VertexBufferHelperAttrib vertWeight = new VertexBufferHelperAttrib(); //Adds weights. Becomes Zeroed vertWeight.Name = "_w0"; vertWeight.Data = meshes[0].uvs.ToArray(); vertWeight.Format = Syroot.NintenTools.Bfres.GX2.GX2AttribFormat.Format_8_8_8_8_UNorm; VertexBufferHelperAttrib vertIndex = new VertexBufferHelperAttrib(); //Adds Index attirbute. Becomes Zeroed vertIndex.Name = "_i0"; vertIndex.Data = meshes[0].uvs.ToArray(); vertIndex.Format = Syroot.NintenTools.Bfres.GX2.GX2AttribFormat.Format_8_8_8_8_UInt; VertexBufferHelperAttrib vertTan = new VertexBufferHelperAttrib(); //Adds Tangent attirbute. Becomes Zeroed vertTan.Name = "_t0"; vertTan.Data = meshes[0].uvs.ToArray(); vertTan.Format = Syroot.NintenTools.Bfres.GX2.GX2AttribFormat.Format_8_8_8_8_SNorm; atrib.Add(vertPos); atrib.Add(vertNorm); atrib.Add(vertUV); atrib.Add(vertUV1); atrib.Add(vertWeight); atrib.Add(vertIndex); atrib.Add(vertTan); helper.Attributes = atrib; input.VertexBuffers[0] = helper.ToVertexBuffer(); }