private void Update()
    {
        if (!demonThrown && input.GamePressed)
        {
            goodPress = true;
            targeter.SetupTargetting(input.PressPos);
            demon.transform.position = transform.position + throwOriginOffset;
            line.SetLaunchObjectVariables(demonLaunchData);
        }
        if (goodPress && input.PressHeld)
        {
            anim.PlayReady();

            targeter.AdjustTargetting(input.PressPos);
            if (targeter.DrawIsSufficient())
            {
                line.ManageTrajectoryLine(throwStrength, ForceMode.Impulse);
            }
            else
            {
                line.DisableLine();
                //anim.PlayWithdraw();
            }
        }
        if (goodPress && input.PressReleased)
        {
            line.DisableLine();
            anim.PlayThrow();
            if (targeter.DrawIsSufficient())
            {
                demonSprite.enabled = true;
                launcher.Launch(demonLaunchData.Rigidbody, targeter, throwStrength, ForceMode.Impulse);
                demonThrown = true;
            }

            goodPress = false;
        }

        if (demonThrown && input.GamePressed)
        {
            anim.PlayRecall();
        }
    }