public void FindLooseTablesUsingSharedTableData(SharedTableData sharedTableData, IList <LocalizedTable> foundTables)
        {
            if (sharedTableData == null)
            {
                throw new ArgumentNullException(nameof(sharedTableData));
            }
            if (foundTables == null)
            {
                throw new ArgumentNullException(nameof(foundTables));
            }

            // We need to find all tables that reference the shared table data that do not belong to a collection
            var foundAssets = AssetDatabase.FindAssets("t:LocalizedTable");

            foreach (var guid in foundAssets)
            {
                // Ignore tables we know about
                if (CollectionDependencies.ContainsKey(guid))
                {
                    continue;
                }

                // Filter by table type
                var path        = AssetDatabase.GUIDToAssetPath(guid);
                var loadedTable = AssetDatabase.LoadAssetAtPath <LocalizedTable>(path);
                if (loadedTable.SharedData == sharedTableData)
                {
                    foundTables.Add(loadedTable);
                }
            }
        }
예제 #2
0
        public void Setup()
        {
            LocalizationSettingsHelper.SaveCurrentSettings();

            m_SharedStringTableData = ScriptableObject.CreateInstance <SharedTableData>();
            m_SharedStringTableData.TableCollectionName     = kStringTableCollectionName;
            m_SharedStringTableData.TableCollectionNameGuid = kStringTableNameGuid;
            m_SharedStringTableData.AddKey(kStringKeyName, kStringKeyId);

            m_SharedAssetTableData = ScriptableObject.CreateInstance <SharedTableData>();
            m_SharedAssetTableData.TableCollectionName     = kAssetTableCollectionName;
            m_SharedAssetTableData.TableCollectionNameGuid = kAssetTableNameGuid;

            m_Settings = LocalizationSettingsHelper.CreateEmpty();
            var stringDb = new LocalizedStringDatabase();

            m_Settings.SetStringDatabase(stringDb);
            var assetDb = new LocalizedAssetDatabase();

            m_Settings.SetAssetDatabase(assetDb);

            var rm = new ResourceManager();

            stringDb.SharedTableDataOperations[kStringTableNameGuid] = rm.CreateCompletedOperation(m_SharedStringTableData, null);
            assetDb.SharedTableDataOperations[kAssetTableNameGuid]   = rm.CreateCompletedOperation(m_SharedAssetTableData, null);

            LocalizationSettings.Instance = m_Settings;
        }
예제 #3
0
 public void Init()
 {
     m_Table                = ScriptableObject.CreateInstance <TTable>();
     m_Table.name           = nameof(TTable);
     m_SharedTableData      = ScriptableObject.CreateInstance <SharedTableData>();
     m_SharedTableData.name = "Shared " + m_Table.name;
     m_Table.SharedData     = m_SharedTableData;
 }
예제 #4
0
 public void Init()
 {
     m_Table                = ScriptableObject.CreateInstance <TTable>();
     m_Table.name           = $"SharedTableEntryMetadataTests - {nameof(TTable)}";
     m_SharedTableData      = ScriptableObject.CreateInstance <SharedTableData>();
     m_SharedTableData.name = "Shared " + m_Table.name;
     m_Table.SharedData     = m_SharedTableData;
 }
예제 #5
0
        public void Init()
        {
            m_SharedTableData = ScriptableObject.CreateInstance <SharedTableData>();

            for (int i = 0; i < 100; ++i)
            {
                m_SharedTableData.AddKey("My Key " + i);
            }
        }
예제 #6
0
        public void Setup()
        {
            m_SharedTableData = ScriptableObject.CreateInstance <SharedTableData>();
            var key = m_SharedTableData.AddKey();

            key.Metadata.AddMetadata(new Comment {
                CommentText = kCommentText
            });

            m_SharedTableDataSerializedObject = new SerializedObject(m_SharedTableData);
            m_SharedEntryMetadataProperty     = m_SharedTableDataSerializedObject.FindProperty(kMetadataPath);
            m_CommentProperty = m_SharedEntryMetadataProperty.FindPropertyRelative(kCommentPath);
        }
        public LocalizedTableCollection FindCollectionForSharedTableData(SharedTableData sharedTableData)
        {
            if (sharedTableData == null)
            {
                throw new ArgumentNullException(nameof(sharedTableData));
            }

            if (AssetDatabase.TryGetGUIDAndLocalFileIdentifier(sharedTableData, out var guid, out long _))
            {
                return(FindCollectionFromDependencyGuid(guid));
            }
            return(null);
        }
예제 #8
0
        static SharedTableData.SharedTableEntry GetOrCreateEntryFromTranslationUnit(SharedTableData sharedTableData, ITranslationUnit unit)
        {
            // Does it contain an id?
            long   keyId = SharedTableData.EmptyId;
            string name  = null;

            if (!string.IsNullOrEmpty(unit.Id))
            {
                if (long.TryParse(unit.Id, out keyId))
                {
                    var entry = sharedTableData.GetEntry(keyId);
                    if (entry != null)
                    {
                        return(entry);
                    }
                }
                else
                {
                    // Is the Id a name?
                    var entry = sharedTableData.GetEntry(unit.Id);
                    if (entry != null)
                    {
                        return(entry);
                    }
                    name = unit.Id;
                }
            }

            // Use the name
            if (!string.IsNullOrEmpty(unit.Name))
            {
                var entry = sharedTableData.GetEntry(unit.Name);
                if (entry != null)
                {
                    return(entry);
                }
                name = unit.Name;
            }

            // Create a new entry
            if (keyId != SharedTableData.EmptyId)
            {
                return(sharedTableData.AddKey(name, keyId));
            }
            if (!string.IsNullOrEmpty(name))
            {
                return(sharedTableData.AddKey(name));
            }
            return(sharedTableData.AddKey());
        }
        void Init(SerializedProperty property)
        {
            if (m_PlatformOverridesList == null)
            {
                m_PlatformOverridesList = new ReorderableList(property.serializedObject, property.FindPropertyRelative("m_PlatformOverrides"))
                {
                    drawElementCallback   = DrawListElement,
                    drawHeaderCallback    = DrawListHeader,
                    onAddDropdownCallback = DrawAddDropdown,
                    elementHeightCallback = GetHeight
                };

                var             target          = m_PlatformOverridesList.serializedProperty.serializedObject.targetObject;
                SharedTableData sharedTableData = target as SharedTableData ?? (target as LocalizationTable)?.SharedData;
                Debug.Assert(sharedTableData != null, "Shared Table Data is null. Platform Override can only be used on a Shared Table Entry.");
                m_Collection = LocalizationEditorSettings.GetCollectionForSharedTableData(sharedTableData);
                m_TableType  = m_Collection.GetType() == typeof(StringTableCollection) ? typeof(StringTable) : typeof(AssetTable);
            }
        }
예제 #10
0
 public override void PullBegin(StringTableCollection collection)
 {
     m_SharedTableData = collection.SharedData;
 }
 static string GetEntryLabel(TableEntryReference entryReference, SharedTableData sharedTableData)
 {
     return(entryReference.ReferenceType != TableEntryReference.Type.Empty ? entryReference.ResolveKeyName(sharedTableData) : "None");
 }