Exemplo n.º 1
0
        private static List <MeshGeometryModel3D> GenerateMeshGeometryModels(MGEOFile mgeo)
        {
            List <MeshGeometryModel3D> models = new List <MeshGeometryModel3D>(mgeo.Objects.Count);

            foreach (MGEOObject mgeoModel in mgeo.Objects)
            {
                IntCollection     indices  = new IntCollection(mgeoModel.Indices.Select(x => (int)x).AsEnumerable());
                Vector3Collection vertices = new Vector3Collection(mgeoModel.Vertices.Count);
                Vector2Collection uvs      = new Vector2Collection(mgeoModel.Vertices.Count);
                foreach (MGEOVertex vertex in mgeoModel.Vertices)
                {
                    vertices.Add(new dxVector3(vertex.Position.X, vertex.Position.Y, vertex.Position.Z));
                    uvs.Add(new dxVector2(vertex.DiffuseUV.X, vertex.DiffuseUV.Y));
                }

                MeshGeometry3D meshGeometry = new MeshGeometry3D()
                {
                    Indices            = indices,
                    Positions          = vertices,
                    TextureCoordinates = uvs
                };

                MeshGeometryModel3D model = new MeshGeometryModel3D()
                {
                    Geometry = meshGeometry,
                    Material = DiffuseMaterials.Pearl,
                    Name     = mgeoModel.Name
                };

                models.Add(model);
            }

            return(models);
        }
Exemplo n.º 2
0
        public static IEnumerable <GroupNode> LoadMapMGEO(MGEOFile mgeo, MapData mapData, string mapPath)
        {
            foreach (MGEOObject mgeoModel in mgeo.Objects)
            {
                IntCollection     indices  = new IntCollection(mgeoModel.Indices.Select(x => (int)x).AsEnumerable());
                Vector3Collection vertices = new Vector3Collection(mgeoModel.Vertices.Count);
                Vector2Collection uvs      = new Vector2Collection(mgeoModel.Vertices.Count);
                foreach (MGEOVertex vertex in mgeoModel.Vertices)
                {
                    vertices.Add(new dxVector3(vertex.Position.X, vertex.Position.Y, vertex.Position.Z));
                    uvs.Add(new dxVector2(vertex.DiffuseUV.X, vertex.DiffuseUV.Y));
                }

                foreach (MGEOSubmesh submesh in mgeoModel.Submeshes)
                {
                    GroupNode groupNode = new GroupNode()
                    {
                        Name = mgeoModel.Name
                    };

                    MeshGeometry3D submeshGeometry3D = new MeshGeometry3D()
                    {
                        Indices            = indices.GetRange((int)submesh.StartIndex, (int)submesh.IndexCount) as IntCollection,
                        Positions          = vertices,
                        TextureCoordinates = uvs
                    };

                    DiffuseMaterial diffuseMaterial = new DiffuseMaterial()
                    {
                        Name        = submesh.Material,
                        DiffuseMap  = CreateMaterial(submesh.Material, mapData, mapPath),
                        EnableUnLit = true
                    };

                    groupNode.AddChildNode(new MeshNode()
                    {
                        Name     = mgeoModel.Name + "|" + submesh.Material,
                        Geometry = submeshGeometry3D,
                        Material = diffuseMaterial
                    });

                    yield return(groupNode);
                }
            }
        }
Exemplo n.º 3
0
        static void MGEOTest()
        {
            MGEOFile mgeo1 = new MGEOFile(@"C:\Riot Games\League of Legends\Game\MOD\DATA\Maps\MapGeometry\Map12\Base.mapgeo");

            foreach (MGEOObject model in mgeo1.Objects)
            {
                foreach (Vector3 vector in model.UnknownFloats)
                {
                    vector.X = 0;
                    vector.Y = 0;
                    vector.Z = 0;
                }
            }

            /*for(int i = 100; i < mgeo1.Objects.Count; i++)
             * {
             *  mgeo1.Objects.RemoveAt(i);
             * }*/

            mgeo1.Write(@"C:\Riot Games\League of Legends\Game\MOD\DATA\Maps\MapGeometry\Map12\Base.mapgeo", 7);
        }
Exemplo n.º 4
0
        public static IEnumerable <Tuple <string, OBJFile> > ConvertMGEOModels(MGEOFile mgeo)
        {
            foreach (MGEOObject model in mgeo.Objects)
            {
                List <Vector3> vertices = new List <Vector3>();
                List <Vector3> normals  = new List <Vector3>();
                List <Vector2> uvs      = new List <Vector2>();

                foreach (MGEOVertex vertex in model.Vertices)
                {
                    vertices.Add(model.Transformation.ApplyTransformation(vertex.Position));
                    normals.Add(vertex.Normal);
                    if (vertex.DiffuseUV != null)
                    {
                        uvs.Add(vertex.DiffuseUV);
                    }
                }

                yield return(new Tuple <string, OBJFile>(model.Name, new OBJFile(vertices, model.Indices.Select(x => (uint)x).ToList(), uvs, normals)));
            }
        }
Exemplo n.º 5
0
        public static SceneNodeGroupModel3D LoadMapMGEO(MGEOFile mgeo)
        {
            List <MeshGeometryModel3D> meshGeometryModels = GenerateMeshGeometryModels(mgeo);
            SceneNodeGroupModel3D      mainModelGroup     = new SceneNodeGroupModel3D();

            foreach (MeshGeometryModel3D meshGeometryModel in meshGeometryModels)
            {
                GroupNode groupNode = new GroupNode()
                {
                    Name = meshGeometryModel.Name
                };

                groupNode.AddChildNode(new MeshNode()
                {
                    Name     = meshGeometryModel.Name,
                    Geometry = meshGeometryModel.Geometry,
                    Material = meshGeometryModel.Material,
                });

                mainModelGroup.AddNode(groupNode);
            }

            return(mainModelGroup);
        }