Fixed and Updated internal asset creation pipeline for editor (Textures) #207

Merged
XiaoQiDigipen merged 1 commits from SP3-13-Assets-Manager into main 2022-11-15 01:50:14 +08:00
3 changed files with 54 additions and 24 deletions
Showing only changes of commit 16e357acb0 - Show all commits

View File

@ -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];

View File

@ -138,6 +138,7 @@ namespace SHADE
metaFile.close();
meta.path = path.parent_path().string() + "/" + path.stem().string();
meta.path.make_preferred();
return meta;
}

View File

@ -151,8 +151,11 @@ namespace SHADE
bool found{ false };
for (auto const& asset : assets)
{
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)
{