protected override void OnRealtimeModelReplaced(VehicleLoadoutModel previousModel, VehicleLoadoutModel currentModel) { // This method is called when the model is replaced, we can use it to initialize or reset any state if needed if (previousModel != null) { // Cleanup or reset logic for previous model if necessary previousModel.parts.modelAdded -= OnPartAdded; previousModel.parts.modelRemoved -= OnPartRemoved; } if (currentModel != null) { if (currentModel.isFreshModel) { _isLateJoiner = false; } else { _isLateJoiner = true; } previousModel.parts.modelAdded += OnPartAdded; previousModel.parts.modelRemoved += OnPartRemoved; if (_isLateJoiner && currentModel.parts.Count > 0) { // Cancel any existing coroutine to prevent duplicates if (_lateJoinerSetupCoroutine != null) { StopCoroutine(_lateJoinerSetupCoroutine); } // Start a new setup coroutine _lateJoinerSetupCoroutine = StartCoroutine(SetupLateJoinerParenting()); return; // break early } // Initialize or reset logic for current model if necessary } })