32 SpecificAssetImporter() { assetType = internalAssetType; }
33 static AssetType GetStaticAssetType() {
return internalAssetType; }
34 static const char* GetStaticAssetTypeName() {
return GetAssetTypeToString(internalAssetType); }
35 virtual void OnDeleteAsset(AssetStructType& asset) {}
37 virtual void* IncrementAssetUse(
Uuid uuid)
override {
38 void* output =
nullptr;
39 if (TryGetIfLoaded(uuid, output)) {
40 AssetStructType* asset =
static_cast<AssetStructType*
>(output);
42 if (asset->assetLoadStatus == AssetLoadStatus::Ready) {
43 ++asset->referenceCount;
50 return LoadAsset(uuid);
56 virtual void DecrementAssetUse(
Uuid uuid)
override {
57 void* output =
nullptr;
59 if (TryGetIfLoaded(uuid, output) && output !=
nullptr) {
60 AssetStructType* asset =
static_cast<AssetStructType*
>(output);
61 if (asset->referenceCount <= 1) {
62 OnDeleteAsset(*asset);
66 --asset->referenceCount;
71 virtual bool TryGetIfLoaded(
Uuid uuid,
void*& output)
override {
72 auto assetInMap = assets.find(uuid);
73 if (assetInMap != assets.end()) {
74 output = &assetInMap->second;
81 virtual void IncrementOrLoad(
Uuid uuid)
override {
82 auto assetInMap = assets.find(uuid);
83 if (assetInMap != assets.end()) {
84 ++assetInMap->second.referenceCount;
90 size_t AssetCount()
const {
return assets.size(); }
91 bool HasAssets()
const {
return assets.size() != 0; }
93 auto begin()
noexcept {
return assets.begin(); }
94 auto cbegin()
const noexcept {
return assets.begin(); }
95 auto end()
noexcept {
return assets.end(); }
96 auto cend()
const noexcept {
return assets.cend(); }
99 std::map<Uuid, AssetStructType> assets;