diff --git a/cocos/asset/assets/buffer-asset.jsb.ts b/cocos/asset/assets/buffer-asset.jsb.ts index 45d72f98045..92e92bb87b7 100644 --- a/cocos/asset/assets/buffer-asset.jsb.ts +++ b/cocos/asset/assets/buffer-asset.jsb.ts @@ -31,6 +31,13 @@ declare const jsb: any; export type BufferAsset = JsbBufferAsset; export const BufferAsset: typeof JsbBufferAsset = jsb.BufferAsset; +BufferAsset.prototype.buffer = function() { + if (!this._bufferLegacy) { + this._bufferLegacy = new Uint8Array(this.view); + } + return this._bufferLegacy; +}; + cclegacy.BufferAsset = jsb.BufferAsset; // handle meta data, it is generated automatically diff --git a/cocos/native-binding/decorators.ts b/cocos/native-binding/decorators.ts index d1b5ee6f0f7..0db71c4ac8a 100644 --- a/cocos/native-binding/decorators.ts +++ b/cocos/native-binding/decorators.ts @@ -99,8 +99,7 @@ interface cc_BufferAsset_Context_Args { } export function patch_cc_BufferAsset(ctx: cc_BufferAsset_Context_Args, apply = defaultExec) { const { BufferAsset } = { ...ctx }; - const _nativeAssetDescriptor = Object.getOwnPropertyDescriptor(BufferAsset.prototype, '_nativeAsset'); - apply(() => { $.override(BufferAsset.prototype, '_nativeAsset', _nativeAssetDescriptor); }, 'override', '_nativeAsset'); + apply(() => { $.serializable(BufferAsset.prototype, 'view', () => { return new Uint8Array(); }); }, 'serializable', 'view'); apply(() => { $.ccclass('cc.BufferAsset')(BufferAsset); }, 'ccclass', null); } // end of patch_cc_BufferAsset diff --git a/native/cocos/core/assets/BufferAsset.cpp b/native/cocos/core/assets/BufferAsset.cpp index 86eefe15dcd..8536c0682ef 100644 --- a/native/cocos/core/assets/BufferAsset.cpp +++ b/native/cocos/core/assets/BufferAsset.cpp @@ -26,12 +26,5 @@ namespace cc { -ccstd::any BufferAsset::getNativeAsset() const { - return _buffer; -} - -void BufferAsset::setNativeAsset(const ccstd::any &obj) { - _buffer = ccstd::any_cast(obj); -} } // namespace cc diff --git a/native/cocos/core/assets/BufferAsset.h b/native/cocos/core/assets/BufferAsset.h index 4bd4fdef2ec..2ae102ff66c 100644 --- a/native/cocos/core/assets/BufferAsset.h +++ b/native/cocos/core/assets/BufferAsset.h @@ -24,7 +24,7 @@ #pragma once -#include "core/ArrayBuffer.h" +#include "core/TypedArray.h" #include "core/assets/Asset.h" namespace cc { @@ -34,17 +34,11 @@ class BufferAsset final : public Asset { BufferAsset() = default; ~BufferAsset() override = default; - inline ArrayBuffer *getBuffer() const { return _buffer; } - - inline void setNativeAssetForJS(ArrayBuffer *buffer) { _buffer = buffer; } - inline ArrayBuffer *getNativeAssetForJS() const { return _buffer; } - - ccstd::any getNativeAsset() const override; - void setNativeAsset(const ccstd::any &obj) override; - bool validate() const override { return _buffer != nullptr; } + const Uint8Array &getView() { return _view; } + void setView(const Uint8Array &view) { _view = view; } private: - ArrayBuffer::Ptr _buffer; + Uint8Array _view; CC_DISALLOW_COPY_MOVE_ASSIGN(BufferAsset); }; diff --git a/native/tools/swig-config/assets.i b/native/tools/swig-config/assets.i index df743a8e9d5..ccbaca1d07b 100644 --- a/native/tools/swig-config/assets.i +++ b/native/tools/swig-config/assets.i @@ -92,8 +92,6 @@ %rename(_getBindposes) cc::Skeleton::getBindposes; %rename(_setBindposes) cc::Skeleton::setBindposes; -%rename(buffer) cc::BufferAsset::getBuffer; - // ----- Module Macro Section ------ @@ -134,7 +132,7 @@ %attribute(cc::ImageAsset, cc::PixelFormat, format, getFormat, setFormat); %attribute(cc::ImageAsset, ccstd::string&, url, getUrl, setUrl); -%attribute(cc::BufferAsset, cc::ArrayBuffer*, _nativeAsset, getNativeAssetForJS, setNativeAssetForJS); +%attribute(cc::BufferAsset, cc::Uint8Array&, view, getView, setView); %attribute(cc::TextureBase, bool, isCompressed, isCompressed); %attribute(cc::TextureBase, uint32_t, _width, getWidth, setWidth);