void HandleInput() { // mouse drag if (IsLeftClickEvent(guiEvent, EventType.MouseDrag) && mouseIsDownOverKey) { float keyTime = Mathf.InverseLerp(gradientPreveiwRect.x, gradientPreveiwRect.xMax, guiEvent.mousePosition.x); selectedKeyIndex = gradient.UpdateKeyTime(selectedKeyIndex, keyTime); forceRepaint = true; } // mouse down if (IsLeftClickEvent(guiEvent, EventType.MouseDown)) { for (int i = 0; i < keyRects.Length; i++) { if (keyRects[i].Contains(guiEvent.mousePosition)) { mouseIsDownOverKey = true; selectedKeyIndex = i; forceRepaint = true; break; } } if (!mouseIsDownOverKey) { float keyTime = Mathf.InverseLerp(gradientPreveiwRect.x, gradientPreveiwRect.xMax, guiEvent.mousePosition.x); Color interpolatedColor = gradient.Evaluate(keyTime); Color randomColor = new Color(Random.value, Random.value, Random.value); selectedKeyIndex = gradient.AddKey(gradient.randomizeColor ? randomColor : interpolatedColor, keyTime); // if the gradient is not updating whn you click on it, then uncomment this. forceRepaint = true; mouseIsDownOverKey = true; } } // mouse up if (IsLeftClickEvent(guiEvent, EventType.MouseUp)) { mouseIsDownOverKey = false; } // backspace down if ((guiEvent.keyCode == KeyCode.Backspace || guiEvent.keyCode == KeyCode.Delete) && guiEvent.type == EventType.KeyDown) { gradient.RemoveKey(selectedKeyIndex); if (selectedKeyIndex >= gradient.NumKeys) { selectedKeyIndex--; } forceRepaint = true; } }