Exemplo n.º 1
0
        private void ViewAllModelInfo()
        {
            var sb = new StringBuilder();

            sb.AppendLine($"Model: {ModelName}");
            sb.AppendLine();
            sb.AppendLine("Submeshes:");
            for (int i = 0; i < FlverSubmeshes.Count; i++)
            {
                var sm = FlverSubmeshes[i];
                sb.AppendLine($"    {(sm.GetName() ?? $"<Unnamed Submesh #{(i + 1)}>")}");

                if (sm.Material == null)
                {
                    continue;
                }

                sb.AppendLine($"        {sm.Material.Name}");
                sb.AppendLine($"        {sm.Material.MTDName}");

                foreach (var p in sm.Material.Parameters)
                {
                    sb.AppendLine($"            {p.ToString()}");
                }
            }
            sb.AppendLine();
            sb.AppendLine("Bones:");
            for (int i = 0; i < BoneNames.Count; i++)
            {
                sb.Append("    ");
                for (int j = 0; j < BoneIndents[i]; j++)
                {
                    sb.Append("  ");
                }
                sb.AppendLine("-" + BoneNames[i]);
            }

            sb.AppendLine();
            sb.Append("Included dummy IDs:");

            int h = 9000;

            foreach (var dmy in DummyIDs)
            {
                if (h >= 8)
                {
                    h = 0;
                    sb.AppendLine();
                    sb.Append("   ");
                }
                if (h > 0)
                {
                    sb.Append(", ");
                }
                sb.Append(dmy);
                h++;
            }

            sb.AppendLine();
            sb.AppendLine();
            sb.AppendLine();
            sb.AppendLine();

            var infoWindow = new ModelListInfoPopup();

            infoWindow.TextBoxInfo.Text = sb.ToString();
            infoWindow.ShowDialog();
        }
Exemplo n.º 2
0
        private void ViewAllModelInfo()
        {
            var sb = new StringBuilder();

            var faceSetFlagValues = (FlverFaceSetFlags[])Enum.GetValues(typeof(FlverFaceSetFlags));

            sb.AppendLine($"Model: {ModelName}");
            sb.AppendLine();
            sb.AppendLine("Submeshes:");
            for (int i = 0; i < FlverSubmeshes.Count; i++)
            {
                var sm = FlverSubmeshes[i];
                sb.AppendLine($"    {(sm.GetName() ?? $"<Unnamed Submesh #{(i + 1)}>")}");

                if (sm.Material == null)
                {
                    continue;
                }

                sb.AppendLine($"        {sm.Material.Name}");
                sb.AppendLine($"        {sm.Material.MTDName}");

                foreach (var p in sm.Material.Parameters)
                {
                    sb.AppendLine($"            {p.ToString()}");
                }

                sb.AppendLine($"        {sm.FaceSets.Count} Face Sets. Flags of Face Sets:");

                for (int j = 0; j < sm.FaceSets.Count; j++)
                {
                    List <FlverFaceSetFlags> flagsThisThingHas = new List <FlverFaceSetFlags>();
                    foreach (var flag in faceSetFlagValues)
                    {
                        if ((sm.FaceSets[j].Flags & flag) != 0)
                        {
                            flagsThisThingHas.Add(flag);
                        }
                    }
                    sb.AppendLine($"            Face Set {(j + 1)}: {string.Join(", ", flagsThisThingHas)}");
                }
            }
            sb.AppendLine();
            sb.AppendLine("Bones:");
            for (int i = 0; i < BoneNames.Count; i++)
            {
                sb.Append("    ");
                for (int j = 0; j < BoneIndents[i]; j++)
                {
                    sb.Append("  ");
                }
                sb.AppendLine("-" + BoneNames[i] + $"[POS<{ActualBones[i].Translation.X}, {ActualBones[i].Translation.Y}, {ActualBones[i].Translation.Z}> " +
                              $"ROT<{(ActualBones[i].EulerRadian.X / Math.PI * 180)}°, {(ActualBones[i].EulerRadian.Y / Math.PI * 180)}°, {(ActualBones[i].EulerRadian.Z / Math.PI * 180)}°> " +
                              $"SCL<{ActualBones[i].Scale.X}, {ActualBones[i].Scale.Y}, {ActualBones[i].Scale.Z}>]" +
                              (ActualBones[i].BoundingBoxMin != null ? $"BBm<{ActualBones[i].BoundingBoxMin.X}, {ActualBones[i].BoundingBoxMin.Y}, {ActualBones[i].BoundingBoxMin.Z}>" : "BBm<NULL>") +
                              (ActualBones[i].BoundingBoxMax != null ? $"BBM<{ActualBones[i].BoundingBoxMax.X}, {ActualBones[i].BoundingBoxMax.Y}, {ActualBones[i].BoundingBoxMax.Z}>" : "BBM<NULL>"));
            }

            sb.AppendLine();
            sb.AppendLine("Dummies:");

            foreach (var dmy in Dummies)
            {
                sb.AppendLine($"    {dmy.TypeID} [ParentNode:\"{(dmy.ParentBoneIndex >= 0 ? BoneNames[dmy.ParentBoneIndex] : "<None>")}\" " +
                              $"FollowBone:\"{(dmy.SomeSortOfParentIndex >= 0 ? BoneNames[dmy.SomeSortOfParentIndex] : "<None>")}\" " +
                              $"POS:<{dmy.Position.X}, {dmy.Position.Y}, {dmy.Position.Z}>" +
                              $"UP:<{dmy.Row2.X}, {dmy.Row2.Y}, {dmy.Row2.Z}>" +
                              $"FWD:<{dmy.Row3.X}, {dmy.Row3.Y}, {dmy.Row3.Z}>]");
            }

            sb.AppendLine();
            sb.AppendLine();
            sb.AppendLine();
            sb.AppendLine();

            var infoWindow = new ModelListInfoPopup();

            infoWindow.TextBoxInfo.Text = sb.ToString();
            infoWindow.ShowDialog();
        }