From 6758226ea26fc00edc0a57b2981ee7939aad5749 Mon Sep 17 00:00:00 2001 From: Casper Warden <216465704+casperwardensl@users.noreply.github.com> Date: Fri, 17 Nov 2023 11:55:05 +0000 Subject: [PATCH] Take care not to overwrite gltf overrides when receiving an object update --- lib/classes/ObjectStoreFull.ts | 12 ++++++++++++ package.json | 2 +- 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/lib/classes/ObjectStoreFull.ts b/lib/classes/ObjectStoreFull.ts index e2fb3fd..c4a76f8 100644 --- a/lib/classes/ObjectStoreFull.ts +++ b/lib/classes/ObjectStoreFull.ts @@ -102,6 +102,10 @@ export class ObjectStoreFull extends ObjectStoreLite implements IObjectStore obj.ProfileBegin = Utils.unpackBeginCut(objData.ProfileBegin); obj.ProfileEnd = Utils.unpackEndCut(objData.ProfileEnd); obj.ProfileHollow = Utils.unpackProfileHollow(objData.ProfileHollow); + if (obj.TextureEntry?.gltfMaterialOverrides && !this.cachedMaterialOverrides.has(obj.ID)) + { + this.cachedMaterialOverrides.set(obj.ID, obj.TextureEntry.gltfMaterialOverrides); + } obj.TextureEntry = TextureEntry.from(objData.TextureEntry); const override = this.cachedMaterialOverrides.get(obj.ID); if (override) @@ -439,6 +443,10 @@ export class ObjectStoreFull extends ObjectStoreLite implements IObjectStore pos = pos + 2; const textureEntryLength = buf.readUInt32LE(pos); pos = pos + 4; + if (o.TextureEntry?.gltfMaterialOverrides && !this.cachedMaterialOverrides.has(o.ID)) + { + this.cachedMaterialOverrides.set(o.ID, o.TextureEntry.gltfMaterialOverrides); + } o.TextureEntry = TextureEntry.from(buf.slice(pos, pos + textureEntryLength)); const override = this.cachedMaterialOverrides.get(o.ID); if (override) @@ -523,6 +531,10 @@ export class ObjectStoreFull extends ObjectStoreLite implements IObjectStore if (objectData.TextureEntry.length > 0) { // No idea why the first four bytes are skipped here. + if (o.TextureEntry?.gltfMaterialOverrides && !this.cachedMaterialOverrides.has(o.ID)) + { + this.cachedMaterialOverrides.set(o.ID, o.TextureEntry.gltfMaterialOverrides); + } o.TextureEntry = TextureEntry.from(objectData.TextureEntry.slice(4)); const override = this.cachedMaterialOverrides.get(o.ID); if (override) diff --git a/package.json b/package.json index 5101f6d..6466451 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@caspertech/node-metaverse", - "version": "0.6.16", + "version": "0.6.17", "description": "A node.js interface for Second Life.", "main": "dist/lib/index.js", "types": "dist/lib/index.d.ts",