Fixing destruction
This commit is contained in:
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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));
|
||||
|
||||
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user