public void OnFingerDown(LeanFinger finger)
        {
            // Does the prefab exist?
            if (Prefab != null)
            {
                // Get the RaycastResults under this finger's current position
                var results = LeanTouch.RaycastGui(finger.ScreenPosition);

                if (results.Count > 0)
                {
                    // Is this finger over this UI element?
                    if (results[0].gameObject == gameObject)
                    {
                        // Spawn prefab
                        var instance = Instantiate(Prefab);

                        // Position
                        instance.transform.position = ScreenDepth.Convert(finger.ScreenPosition, gameObject);

                        // Select
                        instance.Select(finger);
                    }
                }
            }
        }
Example #2
0
        public void OnFingerDown(LeanFinger finger)
        {
            // Does the prefab exist?
            if (Prefab != null)
            {
                // Get the RaycastResults under this finger's current position
                var results = LeanTouch.RaycastGui(finger.ScreenPosition);

                if (results.Count > 0)
                {
                    // Is this finger over this UI element?
                    if (results[0].gameObject == gameObject)
                    {
                        // Spawn prefab
                        var instance = Instantiate(Prefab);

                        // Assign finger
                        instance.SpawnFinger = finger;

                        // Assign distance
                        instance.Distance = Distance;
                    }
                }
            }
        }
        public void OnFingerDown(LeanFinger finger)
        {
            // Does the prefab exist?
            if (partPrefab != null)
            {
                // Get the RaycastResults under this finger's current position
                var results = LeanTouch.RaycastGui(finger.ScreenPosition);

                if (results.Count > 0)
                {
                    // Is this finger over this UI element?
                    if (results[0].gameObject == gameObject)
                    {
                        // Spawn prefab
                        var partInstance = Instantiate(partPrefab);

                        // Position
                        partInstance.transform.position = ScreenDepth.Convert(finger.ScreenPosition, Camera, gameObject);

                        Contraption currentContraption = ContraptionsManager.instance.GetCurrentContraption();

                        currentContraption.AddPart(partInstance.GetComponent <Part>());

                        LeanSelectable.DeselectAll();

                        // Select
                        partInstance.GetComponent <LeanSelectable>().Select(finger);
                    }
                }
            }
        }
        public void OnFingerDown(LeanFinger finger)
        {
            // Does the prefab exist?
            if (constructed != null)
            {
                // Get the RaycastResults under this finger's current position
                var results = LeanTouch.RaycastGui(finger.ScreenPosition);

                if (results.Count > 0)
                {
                    // Is this finger over this UI element?
                    if (results[0].gameObject == gameObject)
                    {
                        // Spawn prefab
                        // var instance = Instantiate(constructed);

                        // Position
                        var pos = ScreenDepth.Convert(finger.ScreenPosition, Camera, gameObject);

                        pos.z = 0;

                        constructed.transform.position = pos;

                        // Select
                        // instance.Select(finger);
                    }
                }
            }
        }
Example #5
0
        private void TryGetComponent(SelectType selectUsing, Vector2 screenPosition, ref Component component)
        {
            switch (selectUsing)
            {
            case SelectType.Raycast3D:
            {
                // Make sure the camera exists
                var camera = LeanTouch.GetCamera(Camera, gameObject);

                if (camera != null)
                {
                    var ray = camera.ScreenPointToRay(screenPosition);
                    var hit = default(RaycastHit);

                    if (Physics.Raycast(ray, out hit, float.PositiveInfinity, LayerMask) == true)
                    {
                        Debug.Log("acertou");
                        component = hit.collider;
                    }
                }
                else
                {
                    Debug.LogError("Failed to find camera. Either tag your cameras MainCamera, or set one in this component.", this);
                }
            }
            break;

            case SelectType.Overlap2D:
            {
                // Make sure the camera exists
                var camera = LeanTouch.GetCamera(Camera, gameObject);

                if (camera != null)
                {
                    var point = camera.ScreenToWorldPoint(screenPosition);

                    component = Physics2D.OverlapPoint(point, LayerMask);
                }
                else
                {
                    Debug.LogError("Failed to find camera. Either tag your cameras MainCamera, or set one in this component.", this);
                }
            }
            break;

            case SelectType.CanvasUI:
            {
                var results = LeanTouch.RaycastGui(screenPosition, LayerMask);

                if (results != null && results.Count > 0)
                {
                    component = results[0].gameObject.transform;
                }
            }
            break;
            }
        }
Example #6
0
        // NOTE: This must be called from somewhere
        public void SelectScreenPosition(LeanFinger finger, Vector2 screenPosition)
        {
            // Stores the component we hit (Collider or Collider2D)
            var component = default(Component);

            switch (SelectUsing)
            {
            case SelectType.Raycast3D:
            {
                // Make sure the camera exists
                var camera = LeanTouch.GetCamera(Camera, gameObject);

                if (camera != null)
                {
                    var ray = camera.ScreenPointToRay(screenPosition);
                    var hit = default(RaycastHit);

                    if (Physics.Raycast(ray, out hit, float.PositiveInfinity, LayerMask) == true)
                    {
                        //Debug.Log( "SelectScreenPosition() finger = " + finger + ", screenPosition = " + screenPosition + ", hit.collider = " + hit.collider.gameObject.name );
                        component = hit.collider;
                    }
                }
            }
            break;

            case SelectType.Overlap2D:
            {
                // Make sure the camera exists
                var camera = LeanTouch.GetCamera(Camera, gameObject);

                if (camera != null)
                {
                    var point = camera.ScreenToWorldPoint(screenPosition);

                    component = Physics2D.OverlapPoint(point, LayerMask);
                }
            }
            break;

            case SelectType.CanvasUI:
            {
                var results = LeanTouch.RaycastGui(screenPosition, LayerMask);

                if (results != null && results.Count > 0)
                {
                    component = results[0].gameObject.transform;
                }
            }
            break;
            }

            // Select the component
            Select(finger, component);
        }
        protected override void OnSelectUp(LeanFinger finger)
        {
            // Stores the component we hit (Collider or Collider2D)
            var component = default(Component);

            switch (SelectUsing)
            {
            case SelectType.Raycast3D:
            {
                // Make sure the camera exists
                var camera = LeanTouch.GetCamera(Camera, gameObject);

                if (camera != null)
                {
                    var ray = camera.ScreenPointToRay(finger.ScreenPosition);
                    var hit = default(RaycastHit);

                    if (Physics.Raycast(ray, out hit, float.PositiveInfinity, LayerMask) == true)
                    {
                        component = hit.collider;
                    }
                }
            }
            break;

            case SelectType.Overlap2D:
            {
                // Make sure the camera exists
                var camera = LeanTouch.GetCamera(Camera, gameObject);

                if (camera != null)
                {
                    var point = camera.ScreenToWorldPoint(finger.ScreenPosition);

                    component = Physics2D.OverlapPoint(point, LayerMask);
                }
            }
            break;

            case SelectType.CanvasUI:
            {
                var results = LeanTouch.RaycastGui(finger.ScreenPosition, LayerMask);

                if (results != null && results.Count > 0)
                {
                    component = results[0].gameObject.transform;
                }
            }
            break;
            }

            // SelectTargetForTransform the component
            Drop(finger, component);
        }
Example #8
0
        private void FingerDown(LeanFinger finger)
        {
            var results = LeanTouch.RaycastGui(finger.ScreenPosition);

            if (results.Count > 0)
            {
                if (results[0].gameObject == Target)
                {
                    validFingers.Add(finger);
                }
            }
        }
 // When Starts the touch, Check if it started on the Joystick Background. If yes the Move Joystick
 private void OnFingerDown(LeanFinger finger)
 {
     if (finger.StartedOverGui == true)
     {
         RaycastResult guiObj;
         guiObj = LeanTouch.RaycastGui(finger.ScreenPosition);
         if (guiObj.gameObject.CompareTag("Joystick"))
         {
             startedOverJoystick = true;
             MoveJoystick(finger);
         }
     }
 }
        public bool ElementOverlapped(LeanFinger finger)
        {
            var results = LeanTouch.RaycastGui(finger.ScreenPosition, -1);

            if (results != null && results.Count > 0)
            {
                if (results[0].gameObject == gameObject)
                {
                    return(true);
                }
            }

            return(false);
        }
Example #11
0
        private void FingerDown(LeanFinger finger)
        {
            // Find GUI elements under finger
            var results = LeanTouch.RaycastGui(finger.ScreenPosition);

            if (results.Count > 0)
            {
                // If the first one is the target, select
                if (results[0].gameObject.transform == Target)
                {
                    Selectable.Select(finger);
                }
            }
        }
Example #12
0
        private void FingerDown(LeanFinger finger)
        {
            var results = LeanTouch.RaycastGui(finger.ScreenPosition, LayerMask);

            if (results != null && results.Count > 0)
            {
                if (results[0].gameObject == gameObject)
                {
                    Fingers.Add(finger);

                    if (OnDown != null)
                    {
                        OnDown.Invoke(finger);
                    }
                }
            }
        }
Example #13
0
        private void FingerDown(LeanFinger finger)
        {
            if (AutoClose == true)
            {
                // If this popup was tapped, ignore
                var results = LeanTouch.RaycastGui(finger.ScreenPosition);

                for (var i = 0; i < results.Count; i++)
                {
                    var result = results[i];

                    if (result.gameObject == gameObject)
                    {
                        return;
                    }
                }

                // Close?
                Close();
            }
        }
        protected override void OnSelectUp(LeanFinger finger)
        {
            // Stores the component we hit (Collider or Collider2D)
            var component = default(Component);

            switch (SelectUsing)
            {
            case SelectType.Raycast3D:
            {
                // Make sure the camera exists
                var camera = LeanHelper.GetCamera(Camera, gameObject);

                if (camera != null)
                {
                    var ray = camera.ScreenPointToRay(finger.ScreenPosition);
                    var hit = default(RaycastHit);

                    if (Physics.Raycast(ray, out hit, float.PositiveInfinity, LayerMask) == true)
                    {
                        component = hit.collider;
                    }
                }
                else
                {
                    Debug.LogError("Failed to find camera. Either tag your cameras MainCamera, or set one in this component.", this);
                }
            }
            break;

            case SelectType.Overlap2D:
            {
                // Make sure the camera exists
                var camera = LeanHelper.GetCamera(Camera, gameObject);

                if (camera != null)
                {
                    var ray   = camera.ScreenPointToRay(finger.ScreenPosition);
                    var count = Physics2D.GetRayIntersectionNonAlloc(ray, raycastHit2Ds, float.PositiveInfinity, LayerMask);

                    if (count > 0)
                    {
                        component = raycastHit2Ds[0].transform;
                    }
                }
                else
                {
                    Debug.LogError("Failed to find camera. Either tag your cameras MainCamera, or set one in this component.", this);
                }
            }
            break;

            case SelectType.CanvasUI:
            {
                var results = LeanTouch.RaycastGui(finger.ScreenPosition, LayerMask);

                if (results != null && results.Count > 0)
                {
                    component = results[0].gameObject.transform;
                }
            }
            break;
            }

            // Select the component
            Drop(finger, component);
        }
Example #15
0
        // NOTE: This must be called from somewhere
        public void SelectScreenPosition(LeanFinger finger, Vector2 screenPosition)
        {
            // Stores the component we hit (Collider or Collider2D)
            var component = default(Component);

            switch (SelectUsing)
            {
            case SelectType.Raycast3D:
            {
                // Make sure the camera exists
                var camera = LeanTouch.GetCamera(Camera, gameObject);

                if (camera != null)
                {
                    var ray = camera.ScreenPointToRay(screenPosition);
                    var hit = default(RaycastHit);

                    if (Physics.Raycast(ray, out hit, float.PositiveInfinity, LayerMask) == true)
                    {
                        component = hit.collider;
                    }
                    if (Physics.Raycast(ray, out hit, float.PositiveInfinity, clickable))
                    {
                        hit.collider.GetComponent <colorchanger>().ChangeColor(h, s, v);
                    }
                }
                else
                {
                    Debug.LogError("Failed to find camera. Either tag your cameras MainCamera, or set one in this component.", this);
                }
            }
            break;

            case SelectType.Overlap2D:
            {
                // Make sure the camera exists
                var camera = LeanTouch.GetCamera(Camera, gameObject);

                if (camera != null)
                {
                    var point = camera.ScreenToWorldPoint(screenPosition);

                    component = Physics2D.OverlapPoint(point, LayerMask);
                }
                else
                {
                    Debug.LogError("Failed to find camera. Either tag your cameras MainCamera, or set one in this component.", this);
                }
            }
            break;

            case SelectType.CanvasUI:
            {
                var results = LeanTouch.RaycastGui(screenPosition, LayerMask);

                if (results != null && results.Count > 0)
                {
                    component = results[0].gameObject.transform;
                }
            }
            break;
            }

            // Select the component
            Select(finger, component);
        }
Example #16
0
        private void TryGetComponent(SelectType selectUsing, Vector2 screenPosition, ref Component component)
        {
            switch (selectUsing)
            {
            case SelectType.Raycast3D:
            {
                // Make sure the camera exists
                var camera = LeanTouch.GetCamera(Camera, gameObject);

                if (camera != null)
                {
                    var ray   = camera.ScreenPointToRay(screenPosition);
                    var count = Physics.RaycastNonAlloc(ray, raycastHits, float.PositiveInfinity, LayerMask);

                    if (count > 0)
                    {
                        component = raycastHits[GetClosestRaycastHitsIndex(count)].transform;
                    }
                }
                else
                {
                    Debug.LogError("Failed to find camera. Either tag your cameras MainCamera, or set one in this component.", this);
                }
            }
            break;

            case SelectType.Overlap2D:
            {
                // Make sure the camera exists
                var camera = LeanTouch.GetCamera(Camera, gameObject);

                if (camera != null)
                {
                    var ray   = camera.ScreenPointToRay(screenPosition);
                    var count = Physics2D.GetRayIntersectionNonAlloc(ray, raycastHit2Ds, float.PositiveInfinity, LayerMask);

                    if (count > 0)
                    {
                        component = raycastHit2Ds[0].transform;
                    }
                }
                else
                {
                    Debug.LogError("Failed to find camera. Either tag your cameras MainCamera, or set one in this component.", this);
                }
            }
            break;

            case SelectType.CanvasUI:
            {
                var results = LeanTouch.RaycastGui(screenPosition, LayerMask);

                if (results != null && results.Count > 0)
                {
                    component = results[0].gameObject.transform;
                }
            }
            break;

            case SelectType.ScreenDistance:
            {
                var bestDistance = MaxScreenDistance * LeanTouch.ScalingFactor;

                bestDistance *= bestDistance;

                // Make sure the camera exists
                var camera = LeanTouch.GetCamera(Camera, gameObject);

                if (camera != null)
                {
                    foreach (var selectable in LeanSelectable.Instances)
                    {
                        var distance = Vector2.SqrMagnitude(GetScreenPoint(camera, selectable.transform) - screenPosition);

                        if (distance <= bestDistance)
                        {
                            bestDistance = distance;
                            component    = selectable;
                        }
                    }
                }
            }
            break;
            }
        }
        protected void TryGetComponent(SelectType selectUsing, Vector2 screenPosition, ref Component component, ref Vector3 worldPosition)
        {
            switch (selectUsing)
            {
            case SelectType.Raycast3D:
            {
                // Make sure the camera exists
                var camera = LeanTouch.GetCamera(Camera, gameObject);

                if (camera != null && camera.pixelRect.Contains(screenPosition) == true)
                {
                    var ray   = camera.ScreenPointToRay(screenPosition);
                    var count = Physics.RaycastNonAlloc(ray, raycastHits, float.PositiveInfinity, LayerMask);

                    if (count > 0)
                    {
                        var closestHit = raycastHits[GetClosestRaycastHitsIndex(count)];

                        component     = closestHit.transform;
                        worldPosition = closestHit.point;
                    }
                }
                else
                {
                    Debug.LogError("Failed to find camera. Either tag your cameras MainCamera, or set one in this component.", this);
                }
            }
            break;

            case SelectType.Overlap2D:
            {
                // Make sure the camera exists
                var camera = LeanTouch.GetCamera(Camera, gameObject);

                if (camera != null && camera.pixelRect.Contains(screenPosition) == true)
                {
                    var ray   = camera.ScreenPointToRay(screenPosition);
                    var slope = -ray.direction.z;

                    if (slope != 0.0f)
                    {
                        var point = ray.GetPoint(ray.origin.z / slope);

                        component = Physics2D.OverlapPoint(point, LayerMask);

                        if (component != null)
                        {
                            worldPosition = component.transform.position;
                        }
                    }
                }
                else
                {
                    Debug.LogError("Failed to find camera. Either tag your cameras MainCamera, or set one in this component.", this);
                }
            }
            break;

            case SelectType.CanvasUI:
            {
                var results = LeanTouch.RaycastGui(screenPosition, LayerMask);

                if (results != null && results.Count > 0)
                {
                    var firstTransform = results[0].gameObject.transform;

                    component     = firstTransform;
                    worldPosition = firstTransform.position;
                }
            }
            break;

            case SelectType.ScreenDistance:
            {
                var bestDistance = MaxScreenDistance * LeanTouch.ScalingFactor;

                bestDistance *= bestDistance;

                // Make sure the camera exists
                var camera = LeanTouch.GetCamera(Camera, gameObject);

                if (camera != null && camera.pixelRect.Contains(screenPosition) == true)
                {
                    foreach (var selectable in LeanSelectable.Instances)
                    {
                        var distance = Vector2.SqrMagnitude(GetScreenPoint(camera, selectable.transform) - screenPosition);

                        if (distance <= bestDistance)
                        {
                            bestDistance  = distance;
                            component     = selectable;
                            worldPosition = selectable.transform.position;
                        }
                    }
                }
            }
            break;

            case SelectType.Intersect2D:
            {
                // Make sure the camera exists
                var camera = LeanTouch.GetCamera(Camera, gameObject);

                if (camera != null && camera.pixelRect.Contains(screenPosition) == true)
                {
                    var ray   = camera.ScreenPointToRay(screenPosition);
                    var count = Physics2D.GetRayIntersectionNonAlloc(ray, raycastHit2Ds, float.PositiveInfinity, LayerMask);

                    if (count > 0)
                    {
                        var firstHit = raycastHit2Ds[0];

                        component     = firstHit.transform;
                        worldPosition = firstHit.point;
                    }
                }
                else
                {
                    Debug.LogError("Failed to find camera. Either tag your cameras MainCamera, or set one in this component.", this);
                }
            }
            break;
            }
        }