bool Helium::AssetResolver::Resolve( const Name& identity, Reflect::ObjectPtr& pointer, const Reflect::MetaClass* pointerClass ) { // Paths begin with / if (!identity.IsEmpty() && (*identity)[0] == '/') { HELIUM_TRACE( TraceLevels::Info, TXT( "Resolving object [%s]\n" ), identity.Get() ); AssetPath p; p.Set(*identity); size_t loadRequestId = AssetLoader::GetStaticInstance()->BeginLoadObject(p); m_Fixups.Push( Fixup( pointer, pointerClass, loadRequestId ) ); return true; } else { #if HELIUM_TOOLS // Some extra checking to make friendly error messages String str ( identity.Get() ); uint32_t index = Invalid< uint32_t >(); int parseSuccessful = str.Parse( "%d", &index ); if (!parseSuccessful) { HELIUM_TRACE( TraceLevels::Warning, "AssetResolver::Resolve - Identity '%s' is not a number, but doesn't start with '/'. If this is a path, it must begin with '/'!\n", *str); } #endif HELIUM_TRACE( TraceLevels::Debug, TXT( "Deferring resolution of [%s] to archive\n" ), identity.Get() ); } return false; }
bool Helium::AssetIdentifier::Identify( Reflect::Object* object, Name& identity ) { Asset *pAsset = Reflect::SafeCast<Asset>(object); if ( pAsset ) { identity.Set(pAsset->GetPath().ToString()); HELIUM_TRACE( TraceLevels::Info, TXT( "Identifying object [%s]\n" ), identity.Get() ); return true; } else if ( object ) { HELIUM_TRACE( TraceLevels::Info, TXT( "Deferring identification of object of type [%s]\n" ), object->GetMetaClass()->m_Name ); } return false; }
bool Helium::AssetResolver::Resolve( const Name& identity, Reflect::ObjectPtr& pointer, const Reflect::MetaClass* pointerClass ) { // Paths begin with / if (!identity.IsEmpty() && (*identity)[0] == '/') { HELIUM_TRACE( TraceLevels::Info, TXT( "Resolving object [%s]\n" ), identity.Get() ); AssetPath p; p.Set(*identity); size_t loadRequestId = AssetLoader::GetStaticInstance()->BeginLoadObject(p); m_Fixups.Push( Fixup( pointer, pointerClass, loadRequestId ) ); return true; } else { HELIUM_TRACE( TraceLevels::Info, TXT( "Deferring resolution of [%s] to archive\n" ), identity.Get() ); } return false; }