public override void CancelTouch(TouchPoint touch, bool @return)
        {
            base.CancelTouch(touch, @return);

            map.Remove(touch.Id);
            if (@return)
            {
                TouchHit hit;
                if (!gesture.GetTargetHitResult(touch.Position, out hit))
                {
                    return;
                }
                map.Add(touch.Id, beginTouch(processCoords(hit.RaycastHit.textureCoord), touch.Tags).Id);
            }
        }
    void TouchMoveHandler(object sender, System.EventArgs e)
    {
        if (joystickActive && AnimationSetter.instance.state != MonsterState.Dash)
        {
            if (fingerpresses == 1)
            {
                MetaGesture gesture = sender as MetaGesture;
                gesture.GetTargetHitResult(out hitJS);
            }

            float x = 0;
            float y = 0;

            if (Camera.main.WorldToScreenPoint(hitJS.Point).x >= Camera.main.WorldToScreenPoint(joystickPos.transform.position).x + XTHRESHHOLD || Camera.main.WorldToScreenPoint(hitJS.Point).x < Camera.main.WorldToScreenPoint(joystickPos.transform.position).x - XTHRESHHOLD)
            {
                x = (hitJS.Point.x - joystickPos.transform.position.x) * MAXXSPEED;
                if (x > MAXXSPEED)
                {
                    x = MAXXSPEED;
                }
            }

            if (Camera.main.WorldToScreenPoint(hitJS.Point).y >= Camera.main.WorldToScreenPoint(joystickPos.transform.position).y + YTHRESHHOLD || Camera.main.WorldToScreenPoint(hitJS.Point).y < Camera.main.WorldToScreenPoint(joystickPos.transform.position).y - YTHRESHHOLD)
            {
                y = (hitJS.Point.y - joystickPos.transform.position.y) * MAXYSPEED;
                if (y > MAXYSPEED)
                {
                    y = MAXYSPEED;
                }
            }

            Vector3 moveVector = new Vector3(x, y, player.transform.position.z);
            moveVector.Normalize();
            //print(moveVector);

            player.GetComponent <MonsterController>().RecieveMovmentImput(moveVector);

            if (moveVector.x != 0 || moveVector.y != 0)
            {
                AnimationSetter.instance.SetMovement(true);
            }
            else
            {
                AnimationSetter.instance.SetMovement(false);
            }
        }
        flickReady = false;
    }
    void TouchStartHandler(object sender, System.EventArgs e)
    {
        if (!joystickActive && fingerpresses == 0 && AnimationSetter.instance.state != MonsterState.Stun)
        {
            MetaGesture gesture = sender as MetaGesture;
            TouchHit    hit;
            gesture.GetTargetHitResult(out hit);

            Vector3 modifiedPos = new Vector3(hit.Point.x, hit.Point.y, joystickPos.transform.position.z);

            joystickPos.transform.position = modifiedPos;

            joystickActive = true;
            flickReady     = false;
        }
        fingerpresses++;
    }