示例#1
0
        private static void ReadMeshes(FSHP fshp, Shape shp)
        {
            fshp.lodMeshes.Clear();

            foreach (Mesh msh in shp.Meshes)
            {
                uint   FaceCount    = msh.IndexCount;
                uint[] indicesArray = msh.GetIndices().ToArray();

                FSHP.LOD_Mesh lod = new FSHP.LOD_Mesh();
                foreach (SubMesh subMsh in msh.SubMeshes)
                {
                    FSHP.LOD_Mesh.SubMesh sub = new FSHP.LOD_Mesh.SubMesh();
                    sub.size   = subMsh.Count;
                    sub.offset = subMsh.Offset;
                    lod.subMeshes.Add(sub);
                }
                lod.IndexFormat   = (STIndexFormat)msh.IndexFormat;
                lod.PrimitiveType = (STPolygonType)msh.PrimitiveType;
                lod.FirstVertex   = msh.FirstVertex;

                for (int face = 0; face < FaceCount; face++)
                {
                    lod.faces.Add((int)indicesArray[face] + (int)msh.FirstVertex);
                }

                fshp.lodMeshes.Add(lod);
            }
        }
示例#2
0
        private static void ReadMeshes(FSHP fshp, Shape shp)
        {
            fshp.lodMeshes.Clear();

            foreach (Mesh msh in shp.Meshes)
            {
                uint   FaceCount    = msh.IndexCount;
                uint[] indicesArray = msh.GetIndices().ToArray();

                FSHP.LOD_Mesh lod = new FSHP.LOD_Mesh();
                foreach (SubMesh subMsh in msh.SubMeshes)
                {
                    FSHP.LOD_Mesh.SubMesh sub = new FSHP.LOD_Mesh.SubMesh();
                    sub.size   = subMsh.Count;
                    sub.offset = subMsh.Offset;
                    lod.subMeshes.Add(sub);
                }
                lod.IndexFormat = (STIndexFormat)msh.IndexFormat;
                switch (msh.PrimitiveType)
                {
                case GX2PrimitiveType.Triangles:
                    lod.PrimativeType = STPrimitiveType.Triangles;
                    break;

                case GX2PrimitiveType.TriangleStrip:
                    lod.PrimativeType = STPrimitiveType.TrangleStrips;
                    break;

                case GX2PrimitiveType.Quads:
                    lod.PrimativeType = STPrimitiveType.Quads;
                    break;

                case GX2PrimitiveType.Lines:
                    lod.PrimativeType = STPrimitiveType.Lines;
                    break;

                case GX2PrimitiveType.LineStrip:
                    lod.PrimativeType = STPrimitiveType.LineStrips;
                    break;

                case GX2PrimitiveType.Points:
                    lod.PrimativeType = STPrimitiveType.Points;
                    break;
                }

                lod.FirstVertex = msh.FirstVertex;

                for (int face = 0; face < FaceCount; face++)
                {
                    lod.faces.Add((int)indicesArray[face] + (int)msh.FirstVertex);
                }

                fshp.lodMeshes.Add(lod);
            }
        }
示例#3
0
        private void listViewCustom1_SelectedIndexChanged(object sender, EventArgs e)
        {
            if (listViewCustom1.SelectedIndices.Count > 0 && activeMesh != null)
            {
                int index = listViewCustom1.SelectedIndices[0];

                activeSubMesh = activeMesh.subMeshes[index];

                FaceCountUD.Value = activeSubMesh.size;
                offsetUD.Value    = activeSubMesh.offset;

                int MeshIndex = activeShape.lodMeshes.IndexOf(activeMesh);

                int boundIndex = MeshIndex;

                centerXUD.Value = (decimal)activeShape.boundingBoxes[boundIndex].Center.X;
                centerYUD.Value = (decimal)activeShape.boundingBoxes[boundIndex].Center.Y;
                centerZUD.Value = (decimal)activeShape.boundingBoxes[boundIndex].Center.Z;

                extendXUD.Value = (decimal)activeShape.boundingBoxes[boundIndex].Extend.X;
                extendYUD.Value = (decimal)activeShape.boundingBoxes[boundIndex].Extend.Y;
                extendZUD.Value = (decimal)activeShape.boundingBoxes[boundIndex].Extend.Z;

                if (activeShape.boundingRadius.Count > 1)
                {
                    radiusUD.Value = (decimal)activeShape.boundingRadius[MeshIndex];
                }
                else
                {
                    radiusUD.Value = (decimal)activeShape.boundingRadius[0];
                }
            }
            else
            {
                activeSubMesh     = null;
                FaceCountUD.Value = 0;
                offsetUD.Value    = 0;
                centerXUD.Value   = 0;
                centerYUD.Value   = 0;
                centerZUD.Value   = 0;
                extendXUD.Value   = 0;
                extendYUD.Value   = 0;
                extendZUD.Value   = 0;

                radiusUD.Value = 0;
            }
        }