示例#1
0
 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;
     }
 }