/* Yarn Spinner is licensed to you under the terms found in the file LICENSE.md. */ namespace Yarn.Unity.Editor { using System.Collections.Generic; using UnityEditor; using UnityEngine; /// /// An asset post processor that forwards any asset database changes to all /// YarnProjectImporter for them to verify if they need to update their /// locale assets. /// class YarnProjectAssetReimport : AssetPostprocessor { static void OnPostprocessAllAssets(string[] importedAssets, string[] deletedAssets, string[] movedAssets, string[] movedFromAssetPaths, bool didDomainReload) { if (!YarnSpinnerProjectSettings.GetOrCreateSettings().autoRefreshLocalisedAssets) { return; } var modifiedAssets = new List(); modifiedAssets.AddRange(importedAssets); modifiedAssets.AddRange(deletedAssets); modifiedAssets.AddRange(movedAssets); modifiedAssets.AddRange(movedFromAssetPaths); var yarnProjects = AssetDatabase.FindAssets($"t:{nameof(YarnProject)}"); foreach (var guid in yarnProjects) { var path = AssetDatabase.GUIDToAssetPath(guid); var importer = AssetImporter.GetAtPath(path) as YarnProjectImporter; if (importer != null) { importer.CheckUpdatedAssetsRequireReimport(modifiedAssets); } } } } }