public void SetTexture(EAtlasType atlasType, Texture2D tex)
 {
     m_textures[(int)atlasType] = tex;
     if (atlasType != EAtlasType.Default || tex != null)
     {
         return;
     }
     Type = ETexType.Invalid;
 }
        public static Vector2Int TileDimension(ETexType type)
        {
            switch (type)
            {
            case ETexType.SimpleFloorTile:
            case ETexType.SimpleWallTile:
            case ETexType.SimpleEdgeTile: return(Vector2Int.one);

            case ETexType.HardEdgeSq:
            case ETexType.DiagEdge:
            case ETexType.Transition:
                return(Vector2Int.one * 2);

            case ETexType.WallTriplet: return(new Vector2Int(1, 3));

            case ETexType.WallTripletEdged: return(new Vector2Int(2, 3));

            default: return(Vector2Int.zero);
            }
        }
        protected virtual void OnGUI()
        {
            GUILayout.BeginHorizontal();
            resType    = (EResType)EditorGUILayout.EnumPopup("资源目录", resType, GUILayout.MaxWidth(250));
            m_Platform = (EPlatform)EditorGUILayout.EnumPopup("平台", m_Platform, GUILayout.MaxWidth(250));
            GUILayout.EndHorizontal();
            GUILayout.BeginHorizontal();
            ETexType lastTexType = m_TexType;

            m_TexType = (ETexType)EditorGUILayout.EnumPopup("统计类型", m_TexType, GUILayout.MaxWidth(250));
            if (lastTexType != m_TexType)
            {
                m_TexInfo   = null;
                m_TexMat    = null;
                m_Tex       = null;
                m_PrefabSet = null;
            }
            EditorGUILayout.LabelField(string.Format("Total Count:{0} TotalSize:{1}KB-{2}MB ", m_TotalCount, m_TotalSize / 1024, m_TotalSize / 1024 / 1024));
            GUILayout.EndHorizontal();
            GUILayout.BeginHorizontal();
            if (GUILayout.Button("Scan", GUILayout.MaxWidth(150)))
            {
                string resPath = resPaths[(int)resType];
                FindTexs(resPath);
            }
            GUILayout.EndHorizontal();
            GUILayout.BeginHorizontal();

            GUILayout.BeginVertical();
            typeScrollPos = GUILayout.BeginScrollView(typeScrollPos, false, false, GUILayout.MinHeight(400));
            Dictionary <string, TexInfo> texMap = m_FormatMap;

            if (m_TexType == ETexType.Size)
            {
                texMap = m_SizeMap;
            }

            Dictionary <string, TexInfo> .Enumerator it = texMap.GetEnumerator();
            while (it.MoveNext())
            {
                GUILayout.BeginHorizontal();
                string  name = it.Current.Key;
                TexInfo ti   = it.Current.Value;
                EditorGUILayout.LabelField(string.Format("{0} Count:{1} Size:{2}KB-{3}MB ", name, ti.texList.Count, ti.size / 1024, ti.size / 1024 / 1024), GUILayout.MaxWidth(400));
                if (GUILayout.Button("Select", GUILayout.MaxWidth(50)))
                {
                    m_TexInfo   = ti;
                    m_TexMat    = null;
                    m_Tex       = null;
                    m_PrefabSet = null;
                }
                GUILayout.EndHorizontal();
            }
            EditorGUILayout.EndScrollView();

            GUILayout.EndVertical();

            GUILayout.BeginVertical();
            texScrollPos = GUILayout.BeginScrollView(texScrollPos, false, false, GUILayout.MinHeight(400));
            if (m_TexInfo != null)
            {
                for (int i = 0; i < m_TexInfo.texList.Count; ++i)
                {
                    GUILayout.BeginHorizontal();
                    Texture tex = m_TexInfo.texList[i];
                    if (m_TexMat != null && m_Tex == tex)
                    {
                        EditorGUILayout.ObjectField(string.Format("{0} mat:{1}", tex.name, m_TexMat.Count), tex, typeof(Texture), true, GUILayout.MaxWidth(450));
                    }
                    else
                    {
                        EditorGUILayout.ObjectField(tex.name, tex, typeof(Texture), true, GUILayout.MaxWidth(450));
                    }

                    if (GUILayout.Button("Mat", GUILayout.MaxWidth(50)))
                    {
                        m_Tex = tex;
                        m_TexMatMap.TryGetValue(m_Tex, out m_TexMat);
                        m_PrefabSet = null;
                    }
                    GUILayout.EndHorizontal();
                }
            }

            EditorGUILayout.EndScrollView();
            GUILayout.EndVertical();
            GUILayout.EndHorizontal();
            GUILayout.Space(10);
            GUILayout.BeginHorizontal();
            GUILayout.BeginVertical();
            matScrollPos = GUILayout.BeginScrollView(matScrollPos, false, false, GUILayout.MinHeight(400));
            if (m_TexMat != null)
            {
                MatPrefabMat.Enumerator texMatIt = m_TexMat.GetEnumerator();
                while (texMatIt.MoveNext())
                {
                    GUILayout.BeginHorizontal();
                    Material mat = texMatIt.Current.Key;
                    EditorGUILayout.ObjectField(mat.name, mat, typeof(Material), true, GUILayout.MaxWidth(450));

                    GUILayout.EndHorizontal();
                }
            }
            EditorGUILayout.EndScrollView();
            GUILayout.EndVertical();

            GUILayout.BeginVertical();
            prefabScrollPos = GUILayout.BeginScrollView(prefabScrollPos, false, false, GUILayout.MinHeight(500));
            if (m_PrefabSet != null)
            {
                PrefabSet.Enumerator prefabIt = m_PrefabSet.GetEnumerator();
                while (prefabIt.MoveNext())
                {
                    GUILayout.BeginHorizontal();
                    GameObject prefab = prefabIt.Current;
                    EditorGUILayout.ObjectField(prefab.name, prefab, typeof(GameObject), true, GUILayout.MaxWidth(550));
                    GUILayout.EndHorizontal();
                }
            }
            EditorGUILayout.EndScrollView();

            GUILayout.EndVertical();
            GUILayout.EndHorizontal();
        }