diff --git a/packages/avatar/src/AvatarImage.ts b/packages/avatar/src/AvatarImage.ts index 6f7e92b..762fbe9 100644 --- a/packages/avatar/src/AvatarImage.ts +++ b/packages/avatar/src/AvatarImage.ts @@ -314,6 +314,9 @@ export class AvatarImage implements IAvatarImage, IAvatarEffectListener const canvas = GetRenderer().texture.generateCanvas(texture); 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..7e5789a 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/communication/src/messages/parser/inventory/badges/BadgeReceivedParser.ts b/packages/communication/src/messages/parser/inventory/badges/BadgeReceivedParser.ts index b4b6bcd..08d3eac 100644 --- a/packages/communication/src/messages/parser/inventory/badges/BadgeReceivedParser.ts +++ b/packages/communication/src/messages/parser/inventory/badges/BadgeReceivedParser.ts @@ -1,14 +1,16 @@ -import { IMessageDataWrapper, IMessageParser } from '@nitrots/api'; +import { IMessageDataWrapper, IMessageParser } from '@nitrots/api'; export class BadgeReceivedParser implements IMessageParser { private _badgeId: number; private _badgeCode: string; + private _senderName: string; public flush(): boolean { this._badgeId = 0; this._badgeCode = null; + this._senderName = ''; return true; } @@ -19,6 +21,7 @@ export class BadgeReceivedParser implements IMessageParser this._badgeId = wrapper.readInt(); this._badgeCode = wrapper.readString(); + this._senderName = wrapper.bytesAvailable ? wrapper.readString() : ''; return true; } @@ -32,4 +35,9 @@ export class BadgeReceivedParser implements IMessageParser { return this._badgeCode; } -} + + public get senderName(): string + { + return this._senderName; + } +} \ No newline at end of file diff --git a/packages/room/src/RoomPreviewer.ts b/packages/room/src/RoomPreviewer.ts index 3f49af8..53b7537 100644 --- a/packages/room/src/RoomPreviewer.ts +++ b/packages/room/src/RoomPreviewer.ts @@ -239,6 +239,8 @@ export class RoomPreviewer if(this.isRoomEngineReady) { + if((this._currentPreviewObjectCategory === RoomObjectCategory.FLOOR) && (this._currentPreviewObjectType === classId) && (this._currentPreviewObjectData === (extra || ''))) return RoomPreviewer.PREVIEW_OBJECT_ID; + this.reset(false); this._currentPreviewObjectType = classId; diff --git a/packages/room/src/object/visualization/avatar/AvatarVisualization.ts b/packages/room/src/object/visualization/avatar/AvatarVisualization.ts index ff2cbf6..99643e6 100644 --- a/packages/room/src/object/visualization/avatar/AvatarVisualization.ts +++ b/packages/room/src/object/visualization/avatar/AvatarVisualization.ts @@ -163,6 +163,18 @@ export class AvatarVisualization extends RoomObjectSpriteVisualization implement super.dispose(); 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) { diff --git a/packages/room/src/object/visualization/furniture/IsometricImageFurniVisualization.ts b/packages/room/src/object/visualization/furniture/IsometricImageFurniVisualization.ts index 799fc68..df98fa8 100644 --- a/packages/room/src/object/visualization/furniture/IsometricImageFurniVisualization.ts +++ b/packages/room/src/object/visualization/furniture/IsometricImageFurniVisualization.ts @@ -26,6 +26,17 @@ export class IsometricImageFurniVisualization extends FurnitureAnimatedVisualiza this._uniqueId = `${Date.now()}-${Math.random().toString(36).substring(2, 9)}`; 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..93570e9 100644 --- a/packages/room/src/object/visualization/room/RoomPlane.ts +++ b/packages/room/src/object/visualization/room/RoomPlane.ts @@ -157,6 +157,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; }