Example #1
0
        public void OnDrag(PointerEventData eventData)
        {
            if (pointerId != eventData.pointerId)
            {
                return;
            }

            Vector2 position = RectTransformUtility.WorldToScreenPoint(internalSettings.camera, Visual.Background.position);

            var input = (eventData.position - position) / (internalSettings.radius * internalSettings.canvas.scaleFactor);

            var meta = new InputMeta(input);

            for (int i = 0; i < HandleInput.Length; i++)
            {
                HandleInput[i].Handle(Visual, internalSettings, ref meta);
            }
            var output = meta.vector;

            Visual.Handle.anchoredPosition = output * internalSettings.radius;// * internalSettings.handleRange;

            for (int i = 0; i < HandleOutput.Length; i++)
            {
                HandleOutput[i].Handle(ref output);
            }

            SetData(output);
        }
 public void Handle(Visual visual, InternalSettings internalSettings, ref InputMeta meta)
 {
     if (meta.magnitude > internalSettings.handleRange)
     {
         meta.vector = meta.normalized * internalSettings.handleRange;
     }
 }
Example #3
0
 public void Handle(Visual visual, InternalSettings internalSettings, ref InputMeta meta)
 {
     if (meta.magnitude > internalSettings.handleRange)
     {
         Vector2 difference = meta.normalized * (meta.magnitude - internalSettings.handleRange) * internalSettings.radius;
         visual.Background.anchoredPosition += difference;
     }
 }