Merge pull request #207 from SHADE-DP/SP3-13-Assets-Manager
Fixed and Updated internal asset creation pipeline for editor (Textures) Accounted for texture compilation within editor Fixed bug with rebuilding of asset collection and asset directory Added checks for already registered assets and sub assets
This commit is contained in:
commit
638e95473c
|
@ -161,21 +161,39 @@ namespace SHADE
|
|||
newPath += PREFAB_FOLDER;
|
||||
newPath += name;
|
||||
newPath += PREFAB_EXTENSION;
|
||||
data = new SHPrefabAsset();
|
||||
{
|
||||
auto prefab = new SHPrefabAsset();
|
||||
prefab->name = name;
|
||||
|
||||
data = prefab;
|
||||
}
|
||||
|
||||
break;
|
||||
|
||||
case AssetType::SCENE:
|
||||
newPath += SCENE_FOLDER;
|
||||
newPath += name;
|
||||
newPath += SCENE_EXTENSION;
|
||||
data = new SHSceneAsset();
|
||||
|
||||
{
|
||||
auto scene = new SHSceneAsset();
|
||||
scene->name = name;
|
||||
|
||||
data = scene;
|
||||
}
|
||||
break;
|
||||
|
||||
case AssetType::MATERIAL:
|
||||
newPath += MATERIAL_FOLDER;
|
||||
newPath += name;
|
||||
newPath += MATERIAL_EXTENSION;
|
||||
data = new SHMaterialAsset();
|
||||
|
||||
{
|
||||
auto material = new SHMaterialAsset();
|
||||
material->name = name;
|
||||
|
||||
data = material;
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
|
@ -192,7 +210,7 @@ namespace SHADE
|
|||
false
|
||||
};
|
||||
|
||||
assetCollection.insert({
|
||||
auto result = assetCollection.emplace(
|
||||
id,
|
||||
SHAsset(
|
||||
name,
|
||||
|
@ -201,10 +219,13 @@ namespace SHADE
|
|||
newPath,
|
||||
false
|
||||
)
|
||||
});
|
||||
);
|
||||
|
||||
assetData.emplace(id, data);
|
||||
|
||||
SHAssetMetaHandler::WriteMetaData(asset);
|
||||
SaveAsset(id);
|
||||
|
||||
return id;
|
||||
}
|
||||
|
||||
|
@ -361,6 +382,21 @@ namespace SHADE
|
|||
modelPath += MODEL_EXTENSION;
|
||||
newPath = modelPath;
|
||||
}
|
||||
else if (ext == DDS_EXTENSION.data())
|
||||
{
|
||||
auto pathGen = SHTextureCompiler::CompileTextureAsset(path);
|
||||
if (!pathGen.has_value())
|
||||
{
|
||||
SHLOG_ERROR("Texture Compilation Failed for: {}", path.string());
|
||||
return;
|
||||
}
|
||||
newPath = pathGen.value();
|
||||
}
|
||||
else
|
||||
{
|
||||
SHLOG_WARNING("File Type compilation not yet Implemented: {}", path.string());
|
||||
return;
|
||||
}
|
||||
|
||||
if (genMeta)
|
||||
{
|
||||
|
@ -376,7 +412,7 @@ namespace SHADE
|
|||
void SHAssetManager::RefreshDirectory() noexcept
|
||||
{
|
||||
SHFileSystem::DestroyDirectory(folderRoot);
|
||||
assetCollection.clear();
|
||||
//assetCollection.clear();
|
||||
BuildAssetCollection();
|
||||
}
|
||||
|
||||
|
@ -507,7 +543,7 @@ namespace SHADE
|
|||
{
|
||||
SHAsset newAsset{
|
||||
path.stem().string(),
|
||||
GenerateAssetID(AssetType::SHADER_BUILT_IN),
|
||||
GenerateAssetID(AssetType::TEXTURE),
|
||||
AssetType::SHADER_BUILT_IN,
|
||||
path,
|
||||
false
|
||||
|
@ -614,6 +650,12 @@ namespace SHADE
|
|||
for (auto i{ 0 }; i < asset.subAssets.size(); ++i)
|
||||
{
|
||||
auto const id = asset.subAssets[i]->id;
|
||||
|
||||
if (assetCollection.contains(id))
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
assetCollection[id] = *asset.subAssets[i];
|
||||
delete asset.subAssets[i];
|
||||
asset.subAssets[i] = &assetCollection[id];
|
||||
|
|
|
@ -138,6 +138,7 @@ namespace SHADE
|
|||
metaFile.close();
|
||||
|
||||
meta.path = path.parent_path().string() + "/" + path.stem().string();
|
||||
meta.path.make_preferred();
|
||||
|
||||
return meta;
|
||||
}
|
||||
|
|
|
@ -152,7 +152,10 @@ namespace SHADE
|
|||
bool found{ false };
|
||||
for (auto const& asset : assets)
|
||||
{
|
||||
assetCollection.emplace(asset.id, asset);
|
||||
if (!assetCollection.contains(asset.id))
|
||||
{
|
||||
assetCollection.emplace(asset.id, asset);
|
||||
}
|
||||
if (file.name == asset.name)
|
||||
{
|
||||
AssetPath path{ file.path };
|
||||
|
@ -170,22 +173,6 @@ namespace SHADE
|
|||
toGenerate.push_back(&file);
|
||||
}
|
||||
}
|
||||
//for (auto const& asset : assets)
|
||||
//{
|
||||
// assetCollection.emplace(asset.id, asset);
|
||||
// for(auto& file : folder->files)
|
||||
// {
|
||||
// if (file.name == asset.name)
|
||||
// {
|
||||
// AssetPath path{ file.path };
|
||||
// if (SHAssetMetaHandler::GetTypeFromExtension(path.extension().string()) == asset.type)
|
||||
// {
|
||||
// file.assetMeta = &assetCollection[asset.id];
|
||||
// break;
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
//}
|
||||
|
||||
for (auto i {0}; i < folder->files.size(); ++i)
|
||||
{
|
||||
|
|
Loading…
Reference in New Issue