diff --git a/Source/Editor/Tools/Terrain/TerrainTools.cpp b/Source/Editor/Tools/Terrain/TerrainTools.cpp index 065f7ffeb..861cb975b 100644 --- a/Source/Editor/Tools/Terrain/TerrainTools.cpp +++ b/Source/Editor/Tools/Terrain/TerrainTools.cpp @@ -74,11 +74,6 @@ struct TextureDataResult PixelFormat Format; Int2 Mip0Size; BytesContainer* Mip0DataPtr; - - TextureDataResult() - : Lock(FlaxStorage::LockData::Invalid) - { - } }; bool GetTextureDataForSampling(Texture* texture, TextureDataResult& data, bool hdr = false) diff --git a/Source/Engine/Content/Assets/Model.cpp b/Source/Engine/Content/Assets/Model.cpp index 829eaeb11..66ca0aa2e 100644 --- a/Source/Engine/Content/Assets/Model.cpp +++ b/Source/Engine/Content/Assets/Model.cpp @@ -262,6 +262,7 @@ bool Model::GenerateSDF(float resolutionScale, int32 lodIndex, bool cacheData, f LOG(Warning, "Cannot generate SDF for virtual models on a main thread."); return true; } + auto chunkLocks = Storage ? Storage->Lock() : FlaxStorage::LockData(); lodIndex = Math::Clamp(lodIndex, HighestResidentLODIndex(), LODs.Count() - 1); // Generate SDF diff --git a/Source/Engine/Content/Assets/ModelBase.cpp b/Source/Engine/Content/Assets/ModelBase.cpp index 599caa810..1847e96d9 100644 --- a/Source/Engine/Content/Assets/ModelBase.cpp +++ b/Source/Engine/Content/Assets/ModelBase.cpp @@ -61,7 +61,7 @@ public: model->GetLODData(_lodIndex, data); if (data.IsInvalid()) { - LOG(Warning, "Missing data chunk"); + LOG(Warning, "Missing data chunk with LOD{} for model '{}'", _lodIndex, model->ToString()); return true; } MemoryReadStream stream(data.Get(), data.Length()); @@ -234,6 +234,7 @@ bool ModelBase::Save(bool withMeshDataFromGpu, const StringView& path) LOG(Error, "To save virtual model asset you need to specify 'withMeshDataFromGpu' (it has no other storage container to get data)."); return true; } + auto chunkLocks = Storage ? Storage->Lock() : FlaxStorage::LockData(); ScopeLock lock(Locker); // Use a temporary chunks for data storage for virtual assets diff --git a/Source/Engine/Content/Storage/FlaxStorage.cpp b/Source/Engine/Content/Storage/FlaxStorage.cpp index 1c6be4971..6967bb5ad 100644 --- a/Source/Engine/Content/Storage/FlaxStorage.cpp +++ b/Source/Engine/Content/Storage/FlaxStorage.cpp @@ -75,8 +75,6 @@ FlaxChunk* FlaxChunk::Clone() const const int32 FlaxStorage::MagicCode = 1180124739; -FlaxStorage::LockData FlaxStorage::LockData::Invalid(nullptr); - struct Header { int32 MagicCode; diff --git a/Source/Engine/Content/Storage/FlaxStorage.h b/Source/Engine/Content/Storage/FlaxStorage.h index 6de462214..f01384b68 100644 --- a/Source/Engine/Content/Storage/FlaxStorage.h +++ b/Source/Engine/Content/Storage/FlaxStorage.h @@ -146,7 +146,6 @@ public: struct LockData { friend FlaxStorage; - static LockData Invalid; private: FlaxStorage* _storage; @@ -159,6 +158,11 @@ public: } public: + LockData() + : _storage(nullptr) + { + } + LockData(const LockData& other) : _storage(other._storage) { diff --git a/Source/Engine/Graphics/Textures/TextureBase.cpp b/Source/Engine/Graphics/Textures/TextureBase.cpp index 81b5f159c..eb838fa07 100644 --- a/Source/Engine/Graphics/Textures/TextureBase.cpp +++ b/Source/Engine/Graphics/Textures/TextureBase.cpp @@ -771,7 +771,7 @@ Task* TextureBase::RequestMipDataAsync(int32 mipIndex) FlaxStorage::LockData TextureBase::LockData() { - return _parent->Storage ? _parent->Storage->Lock() : FlaxStorage::LockData::Invalid; + return _parent->Storage ? _parent->Storage->Lock() : FlaxStorage::LockData(); } void TextureBase::GetMipData(int32 mipIndex, BytesContainer& data) const