Exemple #1
0
        /*
         #region CONTEXT MENU METHODS
         *      [ContextMenu( "Build SwatchPalette None" )]
         *      public void BuildColorSwatch_None()					{ BuildSwatchPalette( SwatchSortMode.None ); }
         *
         *      [ContextMenu( "Build SwatchPalette Ascending" )]
         *      public void BuildColorSwatch_Ascending()			{ BuildSwatchPalette( SwatchSortMode.Ascending ); }
         *
         *      [ContextMenu( "Build SwatchPalette Descending" )]
         *      public void BuildColorSwatch_Descending()			{ BuildSwatchPalette( SwatchSortMode.Descending ); }
         *
         *      [ContextMenu( "Build SwatchPalette RGB MaxDifference" )]
         *      public void BuildColorSwatch_MaxDifferenceRGB()		{ BuildSwatchPalette( SwatchSortMode.MaxDifferenceRGB ); }
         *
         *      [ContextMenu( "Build SwatchPalette HSV MaxDifference" )]
         *      public void BuildColorSwatch_MaxDifferenceHSV()		{ BuildSwatchPalette( SwatchSortMode.MaxDifferenceHSV ); }
         #endregion
         */


#if UNITY_EDITOR
        public void BuildSwatchPalette(SwatchSortMode swatchSortMode)
        {
            ColorSwatchPalette colorSwatchPalette = CreateColorSwatchAsset();

            if (null == colorSwatchPalette)
            {
                Debug.LogError("Unable to create ColorSwatchPalette asset");
                return;
            }

            // Get Colors from texture
            Color[] srcSwatches = GetColorsFromTextureSwatch();

            // Apply sort mode
            switch (swatchSortMode)
            {
            case SwatchSortMode.Ascending:                  SortByLinq(srcSwatches, swatchSortMode); break;

            case SwatchSortMode.Descending:                 SortByLinq(srcSwatches, swatchSortMode); break;

            case SwatchSortMode.MaxDifferenceRGB:   SortByMaxDiffRGB(srcSwatches); break;

            case SwatchSortMode.MaxDifferenceHSV:   SortByMaxDiffHSV(srcSwatches); break;
            }

            // Put colors into asset
            colorSwatchPalette.m_SwatchColors = srcSwatches;

            // Save Asset
            SaveUpdatedAssets(colorSwatchPalette);
        }
Exemple #2
0
        // Can probably be done better with custom sorting method comparrision test in linq?
        void SortByLinq(Color[] srcSwatches, SwatchSortMode swatchSortMode)
        {
            List <ColorData> colorDataList = PreCalculateColorData(srcSwatches);

            //	List<ColorData> sortedList;

            if (swatchSortMode == SwatchSortMode.Ascending)
            {
                colorDataList = colorDataList.OrderBy(o => o.positionRGB.magnitude).ToList();
            }
            else
            {
                colorDataList = colorDataList.OrderByDescending(o => o.positionRGB.magnitude).ToList();
            }


            for (int i = m_SkipColorCount; i < srcSwatches.Length; i++)
            {
                srcSwatches[i] = colorDataList[i - m_SkipColorCount].color;
            }

            // srcSwatches = sortedList.Select( o => o.color ).ToArray();
        }