void DataBlockBinder::Bind(IDataBlockPtr block, ReloadPolicy policy){ policy = (policy == RELOAD_DEFAULT) ? defaultpolicy : policy; if (IRenderer::RENDERER_UNINITIALIZE == r.GetCurrentStage()){ initbinder->Add(block, policy); }else{ // If the texture has not already been loaded if (block->GetID() == 0) r.BindDataBlock(block.get()); // Listen for reload events (based on policy) reloader->Add(block, policy); } }
IDataBlockPtr DataStore::find(std::string name){ vector<std::string> dividedName; vector<std::string>::iterator itName; boost::split(dividedName, name, boost::is_any_of("/"), boost::token_compress_on); DataStore* current = (0==name.find("/"))?m_root.get():this; IDataBlockPtr db; for(itName=dividedName.begin(); itName !=dividedName.end(); itName++){ if(0==(*itName).size()) continue; db = current->retrieveObject(*itName); current = dynamic_cast<DataStore*>(db.get()); if(not current)return db; } return db; }