示例#1
0
        internal void IncrementalUpdate(AssetIndexChangeSet changeset)
        {
            var it = IncrementalUpdate(-1, changeset);

            while (it.MoveNext())
            {
                ;
            }
        }
示例#2
0
        private void IncrementalUpdate(AssetIndexChangeSet changeset)
        {
            #if DEBUG_LOG_CHANGES
            if (changeset.updated.Length > 0)
            {
                Log("Change", string.Join(", ", changeset.updated));
            }
            if (changeset.removed.Length > 0)
            {
                Log("Remove", string.Join(", ", changeset.removed));
            }
            #endif

            if (!this)
            {
                return;
            }

            AssetPostprocessorIndexer.contentRefreshed -= OnContentRefreshed;

            var baseScore = settings.baseScore;
            var indexName = settings.name.ToLowerInvariant();
            var updates   = ProduceArtifacts(changeset.updated);

            ++m_UpdateTasks;
            ResolveArtifacts(updates, null, new Task("Update", $"Updating {settings.name} index ({updates.Length})", (Task task, TaskData data) =>
            {
                if (task.canceled || task.error != null)
                {
                    if (task.error != null)
                    {
                        Debug.LogException(task.error);
                    }
                    --m_UpdateTasks;
                    return;
                }

                byte[] mergedBytes = null;
                task.Report("Merging changes to index...");
                task.RunThread(() =>
                {
                    index.Merge(changeset.removed, data.combinedIndex, baseScore, (di, indexer) => indexer.AddProperty("a", indexName, di, true, true));
                    mergedBytes = index.SaveBytes();
                }, () =>
                {
                    //foreach (var t in changeset.updated) Debug.Log($"updated {t}");
                    //foreach (var t in changeset.removed) Debug.Log($"removed {t}");
                    --m_UpdateTasks;
                    bytes = SaveIndex(mergedBytes, Setup);
                });
            }, updates.Length, this));
        }
示例#3
0
        private void OnContentRefreshed(string[] updated, string[] removed, string[] moved)
        {
            if (!this || settings.options.disabled || updating)
            {
                return;
            }
            var changeset = new AssetIndexChangeSet(updated, removed, moved, p => !index.SkipEntry(p, true));

            if (changeset.empty)
            {
                return;
            }
            IncrementalUpdate(changeset);
        }
示例#4
0
        private void OnContentRefreshed(string[] updated, string[] removed, string[] moved)
        {
            if (!this || settings.options.disabled)
            {
                return;
            }
            var changeset = new AssetIndexChangeSet(updated, removed, moved, p => HasDocumentChanged(p));

            if (!changeset.empty)
            {
                Log("OnContentRefreshed", changeset.all.ToArray());

                var it = IncrementalUpdate(-1, changeset);
                while (it.MoveNext())
                {
                    ;
                }
            }
        }
示例#5
0
        private void OnContentRefreshed(string[] updated, string[] removed, string[] moved)
        {
            if (!this || settings.options.disabled)
            {
                return;
            }
            var changeset = new AssetIndexChangeSet(updated, removed, moved, p => HasDocumentChanged(p));

            if (!changeset.empty)
            {
                Log("OnContentRefreshed", changeset.all.ToArray());

                #if ENABLE_ASYNC_INCREMENTAL_UPDATES
                Progress.RunTask($"Updating {index.name} index...", null, IncrementalUpdate, Progress.Options.None, -1, changeset);
                #else
                var it = IncrementalUpdate(-1, changeset);
                while (it.MoveNext())
                {
                    ;
                }
                #endif
            }
        }