diff --git a/src/clientSideScene/CameraControls.ts b/src/clientSideScene/CameraControls.ts index 13656712d..cb5115676 100644 --- a/src/clientSideScene/CameraControls.ts +++ b/src/clientSideScene/CameraControls.ts @@ -306,9 +306,19 @@ export class CameraControls { event: 'camera_drag_end', callback: cb, }) + this.engineCommandManager.subscribeToUnreliable({ + event: 'default_camera_zoom', + callback: (a) => { + console.log('zoom', a) + cb(a) + }, + }) this.engineCommandManager.subscribeTo({ event: 'default_camera_zoom', - callback: cb, + callback: (a) => { + console.log('zoom', a) + cb(a) + }, }) this.engineCommandManager.subscribeTo({ event: 'default_camera_get_settings', diff --git a/src/lang/std/engineConnection.ts b/src/lang/std/engineConnection.ts index a3cfee591..639e78aeb 100644 --- a/src/lang/std/engineConnection.ts +++ b/src/lang/std/engineConnection.ts @@ -1230,7 +1230,7 @@ type ModelTypes = Models['OkModelingCmdResponse_type']['type'] type UnreliableResponses = Extract< Models['OkModelingCmdResponse_type'], - { type: 'highlight_set_entity' | 'camera_drag_move' } + { type: 'highlight_set_entity' | 'camera_drag_move' | 'default_camera_zoom' } > export interface UnreliableSubscription { event: T @@ -1572,9 +1572,11 @@ export class EngineCommandManager extends EventTarget { 'message', (event: MessageEvent) => { const result: UnreliableResponses = JSON.parse(event.data) + console.log('result', result) Object.values( this.unreliableSubscriptions[result.type] || {} ).forEach( + // TODO: There is only one response that uses the unreliable channel atm, // highlight_set_entity, if there are more it's likely they will all have the same // sequence logic, but I'm not sure if we use a single global sequence or a sequence @@ -1933,6 +1935,9 @@ export class EngineCommandManager extends EventTarget { ) { ;(cmd as any).sequence = this.outSequence this.outSequence++ + if(cmd.type === 'default_camera_zoom') { + console.log('sending zoom', cmd) + } this.engineConnection?.unreliableSend(command) return Promise.resolve(null) } else if (