isRemoved

val isRemoved: MutableStateFlow<Boolean>

Indicates whether this traffic object has passed behind the user and should be removed.

This flag implements a two-phase removal process:

  • Phase 1: ViewModel sets this to true, signaling the UI to start exit animation

  • Phase 2: After the next state update, the object is removed from the list entirely

The UI layer should observe this state via collectAsState() and use it to trigger fade-out or scale-down animations before the object disappears from the list.

Note: This is a public MutableStateFlow (not private with accessor) because:

  • The ViewModel needs to mutate it when objects pass behind the user

  • The UI needs to observe it for animation coordination

  • The tight coupling between ViewModel mutation and UI observation is intentional and essential for the delayed removal animation pattern