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()); } }
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); }