event_function(VRT_CTX, struct vmod_priv *priv, enum vcl_event_e e) { switch (e) { case VCL_EVENT_LOAD: return event_load(ctx, priv); case VCL_EVENT_COLD: return event_cold(ctx); case VCL_EVENT_WARM: return event_warm(ctx); default: return (0); } }
//--- wangjian added ---// // 异步加载 void ATOM_Decal::AddStreamingTask() { // 创建材质 if( !_material ) _material = ATOM_MaterialManager::createMaterialFromCore (ATOM_GetRenderDevice(), "/materials/builtin/decal.mat"); // 加载纹理 if( !_texture ) { // 同步或者异步加载纹理 bool bMT = ( ATOM_AsyncLoader::IsRun() );// && ( _load_priority != ATOM_LoadPriority_IMMEDIATE ); _texture = ATOM_CreateTextureResource ( _textureFileName.c_str(), ATOM_PIXEL_FORMAT_UNKNOWN, bMT ? _load_priority : ATOM_LoadPriority_IMMEDIATE ); // 异步加载 if( bMT ) { if( _texture && !_texture->getAsyncLoader()->IsLoadAllFinished() ) { // 加载优先级 int loadPri = _load_priority == ATOM_LoadPriority_IMMEDIATE ? _texture->getAsyncLoader()->priority : _load_priority; ATOM_LOADRequest_Event * event_load( ATOM_NEW( ATOM_LOADRequest_Event, _textureFileName.c_str(), this, loadPri, _texture->getAsyncLoader(), ATOM_LOADRequest_Event::FLAG_SHOW ) ); } else _load_flag = LOAD_ALLFINISHED; } else _load_flag = LOAD_ALLFINISHED; } }