Ejemplo n.º 1
0
        /// <summary>
        /// Adds a locale and the value or updates if specified language is exists.
        /// </summary>
        public static bool AddOrUpdateLocale(LocalizedAssetBase localizedAsset, Language language, object value)
        {
            var serializedObject = new SerializedObject(localizedAsset);

            serializedObject.Update();

            var elements = serializedObject.FindLocaleItemsProperty();

            if (elements != null && elements.arraySize > 0)
            {
                var index = Array.FindIndex(localizedAsset.LocaleItems, x => x.Language == language);
                if (index < 0)
                {
                    AddLocale(localizedAsset);
                    index = localizedAsset.LocaleItems.Length - 1;
                }

                var localeItem = localizedAsset.LocaleItems[index];
                localeItem.Language    = language;
                localeItem.ObjectValue = value;
                return(true);
            }

            return(false);
        }
Ejemplo n.º 2
0
        /// <summary>
        /// Adds a locale end of the list by copying last one.
        /// </summary>
        public static bool AddLocale(LocalizedAssetBase localizedAsset)
        {
            var serializedObject = new SerializedObject(localizedAsset);

            serializedObject.Update();

            var elements = serializedObject.FindLocaleItemsProperty();

            if (elements != null)
            {
                elements.arraySize += 1;
                serializedObject.ApplyModifiedProperties();
                return(true);
            }

            return(false);
        }
Ejemplo n.º 3
0
        /// <summary>
        /// Removes specified locale item from the list.
        /// </summary>
        public static bool RemoveLocale(LocalizedAssetBase localizedAsset, LocaleItemBase localeItem)
        {
            var serializedObject = new SerializedObject(localizedAsset);

            serializedObject.Update();

            var elements = serializedObject.FindLocaleItemsProperty();

            if (elements != null && elements.arraySize > 1)
            {
                var index = Array.IndexOf(localizedAsset.LocaleItems, localeItem);
                if (index >= 0)
                {
                    elements.DeleteArrayElementAtIndex(index);
                    serializedObject.ApplyModifiedProperties();
                    return(true);
                }
            }

            return(false);
        }
        private void MakeLocaleDefault(AssetTreeViewItem assetTreeViewItem, LocaleTreeViewItem localeTreeViewItem)
        {
            var localizedAsset = assetTreeViewItem.LocalizedAsset;
            var language       = localeTreeViewItem.LocaleItem.Language;

            var serializedObject = new SerializedObject(localizedAsset);

            serializedObject.Update();
            var elements = serializedObject.FindLocaleItemsProperty();

            if (elements != null && elements.arraySize > 1)
            {
                var index = Array.FindIndex(localizedAsset.LocaleItems, x => x.Language == language);
                if (index >= 0)
                {
                    language = new Language(language);
                    elements.MoveArrayElement(index, 0);
                    serializedObject.ApplyModifiedProperties();
                    m_TreeView.Reload();
                    Debug.Log(localizedAsset.name + ":" + language + " was set as the default language.");
                }
            }
        }