@@ -55,8 +55,7 @@ class ProtectedZoneSceneObject extends SceneObject {
5555 private _prefs ?: ProtectedZonePreferences
5656 private _joltBodyId ?: Jolt . BodyID
5757 private _mesh ?: THREE . Mesh
58- private _collision ?: ( event : OnContactAddedEvent ) => void
59- private _collisionPersisted ?: ( event : OnContactPersistedEvent ) => void
58+ private _collision ?: ( event : OnContactAddedEvent | OnContactPersistedEvent ) => void
6059 private _collisionRemoved ?: ( event : OnContactRemovedEvent ) => void
6160
6261 private _robotsInside : Map < MirabufSceneObject , number > = new Map ( )
@@ -74,7 +73,7 @@ class ProtectedZoneSceneObject extends SceneObject {
7473
7574 private isRobotInside ( robot : MirabufSceneObject ) : boolean {
7675 const timeInside = this . _robotsInside . get ( robot ) ?? 0
77- return Date . now ( ) - timeInside < 500
76+ return Date . now ( ) - timeInside < 100
7877 }
7978
8079 public constructor ( parentAssembly : MirabufSceneObject , index : number , render ?: boolean ) {
@@ -127,8 +126,8 @@ class ProtectedZoneSceneObject extends SceneObject {
127126 this . _mesh ?. scale . set ( props . scale . x , props . scale . y , props . scale . z )
128127 }
129128
130- // Detect when something enters the zone
131- this . _collision = ( event : OnContactAddedEvent ) => {
129+ // Detect when something enters or persists in the zone
130+ this . _collision = ( event : OnContactAddedEvent | OnContactPersistedEvent ) => {
132131 const body1 = event . message . body1
133132 const body2 = event . message . body2
134133
@@ -143,19 +142,7 @@ class ProtectedZoneSceneObject extends SceneObject {
143142 this . handleContactPenalty ( body1 , body2 )
144143 }
145144 OnContactAddedEvent . addListener ( this . _collision )
146-
147- // Detects when something persists in the zone
148- this . _collisionPersisted = ( event : OnContactPersistedEvent ) => {
149- const body1 = event . message . body1
150- const body2 = event . message . body2
151-
152- if ( body1 . GetIndexAndSequenceNumber ( ) == this . _joltBodyId ?. GetIndexAndSequenceNumber ( ) ) {
153- this . zoneCollision ( body2 )
154- } else if ( body2 . GetIndexAndSequenceNumber ( ) == this . _joltBodyId ?. GetIndexAndSequenceNumber ( ) ) {
155- this . zoneCollision ( body1 )
156- }
157- }
158- OnContactPersistedEvent . addListener ( this . _collisionPersisted )
145+ OnContactPersistedEvent . addListener ( this . _collision )
159146
160147 // Detects when something leaves the zone
161148 this . _collisionRemoved = ( event : OnContactRemovedEvent ) => {
@@ -216,7 +203,10 @@ class ProtectedZoneSceneObject extends SceneObject {
216203 }
217204 }
218205
219- if ( this . _collision ) OnContactAddedEvent . removeListener ( this . _collision )
206+ if ( this . _collision ) {
207+ OnContactAddedEvent . removeListener ( this . _collision )
208+ OnContactPersistedEvent . removeListener ( this . _collision )
209+ }
220210 if ( this . _collisionRemoved ) OnContactRemovedEvent . removeListener ( this . _collisionRemoved )
221211 }
222212
0 commit comments