From a5d57b787b97a12eaffbbe3905b44435ca46fa0d Mon Sep 17 00:00:00 2001 From: Steven Vergenz Date: Mon, 10 Feb 2020 12:14:31 -0800 Subject: [PATCH] Fix some breaks after the GUID update (#480) * Fix problems with guid conversion * Fix another map --- packages/sdk/src/adapters/multipeer/rules.ts | 4 ++-- packages/sdk/src/types/internal/context.ts | 8 ++++---- packages/sdk/src/types/runtime/appearance.ts | 2 +- packages/sdk/src/types/runtime/assets/assetContainer.ts | 2 +- packages/sdk/src/types/runtime/assets/material.ts | 2 +- 5 files changed, 9 insertions(+), 9 deletions(-) diff --git a/packages/sdk/src/adapters/multipeer/rules.ts b/packages/sdk/src/adapters/multipeer/rules.ts index 5aef95229..ecce3bb8a 100644 --- a/packages/sdk/src/adapters/multipeer/rules.ts +++ b/packages/sdk/src/adapters/multipeer/rules.ts @@ -736,7 +736,7 @@ export const Rules: { [id in Payloads.PayloadType]: Rule } = { undefined; if (client.authoritative || client.userId && client.userId === exclusiveUser) { // Create no-op creation message. Implicit sync from initialization until they're updated - for (const spawned of message.payload.actors) { + for (const spawned of message.payload.actors || []) { session.cacheInitializeActorMessage({ payload: { type: 'actor-update', @@ -745,7 +745,7 @@ export const Rules: { [id in Payloads.PayloadType]: Rule } = { }); } // create somewhere to store anim updates - for (const newAnim of message.payload.animations) { + for (const newAnim of message.payload.animations || []) { session.cacheAnimationCreation(newAnim.id, message.replyToId, newAnim.duration); } // Allow the message to propagate to the app. diff --git a/packages/sdk/src/types/internal/context.ts b/packages/sdk/src/types/internal/context.ts index 095717122..3c9ce3b30 100644 --- a/packages/sdk/src/types/internal/context.ts +++ b/packages/sdk/src/types/internal/context.ts @@ -393,9 +393,9 @@ export class InternalContext { this.prevGeneration = this.generation; const syncObjects = [ - ...Object.values(this.actorSet), + ...this.actorSet.values(), ...this.assetsIterable(), - ...Object.values(this.userSet), + ...this.userSet.values(), ...this.animationSet.values() ] as Array>; @@ -641,7 +641,7 @@ export class InternalContext { public getStats(): PerformanceStats { const networkStats = this.protocol.conn.statsReport; const stats: PerformanceStats = { - actorCount: Object.keys(this.actorSet).length, + actorCount: this.actorSet.size, actorWithMeshCount: 0, prefabCount: 0, materialCount: 0, @@ -676,7 +676,7 @@ export class InternalContext { } stats.texturePixelsAverage = stats.texturePixelsTotal / (stats.textureCount || 1); - for (const actor of Object.values(this.actorSet)) { + for (const actor of this.actorSet.values()) { if (actor.appearance.activeAndEnabled && actor.appearance.mesh) { stats.actorWithMeshCount += 1; } diff --git a/packages/sdk/src/types/runtime/appearance.ts b/packages/sdk/src/types/runtime/appearance.ts index 165d85d56..3c15c971e 100644 --- a/packages/sdk/src/types/runtime/appearance.ts +++ b/packages/sdk/src/types/runtime/appearance.ts @@ -128,7 +128,7 @@ export class Appearance implements AppearanceLike { /** @returns A shared reference to this actor's mesh, or null if this actor has no mesh */ public get mesh() { - return this.actor.context.internal.lookupAsset(this._meshId).mesh; + return this.actor.context.internal.lookupAsset(this._meshId)?.mesh; } public set mesh(value) { this.meshId = value?.id ?? ZeroGuid; diff --git a/packages/sdk/src/types/runtime/assets/assetContainer.ts b/packages/sdk/src/types/runtime/assets/assetContainer.ts index ed9bd7e2f..515fc92a9 100644 --- a/packages/sdk/src/types/runtime/assets/assetContainer.ts +++ b/packages/sdk/src/types/runtime/assets/assetContainer.ts @@ -40,7 +40,7 @@ export class AssetContainer { /** A mapping of asset IDs to assets in this container */ public get assetsById() { return this._assets as ReadonlyMap; } /** A list of all assets in this container */ - public get assets() { return Object.values(this._assets); } + public get assets() { return [...this._assets.values()]; } /** A list of all materials in this container */ public get materials() { return this.assets.filter(a => a instanceof Material) as Material[]; } /** A list of all meshes in this container */ diff --git a/packages/sdk/src/types/runtime/assets/material.ts b/packages/sdk/src/types/runtime/assets/material.ts index 6ad63c51a..f904c4ba7 100644 --- a/packages/sdk/src/types/runtime/assets/material.ts +++ b/packages/sdk/src/types/runtime/assets/material.ts @@ -67,7 +67,7 @@ export class Material extends Asset implements MaterialLike, Patchable