From c7ea62755b5d546a5ef2ce6cc7ad1557d2f6d848 Mon Sep 17 00:00:00 2001 From: Casper Warden <216465704+casperwardensl@users.noreply.github.com> Date: Tue, 21 Nov 2023 17:51:49 +0000 Subject: [PATCH] Only get properties at export time if we don't already have them --- lib/classes/commands/RegionCommands.ts | 11 +++++++++++ lib/classes/public/GameObject.ts | 15 ++++++++++++--- package-lock.json | 4 ++-- package.json | 2 +- 4 files changed, 26 insertions(+), 6 deletions(-) diff --git a/lib/classes/commands/RegionCommands.ts b/lib/classes/commands/RegionCommands.ts index a145c99..75f5bf0 100644 --- a/lib/classes/commands/RegionCommands.ts +++ b/lib/classes/commands/RegionCommands.ts @@ -398,6 +398,17 @@ export class RegionCommands extends CommandsBase return this.currentRegion.resolver.getInventories(objects); } + public async fetchObjectCost(object: GameObject): Promise + { + return this.currentRegion.resolver.getCosts([object]); + } + + public async fetchObjectCosts(objects: GameObject[]): Promise + { + return this.currentRegion.resolver.getCosts(objects); + } + + private waitForObjectByLocalID(localID: number, timeout: number): Promise { return new Promise((resolve, reject) => diff --git a/lib/classes/public/GameObject.ts b/lib/classes/public/GameObject.ts index 794f6f2..1ee599b 100644 --- a/lib/classes/public/GameObject.ts +++ b/lib/classes/public/GameObject.ts @@ -1515,9 +1515,18 @@ export class GameObject implements IGameObjectData const resolver = this.region?.resolver; if (resolver) { - await resolver.resolveObjects([this], { includeTempObjects: true }); - await resolver.getInventory(this); - await resolver.getCosts([this]); + if (this.resolvedAt === undefined) + { + await resolver.resolveObjects([this], { includeTempObjects: true }); + } + if (!this.resolvedInventory) + { + await resolver.getInventory(this); + } + if (this.calculatedLandImpact === undefined) + { + await resolver.getCosts([this]); + } } let root = xml; diff --git a/package-lock.json b/package-lock.json index 90e08d9..3690d87 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "@caspertech/node-metaverse", - "version": "0.7.4", + "version": "0.7.5", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@caspertech/node-metaverse", - "version": "0.7.4", + "version": "0.7.5", "license": "MIT", "dependencies": { "@caspertech/llsd": "^1.0.5", diff --git a/package.json b/package.json index 400ef0c..1e9ec72 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@caspertech/node-metaverse", - "version": "0.7.4", + "version": "0.7.5", "description": "A node.js interface for Second Life.", "main": "dist/lib/index.js", "types": "dist/lib/index.d.ts",