// ---- METHODS (PRIVATE) --------------------------------------------------------------------------------------

        private static void Main(string[] args)
        {
            KclFile kcl = new KclFile(@"D:\Archive\Wii U\Roms\MK8\content\course\Gu_FirstCircuit\course.kcl");

            kcl.Save(@"D:\Archive\Wii U\Roms\MK8\content\course\Gu_FirstCircuit\course.kcl.new");

            //LoadFiles<KclFile>("course.kcl");
        }
Esempio n. 2
0
        private void Export(object sender, EventArgs args)
        {
            if (KclFile == null)
            {
                return;
            }

            SaveFileDialog sfd = new SaveFileDialog();

            sfd.Filter     = "Supported Formats|*.obj";
            sfd.FileName   = Path.GetFileNameWithoutExtension(Text) + ".obj";
            sfd.DefaultExt = ".obj";

            if (sfd.ShowDialog() == DialogResult.OK)
            {
                var obj = KclFile.CreateGenericModel();
                obj.Save(sfd.FileName, true);
            }
        }
Esempio n. 3
0
        public void Read(byte[] file_data)
        {
            try
            {
                kcl = new KclFile(new MemoryStream(file_data), true, false, Syroot.BinaryData.ByteOrder.LittleEndian);
            }
            catch
            {
                kcl = new KclFile(new MemoryStream(file_data), true, false, Syroot.BinaryData.ByteOrder.BigEndian);
            }

            AllFlags.Clear();

            int CurModelIndx = 0;

            foreach (KclModel mdl in kcl.Models)
            {
                KCLModel kclmodel = new KCLModel();

                kclmodel.Text = "Model " + CurModelIndx;


                KclFace[] indicesArray = mdl.Faces;

                int ft = 0;
                foreach (KclFace f in mdl.Faces)
                {
                    Vertex vtx  = new Vertex();
                    Vertex vtx2 = new Vertex();
                    Vertex vtx3 = new Vertex();


                    Vector3 CrossA   = Vector3.Cross(Vec3F_To_Vec3(mdl.Normals[f.Normal1Index]), Vec3F_To_Vec3(mdl.Normals[f.DirectionIndex]));
                    Vector3 CrossB   = Vector3.Cross(Vec3F_To_Vec3(mdl.Normals[f.Normal2Index]), Vec3F_To_Vec3(mdl.Normals[f.DirectionIndex]));
                    Vector3 CrossC   = Vector3.Cross(Vec3F_To_Vec3(mdl.Normals[f.Normal3Index]), Vec3F_To_Vec3(mdl.Normals[f.DirectionIndex]));
                    Vector3 normal_a = Vec3F_To_Vec3(mdl.Normals[f.Normal1Index]);
                    Vector3 normal_b = Vec3F_To_Vec3(mdl.Normals[f.Normal2Index]);
                    Vector3 normal_c = Vec3F_To_Vec3(mdl.Normals[f.Normal3Index]);


                    float result1 = Vector3.Dot(new Vector3(CrossB.X, CrossB.Y, CrossB.Z), (new Vector3(normal_c.X, normal_c.Y, normal_c.Z)));
                    float result2 = Vector3.Dot(new Vector3(CrossA.X, CrossA.Y, CrossA.Z), (new Vector3(normal_c.X, normal_c.Y, normal_c.Z)));

                    Vector3 pos = Vec3F_To_Vec3(mdl.Positions[f.PositionIndex]);
                    Vector3 nrm = Vec3F_To_Vec3(mdl.Normals[f.Normal1Index]);

                    Vector3 Vertex1 = pos;
                    Vector3 Vertex2 = pos + CrossB * (f.Length / result1);
                    Vector3 Vertex3 = pos + CrossA * (f.Length / result2);

                    vtx.pos  = new Vector3(Vertex1.X, Vertex1.Y, Vertex1.Z);
                    vtx2.pos = new Vector3(Vertex2.X, Vertex2.Y, Vertex2.Z);
                    vtx3.pos = new Vector3(Vertex3.X, Vertex3.Y, Vertex3.Z);

                    var dir  = Vector3.Cross(Vertex2 - Vertex1, Vertex3 - Vertex1);
                    var norm = Vector3.Normalize(dir);

                    vtx.nrm  = norm;
                    vtx2.nrm = norm;
                    vtx3.nrm = norm;

                    KCLModel.Face face = new KCLModel.Face();

                    face.Text = f.CollisionFlags.ToString();

                    face.MaterialFlag = f.CollisionFlags;

                    Color color = SetMaterialColor(face);


                    AllFlags.Add(face.MaterialFlag);

                    Vector3 ColorSet = new Vector3(color.R / 255.0f, color.G / 255.0f, color.B / 255.0f);

                    vtx.col  = new Vector3(ColorSet);
                    vtx2.col = new Vector3(ColorSet);
                    vtx3.col = new Vector3(ColorSet);

                    kclmodel.faces.Add(ft);
                    kclmodel.faces.Add(ft + 1);
                    kclmodel.faces.Add(ft + 2);

                    ft += 3;

                    kclmodel.vertices.Add(vtx);
                    kclmodel.vertices.Add(vtx2);
                    kclmodel.vertices.Add(vtx3);
                }


                models.Add(kclmodel);



                Nodes.Add(kclmodel);

                CurModelIndx++;
            }

            List <int> noDupes = AllFlags.Distinct().ToList();

            Console.WriteLine("List of all material flags (Not duped)");
            foreach (int mat in noDupes)
            {
                Console.WriteLine("Mat flag " + (CollisionType_MK8D)mat);
            }
        }
Esempio n. 4
0
 public void Save(System.IO.Stream stream)
 {
     KclFile.Save(stream);
     SaveAttributeByml();
 }