Exemplo n.º 1
0
        public override void OnImportAsset(AssetImportContext ctx)
        {
            var filePath = ctx.assetPath;
            var jsonText = System.IO.File.ReadAllText(filePath);
            var settings = JsonUtility.FromJson <SearchDatabase.Settings>(jsonText);
            var fileName = System.IO.Path.GetFileNameWithoutExtension(filePath);

            hideFlags |= HideFlags.HideInInspector;

            #if DEBUG_INDEXING
            using (new DebugTimer($"Importing index {fileName}"))
            #endif
            {
                db               = ScriptableObject.CreateInstance <SearchDatabase>();
                db.name          = fileName;
                db.hideFlags     = HideFlags.NotEditable;
                db.settings      = settings;
                db.settings.root = Path.GetDirectoryName(filePath).Replace("\\", "/");
                if (String.IsNullOrEmpty(db.settings.name))
                {
                    db.settings.name = fileName;
                }
                db.index = db.CreateIndexer(settings);

                if (!Reimport(filePath))
                {
                    if (ShouldDelayImport())
                    {
                        db.Log("Delayed Import");
                        EditorApplication.delayCall += () => AssetDatabase.ImportAsset(filePath);
                    }
                    else
                    {
                        Build();
                    }
                }

                ctx.AddObjectToAsset(fileName, db);
                ctx.SetMainObject(db);
            }
        }