void RebuildAvailableTools() { ComponentToolCache activeComponentTool = new ComponentToolCache(m_ActiveToolContext, activeTool); ClearCustomEditorTools(); EditorToolUtility.InstantiateComponentTools(activeToolContext, m_ComponentTools); if (activeComponentTool.toolType != null) { var restoredTool = m_ComponentTools.Find(x => x.editorType == activeComponentTool.toolType); if (restoredTool != null) { activeTool = restoredTool.GetEditor <EditorTool>(); } else { m_PreviousComponentToolCache = activeComponentTool; RestorePreviousPersistentTool(); } } availableComponentToolsChanged?.Invoke(); }
void RestoreCustomEditorTool() { var restored = m_ComponentTools.FirstOrDefault(m_PreviousComponentToolCache.IsEqual); if (restored != null) { // todo Use generated Context if (m_PreviousComponentToolCache.contextType != null) { activeToolContext = GetComponentContext(m_PreviousComponentToolCache.contextType); } activeTool = restored.GetEditor <EditorTool>(); } m_PreviousComponentToolCache = ComponentToolCache.Empty; }
void SaveComponentTool() { m_PreviousComponentToolCache = new ComponentToolCache(m_ActiveToolContext, m_ActiveTool); }