private void ActivateTool(BaseTool tool) { if (currentTool == tool) { return; } if (currentTool != null) { currentTool.Deactivate(); } currentTool = tool; currentTool.Activate(); UpdateToggleState(); skinningCache.events.toolChanged.Invoke(currentTool); }
public void ActivateTool(BaseTool tool) { var toolGroupIndex = -1; var groupTool = m_ToolGroups.FirstOrDefault(x => { toolGroupIndex = x.tools.FindIndex(y => y.tool == tool); return(toolGroupIndex >= 0); }); if (groupTool != null && toolGroupIndex >= 0) { var previousTool = groupTool.previousToolIndex >= 0 ? groupTool.tools[groupTool.previousToolIndex] : null; if (tool.isActive) // we want to deactivate the tool and switch to original { tool.Deactivate(); if (previousTool != null && previousTool.tool != tool && previousTool.tool != null) { previousTool.tool.Activate(); groupTool.previousToolIndex = toolGroupIndex; } } else { for (int i = 0; i < groupTool.tools.Count; ++i) { var gt = groupTool.tools[i]; if (gt.tool.isActive) { groupTool.previousToolIndex = i; gt.tool.Deactivate(); } } tool.Activate(); if (groupTool.tools[toolGroupIndex].activateCallback != null) { groupTool.tools[toolGroupIndex].activateCallback(); } } } }