const FilePath *Helium::Asset::GetAssetFileSystemPath() { HELIUM_ASSERT( !m_path.IsEmpty() ); FilePath filePath; Asset *pSourceAsset = GetSourceAsset(); if (pSourceAsset) { Package *pPackage = Reflect::SafeCast<Package>( pSourceAsset->GetOwner() ); if ( pPackage ) { PackageLoader *pLoader = pPackage->GetLoader(); HELIUM_ASSERT( pLoader->HasAssetFileState() ); if ( pLoader ) { return &pLoader->GetAssetFileSystemPath( pSourceAsset->GetPath() ); } } } return NULL; }
Asset *Helium::Asset::GetSourceAsset() { HELIUM_ASSERT( !m_path.IsEmpty() ); Asset *pAssetWithSourceFile = this; while ( pAssetWithSourceFile && pAssetWithSourceFile->GetAssetType()->GetFlags() & AssetType::FLAG_GENERATED_FROM_OWNER ) { pAssetWithSourceFile = pAssetWithSourceFile->GetOwner(); } return pAssetWithSourceFile; }
uint64_t Helium::Asset::GetAssetFileTimeStamp() { HELIUM_ASSERT( !m_path.IsEmpty() ); uint64_t timestamp = 0; Asset *pSourceAsset = GetSourceAsset(); if (pSourceAsset) { Package *pPackage = Reflect::SafeCast<Package>( pSourceAsset->GetOwner() ); if ( pPackage ) { PackageLoader *pLoader = pPackage->GetLoader(); HELIUM_ASSERT( pLoader->HasAssetFileState() ); if ( pLoader ) { pLoader->GetAssetFileSystemTimestamp( pSourceAsset->GetPath() ); } } } return timestamp; }
wxDataViewItem ProjectViewModel::GetParent( const wxDataViewItem& item ) const { Asset *node = static_cast< Asset* >( item.GetID() ); return wxDataViewItem( node->GetOwner() ); }