From 7a9b72093c43407b527510b427db662700409f45 Mon Sep 17 00:00:00 2001 From: Sam Reid Date: Fri, 17 May 2024 08:04:17 -0600 Subject: [PATCH] Update FieldIO serialization, see https://github.com/phetsims/projectile-data-lab/issues/330 --- js/common/model/Field.ts | 21 +++------------------ 1 file changed, 3 insertions(+), 18 deletions(-) diff --git a/js/common/model/Field.ts b/js/common/model/Field.ts index 22a8f80..26cfdee 100644 --- a/js/common/model/Field.ts +++ b/js/common/model/Field.ts @@ -19,7 +19,6 @@ import StringUnionIO from '../../../../tandem/js/types/StringUnionIO.js'; import NumberIO from '../../../../tandem/js/types/NumberIO.js'; import PDLConstants from '../PDLConstants.js'; import Projectile, { ProjectileStateObject } from './Projectile.js'; -import ArrayIO from '../../../../tandem/js/types/ArrayIO.js'; import Emitter from '../../../../axon/js/Emitter.js'; import dotRandom from '../../../../dot/js/dotRandom.js'; import NumberProperty from '../../../../axon/js/NumberProperty.js'; @@ -39,6 +38,7 @@ import { Color } from '../../../../scenery/js/imports.js'; import PDLPreferences from '../PDLPreferences.js'; import StringUnionProperty from '../../../../axon/js/StringUnionProperty.js'; import { screenIdentifierForScreenTandemName } from './ScreenIdentifier.js'; +import ReferenceArrayIO from '../../../../tandem/js/types/ReferenceArrayIO.js'; const launchSoundClip = new SoundClip( launch_mp3, { initialOutputLevel: 0.2 } ); soundManager.addSoundGenerator( launchSoundClip ); @@ -382,24 +382,9 @@ export default abstract class Field extends PhetioObject { public static readonly FieldIO = new IOType( 'FieldIO', { valueType: Field, documentation: 'A field in the Projectile Data Lab. This contains the state for the projectiles, separated into airborne and landed projectiles.', - defaultDeserializationMethod: 'applyState', stateSchema: { - airborneProjectiles: ArrayIO( Projectile.ProjectileIO ), - landedProjectiles: ArrayIO( Projectile.ProjectileIO ) - }, - toStateObject: field => field.toStateObject(), - applyState: ( field: Field, stateObject: FieldStateObject ) => { - - field.airborneProjectiles.length = 0; - field.landedProjectiles.length = 0; - - stateObject.airborneProjectiles.forEach( ( projectileStateObject: ProjectileStateObject ) => { - field.airborneProjectiles.push( Projectile.ProjectileIO.fromStateObject( projectileStateObject ) ); - } ); - - stateObject.landedProjectiles.forEach( ( projectileStateObject: ProjectileStateObject ) => { - field.landedProjectiles.push( Projectile.ProjectileIO.fromStateObject( projectileStateObject ) ); - } ); + airborneProjectiles: ReferenceArrayIO( Projectile.ProjectileIO ), + landedProjectiles: ReferenceArrayIO( Projectile.ProjectileIO ) } } ); }