@@ -207,21 +207,65 @@ public void RemoveClips(Object controller)
207207 return ;
208208 }
209209
210+ if ( overrideController == null )
211+ {
212+ Debug . LogError ( "No valid AnimatorOverrideController found." ) ;
213+ return ;
214+ }
215+
210216 if ( originalOverrides == null || originalOverrides . Count == 0 )
211217 {
212218 Debug . LogWarning ( "No original overrides found to restore." ) ;
213219 return ;
214220 }
215221
216- // Restaura os overrides originais
217- overrideController . ApplyOverrides ( originalOverrides ) ;
222+ if ( clipReplacements == null || clipReplacements . Count == 0 )
223+ {
224+ Debug . LogWarning ( "No clip replacements configured to restore." ) ;
225+ return ;
226+ }
227+
228+ // Get the current overrides from the AnimatorOverrideController
229+ var currentOverrides = new List < KeyValuePair < AnimationClip , AnimationClip > > ( overrideController . overridesCount ) ;
230+ overrideController . GetOverrides ( currentOverrides ) ;
231+
232+ // Create a new list to store the restored overrides
233+ var restoredOverrides = new List < KeyValuePair < AnimationClip , AnimationClip > > ( currentOverrides ) ;
234+
235+ // Restore only the clips configured in clipReplacements
236+ foreach ( var replacement in clipReplacements )
237+ {
238+ var baseClipName = replacement . baseClipName ;
239+ var originalOverride = originalOverrides . FirstOrDefault ( o => o . Key . name == baseClipName ) ;
240+
241+ if ( originalOverride . Key != null )
242+ {
243+ // Replace the current clip with the original
244+ for ( int i = 0 ; i < restoredOverrides . Count ; i ++ )
245+ {
246+ if ( restoredOverrides [ i ] . Key . name == baseClipName )
247+ {
248+ restoredOverrides [ i ] = originalOverride ;
249+ break ;
250+ }
251+ }
252+ }
253+ else
254+ {
255+ Debug . LogWarning ( $ "Original clip for { baseClipName } not found in saved overrides.") ;
256+ }
257+ }
258+
259+ // Apply the restored overrides to the AnimatorOverrideController
260+ overrideController . ApplyOverrides ( restoredOverrides ) ;
218261
219262 if ( ! Application . isPlaying )
220263 {
221- Debug . Log ( "Original clips have been restored." ) ;
264+ Debug . Log ( "Specified clips have been restored." ) ;
222265 }
223266 }
224267
268+
225269 /// <summary>
226270 /// Attempts to extract an AnimatorOverrideController from the given object.
227271 /// </summary>
0 commit comments