@@ -251,6 +251,64 @@ namespace gdjs {
251
251
this . onModelChanged ( objectData ) ;
252
252
}
253
253
254
+ saveWholeGame ( currentScene : RuntimeScene ) : void {
255
+ const sceneStack = currentScene . getGame ( ) . _sceneStack . _stack ;
256
+
257
+ const allSyncData : any [ ] = [ ] ;
258
+ allSyncData . push ( currentScene . getGame ( ) . getNetworkSyncData ( { syncEverythingForWholeGameSaveState : true } ) ) ;
259
+
260
+ sceneStack . forEach ( scene => {
261
+ allSyncData . push ( scene . getNetworkSyncData ( { syncEverythingForWholeGameSaveState :true } ) )
262
+ }
263
+ ) ;
264
+ sceneStack . forEach ( scene => {
265
+ const sceneObjects = scene . getAdhocListOfAllInstances ( ) ;
266
+ for ( const key in sceneObjects ) {
267
+ if ( sceneObjects . hasOwnProperty ( key ) ) {
268
+ const object = sceneObjects [ key ] ;
269
+ if ( object . getNetworkSyncData ) {
270
+ const syncData = object . getNetworkSyncData ( true ) ;
271
+ allSyncData . push ( syncData ) ;
272
+ }
273
+ }
274
+ }
275
+ } ) ;
276
+ const syncDataJson = JSON . stringify ( allSyncData ) ;
277
+ this . LoadWholeGame ( syncDataJson ) ;
278
+ }
279
+ LoadWholeGame ( syncDataJson : string ) : void {
280
+ this . _runtimeScene . _destroy ( ) ;
281
+ const allSyncData = JSON . parse ( syncDataJson ) ;
282
+ const sceneStack = allSyncData [ 0 ] . ss ;
283
+ console . log ( sceneStack ) ;
284
+ let sceneIndex = 1 ;
285
+ sceneStack . forEach ( ( sceneData : any ) => {
286
+ let scene = sceneStack [ sceneIndex ] ;
287
+
288
+ if ( ! scene ) {
289
+ const sceneAndExtensionData = allSyncData [ sceneIndex ] ;
290
+ scene = new gdjs . RuntimeScene ( this . _runtimeScene . getGame ( ) ) ;
291
+ scene . loadFromScene ( sceneAndExtensionData , { skipCreatingInstances : true } ) ;
292
+ console . log ( scene ) ;
293
+ }
294
+ scene . updateFromNetworkSyncData ( ) ;
295
+ const sceneObjects = scene . getAdhocListOfAllInstances ( ) ;
296
+ for ( const key in sceneObjects ) {
297
+ if ( sceneObjects . hasOwnProperty ( key ) ) {
298
+ const object = sceneObjects [ key ] ;
299
+ const objectSyncData = sceneData . objects [ key ] ;
300
+ if ( objectSyncData ) {
301
+ object . onCreated ( ) ;
302
+ object . updateFromNetworkSyncData ( objectSyncData ) ;
303
+ }
304
+
305
+ }
306
+ }
307
+
308
+ sceneIndex ++ ;
309
+ } ) ;
310
+ }
311
+
254
312
_updateModel ( objectData : Model3DObjectData ) {
255
313
const rotationX = objectData . content . rotationX || 0 ;
256
314
const rotationY = objectData . content . rotationY || 0 ;
0 commit comments