@@ -11,15 +11,14 @@ import type {
1111 ClientInfo ,
1212 EncodedAssembly ,
1313 InitObjectData ,
14- LocalSceneObjectId ,
1514 MatchModePenalty ,
1615 MatchModeStateData ,
1716 MessageType ,
1817 ObjectPreferences ,
19- RemoteSceneObjectId ,
2018 UpdateObjectData ,
2119} from "./types"
2220import EventSystem from "@/systems/EventSystem.ts"
21+ import type { SceneObjectId } from "@/systems/scene/SceneRenderer.ts"
2322
2423export const peerMessageHandlers = {
2524 info : handlePeerInfo ,
@@ -44,7 +43,7 @@ export const peerMessageHandlers = {
4443}
4544
4645const pendingOperations : ( ( ) => void ) [ ] = [ ]
47- const progressHandles : Map < number , ProgressHandle > = new Map ( )
46+ const progressHandles : Map < SceneObjectId , ProgressHandle > = new Map ( )
4847
4948async function handleMatchModeState ( data : MatchModeStateData ) {
5049 console . log ( data )
@@ -78,9 +77,7 @@ function handlePeerUpdate(data: UpdateObjectData[], peerId: string, timestamp: n
7877 clientToUpdateMap . set ( peerId , timestamp )
7978
8079 data . forEach ( ( { sceneObjectKey, gamePiecesControlled, bodies } ) => {
81- const sceneObject = World . sceneRenderer . sceneObjects . get (
82- World . multiplayerSystem ! . convertSceneObjectId ( peerId , sceneObjectKey )
83- )
80+ const sceneObject = World . sceneRenderer . sceneObjects . get ( sceneObjectKey )
8481 if ( sceneObject == null ) {
8582 console . warn (
8683 `Multiplayer SceneObject: ${ sceneObjectKey } not found in sceneObjects map. Multiplayer SceneObjects must be initialized before being updated.`
@@ -201,13 +198,9 @@ async function handleNewObject(data: InitObjectData, peerId: string) {
201198 object . nameOverride = clientToInfoMap . get ( peerId ) ?. displayName ?? peerId
202199
203200 console . log ( "Registering object" , object , data )
204- const localSceneObjectKey = World . sceneRenderer . registerSceneObject ( object )
205- console . log ( "linking object" , data . sceneObjectKey , "->" , localSceneObjectKey )
206-
207- World . multiplayerSystem ?. setSceneObjectIdMapping ( peerId , data . sceneObjectKey , localSceneObjectKey )
201+ World . sceneRenderer . registerSceneObject ( object )
208202
209- clientToObjectMap . get ( peerId ) ?. push ( object . id as LocalSceneObjectId ) ||
210- clientToObjectMap . set ( peerId , [ object . id as LocalSceneObjectId ] )
203+ clientToObjectMap . get ( peerId ) ?. push ( object . id ) || clientToObjectMap . set ( peerId , [ object . id ] )
211204
212205 // Sets bodyMap
213206 const clientBodyIds = object . getAllBodyIds ( )
@@ -250,31 +243,28 @@ async function handleAssemblyRequest(data: AssemblyRequestData, peerId: string)
250243 } )
251244}
252245
253- function handleDeleteObject ( sceneObjectKey : RemoteSceneObjectId , peerId : string ) {
246+ function handleDeleteObject ( sceneObjectKey : SceneObjectId , peerId : string ) {
254247 if ( ! World . multiplayerSystem ) return
255248 const clientToObjectMap = World . multiplayerSystem . _clientToObjectMap
256- const localKey = World . multiplayerSystem ! . convertSceneObjectId ( peerId , sceneObjectKey )
257249
258- const peerClient = [ ...clientToObjectMap . entries ( ) ] . find ( ( [ _id , keys ] ) => keys . includes ( localKey ) )
250+ const peerClient = [ ...clientToObjectMap . entries ( ) ] . find ( ( [ _id , keys ] ) => keys . includes ( sceneObjectKey ) )
259251 if ( peerClient != null ) {
260252 const keys = clientToObjectMap . get ( peerClient [ 0 ] )
261- const index = keys ?. indexOf ( World . multiplayerSystem . convertSceneObjectId ( peerId , sceneObjectKey ) ) ?? - 1
253+ const index = keys ?. indexOf ( sceneObjectKey ) ?? - 1
262254 if ( index != - 1 ) {
263255 keys ?. splice ( index )
264256 }
265257 }
266258
267- if ( ! World . sceneRenderer . sceneObjects . has ( localKey ) ) {
259+ if ( ! World . sceneRenderer . sceneObjects . has ( sceneObjectKey ) ) {
268260 pendingOperations . push ( ( ) => handleDeleteObject ( sceneObjectKey , peerId ) )
269261 }
270262
271- World . sceneRenderer . removeSceneObject ( localKey )
263+ World . sceneRenderer . removeSceneObject ( sceneObjectKey )
272264}
273265
274266function handleObjectConfiguration ( data : ObjectPreferences , peerId : string ) {
275- const sceneObject = World . sceneRenderer . sceneObjects . get (
276- World . multiplayerSystem ! . convertSceneObjectId ( peerId , data . sceneObjectKey )
277- )
267+ const sceneObject = World . sceneRenderer . sceneObjects . get ( data . sceneObjectKey )
278268 if ( sceneObject instanceof MirabufSceneObject ) {
279269 if ( sceneObject . isOwnObject ) {
280270 console . warn ( "received config for own object" )
@@ -287,10 +277,8 @@ function handleObjectConfiguration(data: ObjectPreferences, peerId: string) {
287277 }
288278}
289279
290- function disableObjectPhysics ( sceneObjectKey : RemoteSceneObjectId , peerId : string ) {
291- const sceneObject = World . sceneRenderer . sceneObjects . get (
292- World . multiplayerSystem ! . convertSceneObjectId ( peerId , sceneObjectKey )
293- )
280+ function disableObjectPhysics ( sceneObjectKey : SceneObjectId , peerId : string ) {
281+ const sceneObject = World . sceneRenderer . sceneObjects . get ( sceneObjectKey )
294282 if ( sceneObject instanceof MirabufSceneObject ) {
295283 if ( sceneObject . isOwnObject ) {
296284 console . warn ( "received disable for own object" )
@@ -302,10 +290,8 @@ function disableObjectPhysics(sceneObjectKey: RemoteSceneObjectId, peerId: strin
302290 }
303291}
304292
305- function enableObjectPhysics ( sceneObjectKey : RemoteSceneObjectId , peerId : string ) {
306- const sceneObject = World . sceneRenderer . sceneObjects . get (
307- World . multiplayerSystem ! . convertSceneObjectId ( peerId , sceneObjectKey )
308- )
293+ function enableObjectPhysics ( sceneObjectKey : SceneObjectId , peerId : string ) {
294+ const sceneObject = World . sceneRenderer . sceneObjects . get ( sceneObjectKey )
309295 if ( sceneObject instanceof MirabufSceneObject ) {
310296 if ( sceneObject . isOwnObject ) {
311297 console . warn ( "received enablephysics for own object" )
@@ -318,9 +304,7 @@ function enableObjectPhysics(sceneObjectKey: RemoteSceneObjectId, peerId: string
318304}
319305
320306function handleMatchModePenalty ( data : MatchModePenalty , peerId : string ) {
321- const obj = World . sceneRenderer . sceneObjects . get (
322- World . multiplayerSystem ! . convertSceneObjectId ( peerId , data . objectId )
323- )
307+ const obj = World . sceneRenderer . sceneObjects . get ( data . objectId )
324308 if ( ! ( obj instanceof MirabufSceneObject ) ) {
325309 console . warn ( "can't handle penalty for object" , data . objectId , obj )
326310 pendingOperations . push ( ( ) => handleMatchModePenalty ( data , peerId ) )
0 commit comments