using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace bs.Editor { /// /// Helper class for creating GUI elements used by various resource inspector windows. /// internal class GUIReimportButton { private string path; private GUIButton reimportButton = new GUIButton(new LocEdString("Reimport")); private GUITexture guiSpinner = new GUITexture(EditorBuiltin.GetSprite(EditorSprites.Spinner)); /// /// Creates the reimport GUI elements in the provided layout. /// /// Path of the resource that can be reimported. /// Parent GUI layout to which to add the reimport GUI elements. /// User provided callback that triggers when the reimport button is clicked. internal GUIReimportButton(string path, GUILayout parent, Action doReimport) { this.path = path; reimportButton.OnClick += () => doReimport(); GUILayout reimportButtonLayout = parent.AddLayoutX(); reimportButtonLayout.AddFlexibleSpace(); reimportButtonLayout.AddElement(reimportButton); reimportButtonLayout.AddElement(guiSpinner); bool isImporting = ProjectLibrary.GetImportProgress(path) < 1.0f; guiSpinner.Active = isImporting; reimportButton.Active = !isImporting; } /// /// Checks the current state of import and updates the GUI elements accordingly. /// internal void Update() { bool isImporting = ProjectLibrary.GetImportProgress(path) < 1.0f; guiSpinner.Active = isImporting; reimportButton.Active = !isImporting; } } }