@caspertech/node-metaverse 0.6.26 → 0.7.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -11,142 +11,64 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
11
11
  Object.defineProperty(exports, "__esModule", { value: true });
12
12
  exports.ObjectResolver = void 0;
13
13
  const __1 = require("..");
14
- const rxjs_1 = require("rxjs");
15
- const LLSD = require("@caspertech/llsd");
14
+ const timers_1 = require("timers");
15
+ const BatchQueue_1 = require("./BatchQueue");
16
16
  class ObjectResolver {
17
17
  constructor(region) {
18
18
  this.region = region;
19
- this.objectsInQueue = {};
20
- this.queue = [];
21
- this.maxConcurrency = 128;
22
- this.currentlyRunning = false;
23
- this.onObjectResolveRan = new rxjs_1.Subject();
19
+ this.resolveQueue = new BatchQueue_1.BatchQueue(256, this.resolveInternal.bind(this));
20
+ this.getCostsQueue = new BatchQueue_1.BatchQueue(256, this.getCostsInternal.bind(this));
24
21
  }
25
22
  resolveObjects(objects, options) {
26
- return new Promise((resolve, reject) => {
23
+ var _a;
24
+ return __awaiter(this, void 0, void 0, function* () {
27
25
  if (!this.region) {
28
- reject(new Error('Region is going away'));
29
- return;
26
+ throw new Error('Region is going away');
30
27
  }
31
- if (options.outputLog) {
32
- }
33
- const objs = {};
28
+ const objs = new Map();
34
29
  const failed = [];
35
30
  for (const obj of objects) {
36
- this.region.objects.populateChildren(obj);
37
- this.scanObject(obj, objs);
38
- }
39
- const queueObject = (id) => {
40
- if (this.objectsInQueue[id] === undefined) {
41
- this.objectsInQueue[id] = {
42
- object: objs[id],
43
- options
44
- };
45
- this.queue.push(id);
46
- }
47
- else if (this.objectsInQueue[id].options.skipInventory && !options.skipInventory) {
48
- this.objectsInQueue[id].options.skipInventory = false;
49
- }
50
- };
51
- const skipped = [];
52
- for (const obj of Object.keys(objs)) {
53
- const id = parseInt(obj, 10);
54
- const gameObject = objs[id];
55
- if (options.outputLog === true) {
56
- }
57
- if (!options.onlyUnresolved || gameObject.resolvedAt === undefined || gameObject.resolvedAt === 0 || (!options.skipInventory && !gameObject.resolvedInventory)) {
58
- if (!options.onlyUnresolved) {
59
- gameObject.resolvedAt = 0;
60
- gameObject.resolveAttempts = 0;
61
- }
62
- queueObject(id);
63
- }
64
- else {
65
- skipped.push(id);
31
+ if (!options.includeTempObjects && (((_a = obj.Flags) !== null && _a !== void 0 ? _a : 0) & __1.PrimFlags.TemporaryOnRez)) {
32
+ continue;
66
33
  }
67
- }
68
- for (const id of skipped) {
69
- delete objs[id];
70
- if (options.outputLog === true) {
34
+ if (!options.includeAvatars && obj.PCode === __1.PCode.Avatar) {
35
+ continue;
71
36
  }
37
+ this.region.objects.populateChildren(obj);
38
+ this.scanObject(obj, objs);
72
39
  }
73
- if (Object.keys(objs).length === 0) {
74
- resolve(failed);
75
- return;
40
+ if (objs.size === 0) {
41
+ return failed;
76
42
  }
77
- let objResolve = undefined;
78
- let objProps = undefined;
79
- const checkObject = (obj) => {
80
- let done = false;
81
- if (obj.resolvedAt !== undefined && obj.resolvedAt > 0) {
82
- if (options.skipInventory === true || obj.resolvedInventory) {
83
- if (options.outputLog === true) {
84
- }
85
- done = true;
86
- }
87
- }
88
- if (obj.resolveAttempts > 2) {
89
- failed.push(obj);
90
- done = true;
91
- }
92
- if (done) {
93
- delete objs[obj.ID];
94
- if (Object.keys(objs).length === 0) {
95
- if (objResolve !== undefined) {
96
- objResolve.unsubscribe();
97
- objResolve = undefined;
98
- }
99
- if (objProps !== undefined) {
100
- objProps.unsubscribe();
101
- objProps = undefined;
102
- }
103
- resolve(failed);
104
- }
105
- }
106
- return done;
107
- };
108
- objResolve = this.onObjectResolveRan.subscribe((obj) => {
109
- if (objs[obj.ID] !== undefined) {
110
- if (options.outputLog === true) {
111
- }
112
- if (!checkObject(obj)) {
113
- if (options.outputLog === true) {
114
- }
115
- setTimeout(() => {
116
- if (!checkObject(obj)) {
117
- if (options.outputLog) {
118
- }
119
- queueObject(obj.ID);
120
- this.run().then(() => {
121
- }).catch((err) => {
122
- console.error(err);
123
- });
124
- }
125
- }, 10000);
126
- }
43
+ return this.resolveQueue.add(Array.from(objs.values()));
44
+ });
45
+ }
46
+ getInventory(object) {
47
+ return __awaiter(this, void 0, void 0, function* () {
48
+ yield this.getInventories([object]);
49
+ });
50
+ }
51
+ getInventories(objects) {
52
+ return __awaiter(this, void 0, void 0, function* () {
53
+ for (const obj of objects) {
54
+ if (!obj.resolvedInventory) {
55
+ yield obj.updateInventory();
127
56
  }
128
- });
129
- if (!this.region) {
130
- return;
131
57
  }
132
- objProps = this.region.clientEvents.onObjectResolvedEvent.subscribe((obj) => {
133
- if (objs[obj.object.ID] !== undefined) {
134
- if (options.outputLog) {
135
- }
136
- if (!checkObject(obj.object)) {
137
- }
138
- }
139
- });
140
- this.run().then(() => {
141
- }).catch((err) => {
142
- console.error(err);
143
- });
144
58
  });
145
59
  }
60
+ getCosts(objects) {
61
+ return __awaiter(this, void 0, void 0, function* () {
62
+ yield this.getCostsQueue.add(objects);
63
+ });
64
+ }
65
+ shutdown() {
66
+ delete this.region;
67
+ }
146
68
  scanObject(obj, map) {
147
69
  const localID = obj.ID;
148
- if (!map[localID]) {
149
- map[localID] = obj;
70
+ if (!map.has(localID)) {
71
+ map.set(localID, obj);
150
72
  if (obj.children) {
151
73
  for (const child of obj.children) {
152
74
  this.scanObject(child, map);
@@ -154,185 +76,130 @@ class ObjectResolver {
154
76
  }
155
77
  }
156
78
  }
157
- run() {
79
+ resolveInternal(objs) {
158
80
  return __awaiter(this, void 0, void 0, function* () {
159
- if (this.currentlyRunning) {
160
- return;
81
+ if (!this.region) {
82
+ throw new Error('Region went away');
161
83
  }
84
+ const objArray = Array.from(objs.values());
162
85
  try {
163
- while (this.queue.length > 0) {
164
- const jobs = [];
165
- for (let x = 0; x < this.maxConcurrency && this.queue.length > 0; x++) {
166
- const objectID = this.queue.shift();
167
- if (objectID !== undefined) {
168
- jobs.push(this.objectsInQueue[objectID]);
169
- delete this.objectsInQueue[objectID];
170
- }
171
- }
172
- yield this.doResolve(jobs);
173
- }
174
- }
175
- catch (error) {
176
- console.error(error);
86
+ yield this.region.clientCommands.region.selectObjects(objArray);
177
87
  }
178
88
  finally {
179
- this.currentlyRunning = false;
89
+ yield this.region.clientCommands.region.deselectObjects(objArray);
180
90
  }
181
- if (this.queue.length > 0) {
182
- this.run().then(() => {
183
- }, (err) => {
184
- console.error(err);
185
- });
91
+ if (!this.region) {
92
+ throw new Error('Region went away');
93
+ }
94
+ const objects = new Map();
95
+ for (const obj of objs.values()) {
96
+ objects.set(obj.ID, obj);
97
+ }
98
+ for (let x = 0; x < 3; x++) {
99
+ try {
100
+ yield this.waitForResolve(objects, 10000);
101
+ }
102
+ catch (_e) {
103
+ }
104
+ }
105
+ const failed = new Set();
106
+ for (const o of objects.values()) {
107
+ failed.add(o);
186
108
  }
109
+ return failed;
187
110
  });
188
111
  }
189
- doResolve(jobs) {
190
- var _a;
112
+ getCostsInternal(objs) {
191
113
  return __awaiter(this, void 0, void 0, function* () {
192
- if (!this.region) {
193
- return;
114
+ const failed = new Set();
115
+ const submitted = new Map();
116
+ for (const obj of objs.values()) {
117
+ submitted.set(obj.FullID.toString(), obj);
194
118
  }
195
- const resolveTime = new Date().getTime() / 1000;
196
- const objectList = [];
197
- let totalRemaining = 0;
198
119
  try {
199
- for (const job of jobs) {
200
- if (job.object.resolvedAt === undefined || job.object.resolvedAt < resolveTime) {
201
- objectList.push(job.object);
202
- totalRemaining++;
203
- }
120
+ if (!this.region) {
121
+ return objs;
204
122
  }
205
- if (objectList.length > 0) {
206
- if (!this.region) {
207
- return;
208
- }
209
- yield this.region.clientCommands.region.selectObjects(objectList);
210
- if (!this.region) {
211
- return;
212
- }
213
- yield this.region.clientCommands.region.deselectObjects(objectList);
214
- for (const chk of objectList) {
215
- if (chk.resolvedAt !== undefined && chk.resolvedAt >= resolveTime) {
216
- totalRemaining--;
123
+ const result = yield this.region.caps.capsPostXML('GetObjectCost', {
124
+ 'object_ids': Array.from(submitted.keys())
125
+ });
126
+ const uuids = Object.keys(result);
127
+ for (const key of uuids) {
128
+ const costs = result[key];
129
+ try {
130
+ if (!this.region) {
131
+ continue;
217
132
  }
218
- }
219
- }
220
- for (const job of jobs) {
221
- if (!this.region) {
222
- return;
223
- }
224
- if (!job.options.skipInventory && (job.options.includeTempObjects || (((_a = job.object.Flags) !== null && _a !== void 0 ? _a : 0) & __1.PrimFlags.TemporaryOnRez) === 0)) {
225
- const o = job.object;
226
- if ((o.resolveAttempts === undefined || o.resolveAttempts < 3) && o.FullID !== undefined && o.name !== undefined && o.Flags !== undefined && !(o.Flags & __1.PrimFlags.InventoryEmpty) && (!o.inventory || o.inventory.length === 0)) {
227
- if (job.options.outputLog) {
228
- }
229
- try {
230
- yield o.updateInventory();
231
- }
232
- catch (error) {
233
- if (o.resolveAttempts === undefined) {
234
- o.resolveAttempts = 0;
235
- }
236
- o.resolveAttempts++;
237
- if (o.FullID !== undefined) {
238
- console.error('Error downloading task inventory of ' + o.FullID.toString() + ':');
239
- console.error(error);
240
- }
241
- else {
242
- console.error('Error downloading task inventory of ' + o.ID + ':');
243
- console.error(error);
244
- }
245
- }
133
+ const obj = this.region.objects.getObjectByUUID(new __1.UUID(key));
134
+ obj.linkPhysicsImpact = parseFloat(costs['linked_set_physics_cost']);
135
+ obj.linkResourceImpact = parseFloat(costs['linked_set_resource_cost']);
136
+ obj.physicaImpact = parseFloat(costs['physics_cost']);
137
+ obj.resourceImpact = parseFloat(costs['resource_cost']);
138
+ obj.limitingType = costs['resource_limiting_type'];
139
+ obj.landImpact = Math.round(obj.linkPhysicsImpact);
140
+ if (obj.linkResourceImpact > obj.linkPhysicsImpact) {
141
+ obj.landImpact = Math.round(obj.linkResourceImpact);
246
142
  }
247
- else {
248
- if (job.options.outputLog) {
249
- }
143
+ obj.calculatedLandImpact = obj.landImpact;
144
+ if (obj.Flags !== undefined && obj.Flags & __1.PrimFlags.TemporaryOnRez && obj.limitingType === 'legacy') {
145
+ obj.calculatedLandImpact = 0;
250
146
  }
251
- o.resolvedInventory = true;
147
+ submitted.delete(key);
148
+ }
149
+ catch (error) {
252
150
  }
253
151
  }
254
152
  }
255
- catch (ignore) {
256
- console.error(ignore);
153
+ catch (error) {
257
154
  }
258
- finally {
259
- if (totalRemaining < 1) {
260
- totalRemaining = 0;
261
- for (const obj of objectList) {
262
- if (obj.resolvedAt === undefined || obj.resolvedAt < resolveTime) {
263
- totalRemaining++;
264
- }
265
- }
266
- if (totalRemaining > 0) {
267
- console.error(totalRemaining + ' objects could not be resolved');
268
- }
155
+ for (const go of submitted.values()) {
156
+ failed.add(go);
157
+ }
158
+ return failed;
159
+ });
160
+ }
161
+ waitForResolve(objs, timeout = 10000) {
162
+ return __awaiter(this, void 0, void 0, function* () {
163
+ const entries = objs.entries();
164
+ for (const [localID, entry] of entries) {
165
+ if (entry.resolvedAt !== undefined) {
166
+ objs.delete(localID);
269
167
  }
270
- const that = this;
271
- const getCosts = function (objIDs) {
272
- return __awaiter(this, void 0, void 0, function* () {
273
- try {
274
- if (!that.region) {
275
- return;
276
- }
277
- const result = yield that.region.caps.capsPostXML('GetObjectCost', {
278
- 'object_ids': objIDs
279
- });
280
- const uuids = Object.keys(result);
281
- for (const key of uuids) {
282
- const costs = result[key];
283
- try {
284
- if (!that.region) {
285
- return;
286
- }
287
- const obj = that.region.objects.getObjectByUUID(new __1.UUID(key));
288
- obj.linkPhysicsImpact = parseFloat(costs['linked_set_physics_cost']);
289
- obj.linkResourceImpact = parseFloat(costs['linked_set_resource_cost']);
290
- obj.physicaImpact = parseFloat(costs['physics_cost']);
291
- obj.resourceImpact = parseFloat(costs['resource_cost']);
292
- obj.limitingType = costs['resource_limiting_type'];
293
- obj.landImpact = Math.round(obj.linkPhysicsImpact);
294
- if (obj.linkResourceImpact > obj.linkPhysicsImpact) {
295
- obj.landImpact = Math.round(obj.linkResourceImpact);
296
- }
297
- obj.calculatedLandImpact = obj.landImpact;
298
- if (obj.Flags !== undefined && obj.Flags & __1.PrimFlags.TemporaryOnRez && obj.limitingType === 'legacy') {
299
- obj.calculatedLandImpact = 0;
300
- }
301
- }
302
- catch (error) {
303
- }
304
- }
168
+ }
169
+ if (objs.size === 0) {
170
+ return;
171
+ }
172
+ return new Promise((resolve, reject) => {
173
+ if (!this.region) {
174
+ reject(new Error('Region went away'));
175
+ return;
176
+ }
177
+ let subs = undefined;
178
+ let timer = undefined;
179
+ subs = this.region.clientEvents.onObjectResolvedEvent.subscribe((obj) => {
180
+ objs.delete(obj.object.ID);
181
+ if (objs.size === 0) {
182
+ if (timer !== undefined) {
183
+ (0, timers_1.clearTimeout)(timer);
184
+ timer = undefined;
305
185
  }
306
- catch (error) {
186
+ if (subs !== undefined) {
187
+ subs.unsubscribe();
188
+ subs = undefined;
307
189
  }
308
- });
309
- };
310
- let ids = [];
311
- const promises = [];
312
- for (const job of jobs) {
313
- if (job.object.landImpact === undefined) {
314
- ids.push(new LLSD.UUID(job.object.FullID));
315
- }
316
- if (ids.length > 255) {
317
- promises.push(getCosts(ids));
318
- ids = [];
190
+ resolve();
319
191
  }
320
- }
321
- if (ids.length > 0) {
322
- promises.push(getCosts(ids));
323
- }
324
- yield Promise.all(promises);
325
- for (const job of jobs) {
326
- if (job.options.outputLog) {
192
+ });
193
+ timer = setTimeout(() => {
194
+ if (subs !== undefined) {
195
+ subs.unsubscribe();
196
+ subs = undefined;
327
197
  }
328
- this.onObjectResolveRan.next(job.object);
329
- }
330
- }
198
+ reject(new Error('Timeout'));
199
+ }, timeout);
200
+ });
331
201
  });
332
202
  }
333
- shutdown() {
334
- delete this.region;
335
- }
336
203
  }
337
204
  exports.ObjectResolver = ObjectResolver;
338
205
  //# sourceMappingURL=ObjectResolver.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ObjectResolver.js","sourceRoot":"","sources":["../../../lib/classes/ObjectResolver.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ObjectResolver.js","sourceRoot":"","sources":["../../../lib/classes/ObjectResolver.ts"],"names":[],"mappings":"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"}
@@ -61,6 +61,7 @@ export declare class ObjectStoreLite implements IObjectStore {
61
61
  private selectedPrimsWithoutUpdate;
62
62
  private selectedChecker?;
63
63
  private blacklist;
64
+ private pendingResolves;
64
65
  rtree?: RBush3D;
65
66
  constructor(circuit: Circuit, agent: Agent, clientEvents: ClientEvents, options: BotOptionFlags);
66
67
  private applyObjectProperties;
@@ -68,7 +69,7 @@ export declare class ObjectStoreLite implements IObjectStore {
68
69
  protected objectUpdate(objectUpdate: ObjectUpdateMessage): void;
69
70
  protected notifyTerseUpdate(obj: GameObject): void;
70
71
  protected notifyObjectUpdate(newObject: boolean, obj: GameObject): void;
71
- private checkAttachToAvatar;
72
+ pendingResolve(id: number): void;
72
73
  protected objectUpdateCached(objectUpdateCached: ObjectUpdateCachedMessage): void;
73
74
  protected objectUpdateCompressed(objectUpdateCompressed: ObjectUpdateCompressedMessage): void;
74
75
  protected decodeAttachPoint(state: number): number;
@@ -49,6 +49,7 @@ class ObjectStoreLite {
49
49
  this.pendingObjectProperties = new Map;
50
50
  this.selectedPrimsWithoutUpdate = new Map();
51
51
  this.blacklist = new Map();
52
+ this.pendingResolves = new Set();
52
53
  agent.localID = 0;
53
54
  this.options = options;
54
55
  this.fullStore = false;
@@ -318,12 +319,6 @@ class ObjectStoreLite {
318
319
  this.clientEvents.onSelectedObjectEvent.next(evt);
319
320
  }
320
321
  }
321
- if (o.ParentID !== undefined) {
322
- const parent = this.objects.get(o.ParentID);
323
- if (parent !== undefined && parent.PCode === PCode_1.PCode.Avatar) {
324
- this.checkAttachToAvatar(o);
325
- }
326
- }
327
322
  }
328
323
  requestMissingObject(localID, attempt = 0) {
329
324
  return __awaiter(this, void 0, void 0, function* () {
@@ -539,7 +534,31 @@ class ObjectStoreLite {
539
534
  const parentObj = this.objects.get((_a = obj.ParentID) !== null && _a !== void 0 ? _a : 0);
540
535
  if (obj.ParentID === 0 || (obj.ParentID !== undefined && parentObj !== undefined && parentObj.PCode === PCode_1.PCode.Avatar)) {
541
536
  if (newObject) {
542
- this.checkAttachToAvatar(obj);
537
+ if (obj.IsAttachment && obj.ParentID !== undefined) {
538
+ if (parentObj !== undefined && parentObj.PCode === PCode_1.PCode.Avatar) {
539
+ const avatar = this.agent.currentRegion.agents[parentObj.FullID.toString()];
540
+ let invItemID = UUID_1.UUID.zero();
541
+ if (obj.NameValue['AttachItemID']) {
542
+ invItemID = new UUID_1.UUID(obj.NameValue['AttachItemID'].value);
543
+ }
544
+ this.agent.currentRegion.clientCommands.region.resolveObject(obj, {}).then(() => {
545
+ try {
546
+ if (obj.itemID === undefined) {
547
+ obj.itemID = UUID_1.UUID.zero();
548
+ }
549
+ obj.itemID = invItemID;
550
+ if (avatar !== undefined) {
551
+ avatar.addAttachment(obj);
552
+ }
553
+ }
554
+ catch (err) {
555
+ console.error(err);
556
+ }
557
+ }).catch(() => {
558
+ console.error('Failed to resolve new avatar attachment');
559
+ });
560
+ }
561
+ }
543
562
  const newObj = new NewObjectEvent_1.NewObjectEvent();
544
563
  newObj.localID = obj.ID;
545
564
  newObj.objectID = obj.FullID;
@@ -560,42 +579,13 @@ class ObjectStoreLite {
560
579
  }
561
580
  const pendingProp = this.pendingObjectProperties.get(obj.FullID.toString());
562
581
  if (pendingProp) {
563
- this.pendingObjectProperties.delete(obj.FullID.toString());
564
582
  this.applyObjectProperties(obj, pendingProp);
583
+ this.pendingObjectProperties.delete(obj.FullID.toString());
565
584
  }
566
585
  }
567
586
  }
568
- checkAttachToAvatar(obj) {
569
- if (obj.IsAttachment && obj.ParentID !== undefined) {
570
- const parentObj = this.objects.get(obj.ParentID);
571
- if (parentObj !== undefined && parentObj.PCode === PCode_1.PCode.Avatar) {
572
- const avatar = this.agent.currentRegion.agents[parentObj.FullID.toString()];
573
- let invItemID = UUID_1.UUID.zero();
574
- if (obj.NameValue['AttachItemID']) {
575
- invItemID = new UUID_1.UUID(obj.NameValue['AttachItemID'].value);
576
- }
577
- try {
578
- if (avatar.getAttachment(invItemID)) {
579
- return;
580
- }
581
- }
582
- catch (e) {
583
- }
584
- this.agent.currentRegion.clientCommands.region.resolveObject(obj, true, false).then(() => {
585
- try {
586
- obj.itemID = invItemID;
587
- if (avatar !== undefined) {
588
- avatar.addAttachment(obj);
589
- }
590
- }
591
- catch (err) {
592
- console.error(err);
593
- }
594
- }).catch(() => {
595
- console.error('Failed to resolve new avatar attachment');
596
- });
597
- }
598
- }
587
+ pendingResolve(id) {
588
+ this.pendingResolves.add(id);
599
589
  }
600
590
  objectUpdateCached(objectUpdateCached) {
601
591
  if (this.circuit === undefined) {