void UpdateSpriteLibrary() { m_SpriteLibSelection.Clear(); int categoryHash = SpriteResolver.ConvertFloatToInt(m_SpriteCategoryHash.floatValue); int labelHash = SpriteResolver.ConvertFloatToInt(m_SpritelabelHash.floatValue); var spriteLib = spriteResolver.GetComponentInParent <SpriteLibrary>(); if (spriteLib != null) { foreach (var labels in spriteLib.labels) { if (!m_SpriteLibSelection.ContainsKey(labels.hash)) { var nameHash = labels.categoryList.Select(x => x.hash).Distinct().ToArray(); if (nameHash.Length > 0) { var selectionList = new SpriteCategorySelectionList() { names = nameHash.Select(x => { var v = labels.categoryList.FirstOrDefault(y => y.hash == x); return(v.name); }).ToArray(), nameHash = nameHash, sprites = nameHash.Select(x => { var v = labels.categoryList.FirstOrDefault(y => y.hash == x); return(v.sprite); }).ToArray(), categoryName = labels.name, categoryNameHash = labels.hash }; m_SpriteLibSelection.Add(labels.hash, selectionList); } } } } m_CategorySelection = new string[1 + m_SpriteLibSelection.Keys.Count]; m_CategorySelection[0] = TextContent.none; m_CategorySelectionHash = new int[1 + m_SpriteLibSelection.Keys.Count]; m_CategorySelectionHash[0] = SpriteLibraryAsset.GetStringHash(TextContent.none); for (int i = 0; i < m_SpriteLibSelection.Keys.Count; ++i) { var selection = m_SpriteLibSelection[m_SpriteLibSelection.Keys.ElementAt(i)]; m_CategorySelection[i + 1] = selection.categoryName; m_CategorySelectionHash[i + 1] = selection.categoryNameHash; if (selection.categoryNameHash == categoryHash) { m_CategorySelectionIndex = i + 1; } } ValidateCategorySelectionIndexValue(); if (m_CategorySelectionIndex > 0) { m_SpriteSelectorWidget.UpdateContents(m_SpriteLibSelection[m_CategorySelectionHash[m_CategorySelectionIndex]].sprites); if (m_SpriteLibSelection.ContainsKey(categoryHash)) { m_labelSelectionIndex = Array.FindIndex(m_SpriteLibSelection[categoryHash].nameHash, x => x == labelHash); } } spriteResolver.spriteLibChanged = false; }
void UpdateSpriteLibrary() { m_SpriteLibSelection.Clear(); var spriteLib = spriteResolver.spriteLibrary; string categoryName = "", labelName = ""; if (spriteLib != null) { GetCategoryAndLabelStringValue(out categoryName, out labelName); var enumerator = spriteLib.categoryNames; foreach (var category in spriteLib.categoryNames) { if (!m_SpriteLibSelection.ContainsKey(category)) { var entries = spriteLib.GetEntryNames(category); if (entries == null) { entries = new string[0]; } var selectionList = new SpriteCategorySelectionList() { entryNames = entries.ToArray(), sprites = entries.Select(x => { return(spriteLib.GetSprite(category, x)); }).ToArray(), categoryName = category, }; m_SpriteLibSelection.Add(category, selectionList); } } } m_CategorySelection = new string[1 + m_SpriteLibSelection.Keys.Count]; m_CategorySelection[0] = Style.noCategory.text; for (int i = 0; i < m_SpriteLibSelection.Keys.Count; ++i) { var selection = m_SpriteLibSelection[m_SpriteLibSelection.Keys.ElementAt(i)]; m_CategorySelection[i + 1] = selection.categoryName; if (selection.categoryName == categoryName) { m_CategorySelectionIndex = i + 1; } } ValidateCategorySelectionIndexValue(); if (m_CategorySelectionIndex > 0) { categoryName = m_CategorySelection[m_CategorySelectionIndex]; m_SpriteSelectorWidget.UpdateContents( m_SpriteLibSelection[m_CategorySelection[m_CategorySelectionIndex]].sprites); if (m_SpriteLibSelection.ContainsKey(categoryName)) { m_LabelSelectionIndex = Array.FindIndex(m_SpriteLibSelection[categoryName].entryNames, x => x == labelName); } } else { m_SpriteSelectorWidget.UpdateContents(new Sprite[0]); } spriteResolver.spriteLibChanged = false; }