diff options
Diffstat (limited to 'source/base')
-rw-r--r-- | source/base/StarMemoryAssetSource.cpp | 6 | ||||
-rw-r--r-- | source/base/StarPackedAssetSource.cpp | 6 |
2 files changed, 12 insertions, 0 deletions
diff --git a/source/base/StarMemoryAssetSource.cpp b/source/base/StarMemoryAssetSource.cpp index a7554b6..5dec123 100644 --- a/source/base/StarMemoryAssetSource.cpp +++ b/source/base/StarMemoryAssetSource.cpp @@ -57,6 +57,12 @@ IODevicePtr MemoryAssetSource::open(String const& path) { assetPos = clamp<StreamOffset>(assetPos - p, 0, assetSize); } + IODevicePtr clone() override { + auto cloned = make_shared<AssetReader>(assetData, assetSize, name); + cloned->assetPos = assetPos; + return cloned; + } + char* assetData; size_t assetSize; StreamOffset assetPos = 0; diff --git a/source/base/StarPackedAssetSource.cpp b/source/base/StarPackedAssetSource.cpp index 59e64cc..8979978 100644 --- a/source/base/StarPackedAssetSource.cpp +++ b/source/base/StarPackedAssetSource.cpp @@ -136,6 +136,12 @@ IODevicePtr PackedAssetSource::open(String const& path) { assetPos = clamp<StreamOffset>(assetSize - p, 0, assetSize); } + IODevicePtr clone() override { + auto cloned = make_shared<AssetReader>(file, path, fileOffset, assetSize); + cloned->assetPos = assetPos; + return cloned; + } + FilePtr file; String path; StreamOffset fileOffset; |