-
Notifications
You must be signed in to change notification settings - Fork 60
Fix for transform subscriptions when actor is an attachment #745
Fix for transform subscriptions when actor is an attachment #745
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Some protection regarding potentially undefined syncActor needs to be added. See comments
@@ -305,8 +305,10 @@ export const Rules: { [id in Payloads.PayloadType]: Rule } = { | |||
message: Message<Payloads.ActorCorrection> | |||
) => { | |||
const syncActor = session.actorSet.get(message.payload.actorId); | |||
if (syncActor && ((client.authoritative && !syncActor.grabbedBy) | |||
|| (syncActor.grabbedBy === client.id))) { | |||
const attachment = syncActor.initialization.message.payload.actor.attachment; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
It is possible for syncActor to be undefined here which will cause this to throw an exception. Getting the attachment will need to be moved into the if block below it where syncActor will already be tested for undefined. Alternatively you can do optional chaining on the syncActor like:
const attachment = syncActor?.initialization.message.payload.actor.attachment;
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Fixed. See latest commit.
@@ -402,8 +404,10 @@ export const Rules: { [id in Payloads.PayloadType]: Rule } = { | |||
message: Message<Payloads.ActorUpdate> | |||
) => { | |||
const syncActor = session.actorSet.get(message.payload.actor.id); | |||
const attachment = syncActor.initialization.message.payload.actor.attachment; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
See same comment above about syncActyor being undefined.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Fixed. See latest commit.
This fix allows transform subscriptions to pass to the app when actor is an attachment.
Issue #739
This PR is similar to #740 but for the correct branch (red).