@@ -158,7 +158,7 @@ class MultiplayerSystem {
158
158
// Called by the host, initializes the world with some defined set of objects, robots can be spawned in later
159
159
async initWorld ( physicsSystem : PhysicsSystem ) {
160
160
const sceneObjects : InitObjectData [ ] = await Promise . all (
161
- World . sceneRenderer . mirabufSceneObjects . getAll ( ) . map ( async sceneObject => ( {
161
+ World . sceneRenderer . mirabufSceneObjects . ( ) . map ( async sceneObject => ( {
162
162
sceneObjectKey : sceneObject . id ,
163
163
assemblyHash : await MirabufCachingService . hashBuffer (
164
164
mirabuf . Assembly . encode ( sceneObject . mirabufInstance . parser . assembly ) . finish ( ) . buffer as ArrayBuffer
@@ -169,6 +169,7 @@ class MultiplayerSystem {
169
169
} ) )
170
170
)
171
171
172
+
172
173
await this . broadcast ( {
173
174
type : "init" ,
174
175
data : { physicsSystem, objects : sceneObjects } ,
@@ -185,25 +186,11 @@ class MultiplayerSystem {
185
186
this . _connections . set ( conn . peer , conn )
186
187
MultiplayerStateEvent . dispatch ( MultiplayerStateEventType . PEER_CHANGE )
187
188
await this . send ( conn . peer , { type : "info" , data : this . info } )
188
- // I don't think this is necessary if we just move the call to initWorld
189
- // for (const objectId of this.getOwnSceneObjectIDs()) {
190
- // const obj = World.sceneRenderer.sceneObjects.get(objectId)
191
- // if (!(obj instanceof MirabufSceneObject)) return
192
- // const hash = await MirabufCachingService.hashBuffer(
193
- // mirabuf.Assembly.encode(obj.mirabufInstance.parser.assembly).finish().buffer as ArrayBuffer
194
- // )
195
- // await this.send(conn.peer, {
196
- // type: "newObject",
197
- // data: {
198
- // sceneObjectKey: objectId,
199
- // assemblyHash: hash,
200
- // miraType: obj.miraType,
201
- // initialPreferences: obj.getPreferenceData(),
202
- // bodyIds: obj.getAllBodies(),
203
- // },
204
- // })
205
- // await this.send(conn.peer, { type: "metadataUpdate", data: obj.multiplayerInfo })
206
- // }
189
+
190
+ const ownSceneObjects = this . getOwnSceneObjectIDs ( ) ;
191
+ World . sceneRenderer . mirabufSceneObjects . getAll ( ) . filter ( obj => ownSceneObjects . includes ( obj . id ) ) . forEach ( async obj => {
192
+ await this . send ( conn . peer , { type : "metadataUpdate" , data : obj . multiplayerInfo } )
193
+ } )
207
194
} )
208
195
209
196
conn . on ( "data" , async ( data : unknown ) => {
0 commit comments