public CGfxMeshPrimitives RefreshMeshPrimitives(CRenderContext rc, RName name) { if (name.IsExtension(CEngineDesc.MeshSourceExtension) == false) { return(null); } lock (MeshPrimitives) { CGfxMeshPrimitives mesh; if (false == MeshPrimitives.TryGetValue(name, out mesh)) { mesh = new CGfxMeshPrimitives(); if (mesh.LoadMesh(rc, name, true) == false) { return(null); } MeshPrimitives.Add(name, mesh); } else { using (var xnd = IO.XndHolder.SyncLoadXND(name.Address)) { mesh.RefreshResource(rc, name.Name, xnd.Node); } } return(mesh.CloneMeshPrimitives()); } }
public CGfxMeshPrimitives GetMeshPrimitives(CRenderContext rc, RName name, bool firstLoad = false) { if (name.IsExtension(CEngineDesc.MeshSourceExtension) == false) { return(null); } lock (MeshPrimitives) { CGfxMeshPrimitives mesh; if (false == MeshPrimitives.TryGetValue(name, out mesh)) { mesh = new CGfxMeshPrimitives(); if (mesh.LoadMesh(rc, name, firstLoad) == false) { return(null); } MeshPrimitives.Add(name, mesh); } return(mesh.CloneMeshPrimitives()); } }