@@ -171,7 +171,7 @@ function ObservationWindow( photonAbsorptionModel, modelViewTransform, tandem )
171
171
photonAbsorptionModel . activeMolecules . addItemAddedListener ( addMoleculeToWindow ) ;
172
172
173
173
// Set up the event listeners for adding and removing photons.
174
- photonAbsorptionModel . photons . addItemAddedListener ( function ( addedPhoton ) {
174
+ photonAbsorptionModel . photonGroup . elementCreatedEmitter . addListener ( function ( addedPhoton ) {
175
175
const photonNode = new PhotonNode ( addedPhoton , self . modelViewTransform ) ;
176
176
photonLayer . addChild ( photonNode ) ;
177
177
@@ -181,11 +181,11 @@ function ObservationWindow( photonAbsorptionModel, modelViewTransform, tandem )
181
181
} ;
182
182
addedPhoton . positionProperty . link ( photonPositionObserver ) ;
183
183
184
- photonAbsorptionModel . photons . addItemRemovedListener ( function removalListener ( removedPhoton ) {
184
+ photonAbsorptionModel . photonGroup . elementDisposedEmitter . addListener ( function removalListener ( removedPhoton ) {
185
185
if ( removedPhoton === addedPhoton ) {
186
186
addedPhoton . positionProperty . hasListener ( photonPositionObserver ) && addedPhoton . positionProperty . unlink ( photonPositionObserver ) ;
187
187
photonLayer . removeChild ( photonNode ) ;
188
- photonAbsorptionModel . photons . removeItemRemovedListener ( removalListener ) ;
188
+ photonAbsorptionModel . photonGroup . elementDisposedEmitter . removeListener ( removalListener ) ;
189
189
}
190
190
} ) ;
191
191
} ) ;
@@ -282,18 +282,11 @@ inherit( Rectangle, ObservationWindow, {
282
282
*/
283
283
photonCheckBounds : function ( ) {
284
284
285
- const photonsToRemove = [ ] ;
286
- for ( let photon = 0 ; photon < this . photonAbsorptionModel . photons . length ; photon ++ ) {
287
- if ( ! this . particleRemovalBounds . containsPoint ( this . modelViewTransform . modelToViewPosition ( this . photonAbsorptionModel . photons . get ( photon ) . positionProperty . get ( ) ) ) ) {
288
- photonsToRemove . push ( this . photonAbsorptionModel . photons . get ( photon ) ) ;
289
- }
290
- }
291
- this . photonAbsorptionModel . photons . removeAll ( photonsToRemove ) ;
292
-
293
- // dispose all photons that leave the observation window
294
- for ( let i = 0 ; i < photonsToRemove . length ; i ++ ) {
295
- this . photonAbsorptionModel . photonGroup . disposeElement ( photonsToRemove [ i ] ) ;
296
- }
285
+ const photonsToRemove = this . photonAbsorptionModel . photonGroup . filter ( photon => {
286
+ const position = this . modelViewTransform . modelToViewPosition ( photon . positionProperty . get ( ) ) ;
287
+ return ! this . particleRemovalBounds . containsPoint ( position ) ;
288
+ } ) ;
289
+ photonsToRemove . forEach ( photon => this . photonAbsorptionModel . photonGroup . disposeElement ( photon ) ) ;
297
290
} ,
298
291
299
292
/**
0 commit comments