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