Object Holding a Mesh and Material from a file loaded object.
Exemplo n.º 1
0
        public static ModelMesh[] LoadFromFile(GameMode gameMode, string filePath)
        {
            if (".pmesh".Equals(Path.GetExtension(filePath), StringComparison.OrdinalIgnoreCase))
            {
                return(new[] { LoadPMesh(gameMode, filePath) });
            }
            else
            {
                var modelDirectory = Path.GetDirectoryName(filePath);

                var context = new AssimpContext();
                const PostProcessSteps flags = PostProcessSteps.GenerateNormals | PostProcessSteps.GenerateUVCoords
                                               | PostProcessSteps.FlipWindingOrder
                                               | PostProcessSteps.FlipUVs;
                var scene = context.ImportFile(filePath, flags);

                var meshs = new List <ModelMesh>();
                foreach (var assimpMesh in scene.Meshes)
                {
                    var modelMesh = new ModelMesh(gameMode, scene, assimpMesh, modelDirectory);
                    meshs.Add(modelMesh);
                }

                return(meshs.ToArray());
            }
        }
Exemplo n.º 2
0
        public ModelMesh[] GetModel(string filePath)
        {
            ModelMesh[] meshes;
            if (_meshCache.TryGetValue(filePath, out meshes))
            {
                return(meshes);
            }

            var absolutePath = Path.Combine(ModelPath, filePath);
            var meshsArray   = ModelMesh.LoadFromFile(this, absolutePath);

            _meshCache.Add(filePath, meshsArray);
            return(meshsArray);
        }