Пример #1
0
int loader_thread(void *loader) {
    ResourceLoader *resourceLoader = (ResourceLoader *) loader;
    IResourceManager *resourceManager = resourceLoader->getResourceManager();
    LoadingJob *curJob;
    while (true) {
        // get a new job from the in list.
        curJob = resourceLoader->getJobIn();

        // process the job
        switch (curJob->type) {
        case LOAD_JOB_MESH:
            // load a mesh
            curJob->data = resourceManager->readMeshData(curJob->ref->fileName, LOAD_NORMAL_VERTEX, 1.0);
            break;

        case LOAD_JOB_TEXTURE:
            // load a texture
            curJob->data = resourceManager->loadBMPImage(curJob->ref->fileName);
            break;

        default:
            cerr << "Unknown load job\n";
            exit(1);
            break;
        }

        // put the finished job in the out list.
        resourceLoader->addJobOut(curJob);
    }
    return 0;
}