Fixing destruction

This commit is contained in:
Dynamitos
2024-07-18 11:45:56 +02:00
parent 67c4ce2f7a
commit 3b6eb3ebcc
31 changed files with 173 additions and 82 deletions
+6
View File
@@ -100,6 +100,7 @@ AssetRegistry::AssetFolder* AssetRegistry::getOrCreateFolder(std::string_view fu
}
void AssetRegistry::initialize(const std::filesystem::path& _rootFolder, Gfx::PGraphics _graphics) {
std::unique_lock l(get().assetLock);
this->graphics = _graphics;
this->rootFolder = _rootFolder;
this->assetRoot = new AssetFolder("");
@@ -279,26 +280,31 @@ void AssetRegistry::saveAsset(PAsset asset, uint64 identifier, const std::filesy
std::filesystem::path AssetRegistry::getRootFolder() { return get().rootFolder; }
void AssetRegistry::registerMesh(OMeshAsset mesh) {
std::unique_lock l(assetLock);
AssetFolder* folder = getOrCreateFolder(mesh->getFolderPath());
folder->meshes[mesh->getName()] = std::move(mesh);
}
void AssetRegistry::registerTexture(OTextureAsset texture) {
std::unique_lock l(assetLock);
AssetFolder* folder = getOrCreateFolder(texture->getFolderPath());
folder->textures[texture->getName()] = std::move(texture);
}
void AssetRegistry::registerFont(OFontAsset font) {
std::unique_lock l(assetLock);
AssetFolder* folder = getOrCreateFolder(font->getFolderPath());
folder->fonts[font->getName()] = std::move(font);
}
void AssetRegistry::registerMaterial(OMaterialAsset material) {
std::unique_lock l(assetLock);
AssetFolder* folder = getOrCreateFolder(material->getFolderPath());
folder->materials[material->getName()] = std::move(material);
}
void AssetRegistry::registerMaterialInstance(OMaterialInstanceAsset material) {
std::unique_lock l(assetLock);
AssetFolder* folder = getOrCreateFolder(material->getFolderPath());
folder->instances[material->getName()] = std::move(material);
}
+1
View File
@@ -71,6 +71,7 @@ class AssetRegistry {
std::ifstream internalCreateReadStream(const std::filesystem::path& relaitvePath, std::ios_base::openmode openmode = std::ios::in);
std::filesystem::path rootFolder;
std::mutex assetLock;
AssetFolder* assetRoot;
Gfx::PGraphics graphics;
bool release = false;
+4 -1
View File
@@ -22,10 +22,13 @@ TextureAsset::TextureAsset(std::string_view folderPath, std::string_view name) :
TextureAsset::~TextureAsset() {}
void TextureAsset::save(ArchiveBuffer& buffer) const { Serialization::save(buffer, ktxData); }
void TextureAsset::save(ArchiveBuffer& buffer) const { /*
Serialization::save(buffer, ktxData);*/
}
void TextureAsset::load(ArchiveBuffer& buffer) {
ktxTexture2* ktxHandle;
Array<uint8> ktxData;
Serialization::load(buffer, ktxData);
KTX_ASSERT(
ktxTexture_CreateFromMemory(ktxData.data(), ktxData.size(), KTX_TEXTURE_CREATE_LOAD_IMAGE_DATA_BIT, (ktxTexture**)&ktxHandle));
+1 -2
View File
@@ -13,13 +13,12 @@ class TextureAsset : public Asset {
virtual void save(ArchiveBuffer& buffer) const override;
virtual void load(ArchiveBuffer& buffer) override;
Gfx::PTexture getTexture() { return texture; }
void setTexture(Array<uint8> data) { ktxData = std::move(data); }
void setTexture(Array<uint8> data) { }
uint32 getWidth();
uint32 getHeight();
private:
Gfx::OTexture texture;
Array<uint8> ktxData;
friend class TextureLoader;
};
DEFINE_REF(TextureAsset)