Ejemplo n.º 1
0
    public List <LODData> LodForName(string name)
    {
        if (MeshByName.ContainsKey(name))
        {
            var meshEntry = MeshByName[name];
            if (meshEntry.Lods != null)
            {
                ++meshEntry.ReferenceCount;
                return(meshEntry.Lods);
            }
            if (meshEntry.Loaded)
            {
                // TaskLoad() completed
                meshEntry.GenerateMeshes(db);
                return(null);
                //meshEntry.GenerateMeshes();
                //++meshEntry.ReferenceCount;
                //return meshEntry.Lods;
            }
            // TaskLoad in progress or failed
            return(null);
        }
        var newEntry = new MeshEntry();

        MeshByName[name] = newEntry;

        var token = newEntry.TaskLoadToken.Token;

        Task.Run(() => { newEntry.TaskLoad(name); }, token);

        return(null);
    }