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();
            }
Beispiel #2
0
 private void SwapEndianess(object sender, EventArgs args)
 {
     if (Endianness == Syroot.BinaryData.ByteOrder.BigEndian)
     {
         Endianness = Syroot.BinaryData.ByteOrder.LittleEndian;
     }
     else
     {
         Endianness = Syroot.BinaryData.ByteOrder.BigEndian;
     }
 }
Beispiel #3
0
 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;
     }
 }
Beispiel #4
0
        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();
            }