diff --git a/packages/avatar/src/AvatarImage.ts b/packages/avatar/src/AvatarImage.ts index 6f7e92b..17b48be 100644 --- a/packages/avatar/src/AvatarImage.ts +++ b/packages/avatar/src/AvatarImage.ts @@ -315,6 +315,9 @@ export class AvatarImage implements IAvatarImage, IAvatarEffectListener const url = canvas.toDataURL('image/png'); + canvas.width = 0; + canvas.height = 0; + return url; } diff --git a/packages/avatar/src/cache/ImageData.ts b/packages/avatar/src/cache/ImageData.ts index c43c2c2..00039cd 100644 --- a/packages/avatar/src/cache/ImageData.ts +++ b/packages/avatar/src/cache/ImageData.ts @@ -23,6 +23,12 @@ export class ImageData public dispose(): void { + if(this._container) + { + this._container.destroy({ children: true }); + this._container = null; + } + this._texture = null; this._regPoint = null; this._colorTransform = null; diff --git a/packages/camera/src/RoomCameraWidgetManager.ts b/packages/camera/src/RoomCameraWidgetManager.ts index 1d28a4c..f45f933 100644 --- a/packages/camera/src/RoomCameraWidgetManager.ts +++ b/packages/camera/src/RoomCameraWidgetManager.ts @@ -117,7 +117,12 @@ export class RoomCameraWidgetManager implements IRoomCameraWidgetManager TextureUtils.writeToTexture(container, renderTexture); - return await TextureUtils.generateImage(renderTexture); + const image = await TextureUtils.generateImage(renderTexture); + + renderTexture.destroy(true); + container.destroy({ children: true }); + + return image; } public get effects(): Map diff --git a/packages/room/src/object/visualization/avatar/AvatarVisualization.ts b/packages/room/src/object/visualization/avatar/AvatarVisualization.ts index ff2cbf6..40a9d30 100644 --- a/packages/room/src/object/visualization/avatar/AvatarVisualization.ts +++ b/packages/room/src/object/visualization/avatar/AvatarVisualization.ts @@ -164,6 +164,18 @@ export class AvatarVisualization extends RoomObjectSpriteVisualization implement if(this._avatarImage) this._avatarImage.dispose(); + if(this._cachedAvatars) + { + for(const avatar of this._cachedAvatars.getValues()) avatar && avatar.dispose(); + this._cachedAvatars.reset(); + } + + if(this._cachedAvatarEffects) + { + for(const avatar of this._cachedAvatarEffects.getValues()) avatar && avatar.dispose(); + this._cachedAvatarEffects.reset(); + } + if(this._reflectionOppositeTexture) { this._reflectionOppositeTexture.destroy(true); diff --git a/packages/room/src/object/visualization/furniture/IsometricImageFurniVisualization.ts b/packages/room/src/object/visualization/furniture/IsometricImageFurniVisualization.ts index 799fc68..79ea71f 100644 --- a/packages/room/src/object/visualization/furniture/IsometricImageFurniVisualization.ts +++ b/packages/room/src/object/visualization/furniture/IsometricImageFurniVisualization.ts @@ -27,6 +27,17 @@ export class IsometricImageFurniVisualization extends FurnitureAnimatedVisualiza this._photoUrl = null; } + public dispose(): void { + if (this._thumbnailTexture instanceof RenderTexture) { + this._thumbnailTexture.destroy(true); + } + + this._thumbnailTexture = null; + this._thumbnailImageNormal = null; + + super.dispose(); + } + public get hasThumbnailImage(): boolean { return !(this._thumbnailImageNormal == null); } diff --git a/packages/room/src/object/visualization/room/RoomPlane.ts b/packages/room/src/object/visualization/room/RoomPlane.ts index 116bdd4..6ac3041 100644 --- a/packages/room/src/object/visualization/room/RoomPlane.ts +++ b/packages/room/src/object/visualization/room/RoomPlane.ts @@ -158,6 +158,16 @@ export class RoomPlane implements IRoomPlane this._animationLayers = []; } + this._windowReflectionLastVisible.clear(); + this._windowReflectionFadeOut.clear(); + this._windowReflectionFirstSeenAt.clear(); + + if(this._maskFilter) + { + this._maskFilter.destroy(); + this._maskFilter = null; + } + this._disposed = true; }