private static void ApplySettings(Uni2DAnimationClip[] a_rAnimationClips, AnimationClipRegeneration a_eRegenerate)
    {
        int iClipCount = a_rAnimationClips.Length;

        if (iClipCount == 1)
        {
            a_rAnimationClips[0].ApplySettings(a_eRegenerate);
        }
        else if (iClipCount > 1)
        {
            // Apply clip settings first, atlases will be generated only after
            // (Atlases can be shared accross clips, so prevent them to be uselessly regenerated several times)
            HashSet <Uni2DTextureAtlas> oAtlases = new HashSet <Uni2DTextureAtlas>( );

            for (int iClipIndex = 0; iClipIndex < iClipCount; ++iClipIndex)
            {
                Uni2DAnimationClip rAnimationClip = a_rAnimationClips[iClipIndex];
                Uni2DTextureAtlas  rGlobalAtlas   = rAnimationClip.globalAtlas;

                if (rGlobalAtlas != null)
                {
                    // Add the atlas if not already added
                    if (a_eRegenerate == AnimationClipRegeneration.RegenerateAll ||
                        (a_eRegenerate == AnimationClipRegeneration.RegenerateAlsoAtlasIfNeeded &&
                         (rGlobalAtlas.UnappliedSettings || rGlobalAtlas.Contains(rAnimationClip.GetAllFramesTextureGUIDs( )) == false)))
                    {
                        oAtlases.Add(rGlobalAtlas);
                    }
                }
                else                 // Null => atlas per frame
                {
                    for (int iFrameIndex = 0, iFrameCount = rAnimationClip.FrameCount; iFrameIndex < iFrameCount; ++iFrameIndex)
                    {
                        Uni2DAnimationFrame rFrame      = rAnimationClip.frames[iFrameIndex];
                        Uni2DTextureAtlas   rFrameAtlas = rFrame.atlas;

                        if (rFrameAtlas != null &&
                            (a_eRegenerate == AnimationClipRegeneration.RegenerateAll ||
                             (a_eRegenerate == AnimationClipRegeneration.RegenerateAlsoAtlasIfNeeded &&
                              (rFrameAtlas.UnappliedSettings || rFrameAtlas.Contains(rFrame.textureContainer.GUID) == false))))
                        {
                            oAtlases.Add(rFrameAtlas);
                        }
                    }
                }

                // Regenerate clips only
                rAnimationClip.ApplySettings(AnimationClipRegeneration.RegenerateAnimationClipOnly);
            }

            // Then, regenerate atlases
            foreach (Uni2DTextureAtlas rAtlas in oAtlases)
            {
                rAtlas.ApplySettings( );
            }
        }
    }
	private static void ApplySettings( Uni2DAnimationClip[ ] a_rAnimationClips, AnimationClipRegeneration a_eRegenerate )
	{
		int iClipCount = a_rAnimationClips.Length;
		
		if( iClipCount == 1 )
		{
			a_rAnimationClips[ 0 ].ApplySettings( a_eRegenerate );
		}
		else if( iClipCount > 1 )
		{
			// Apply clip settings first, atlases will be generated only after
			// (Atlases can be shared accross clips, so prevent them to be uselessly regenerated several times)
			HashSet<Uni2DTextureAtlas> oAtlases = new HashSet<Uni2DTextureAtlas>( );
			
			for( int iClipIndex = 0; iClipIndex < iClipCount; ++iClipIndex )
			{
				Uni2DAnimationClip rAnimationClip = a_rAnimationClips[ iClipIndex ];
				Uni2DTextureAtlas rGlobalAtlas = rAnimationClip.globalAtlas;
				
				if( rGlobalAtlas != null )
				{
					// Add the atlas if not already added
					if( a_eRegenerate == AnimationClipRegeneration.RegenerateAll
						|| ( a_eRegenerate == AnimationClipRegeneration.RegenerateAlsoAtlasIfNeeded
						&& ( rGlobalAtlas.UnappliedSettings || rGlobalAtlas.Contains( rAnimationClip.GetAllFramesTextureGUIDs( ) ) == false ) ) )
					{
						oAtlases.Add( rGlobalAtlas );
					}
				}
				else // Null => atlas per frame
				{
					for( int iFrameIndex = 0, iFrameCount = rAnimationClip.FrameCount; iFrameIndex < iFrameCount; ++iFrameIndex )
					{
						Uni2DAnimationFrame rFrame = rAnimationClip.frames[ iFrameIndex ];
						Uni2DTextureAtlas rFrameAtlas = rFrame.atlas;
						
						if( rFrameAtlas != null
							&& ( a_eRegenerate == AnimationClipRegeneration.RegenerateAll
							|| ( a_eRegenerate == AnimationClipRegeneration.RegenerateAlsoAtlasIfNeeded
							&& ( rFrameAtlas.UnappliedSettings || rFrameAtlas.Contains( rFrame.textureContainer.GUID ) == false ) ) ) )
						{
							oAtlases.Add( rFrameAtlas );
						}
					}
				}
				
				// Regenerate clips only
				rAnimationClip.ApplySettings( AnimationClipRegeneration.RegenerateAnimationClipOnly );
			}
			
			// Then, regenerate atlases
			foreach( Uni2DTextureAtlas rAtlas in oAtlases )
			{
				rAtlas.ApplySettings( );
			}
		}
	}
    private void ApplySettings(AnimationClipRegeneration a_eRegenerate)
    {
        Uni2DAnimationClipInspector.ApplySettings(targets.Cast <Uni2DAnimationClip>( ).ToArray( ), a_eRegenerate);

        this.CheckClipsAndAtlasSynced( );
    }
	private void ApplySettings( AnimationClipRegeneration a_eRegenerate )
	{
		Uni2DAnimationClipInspector.ApplySettings( targets.Cast<Uni2DAnimationClip>( ).ToArray( ), a_eRegenerate );

		this.CheckClipsAndAtlasSynced( );
	}