public void handleInput(InputState pInputState) {
    if (mControllingCharacter == null) return;

    if (pInputState.mouseLeftClick() && mAttackTimer > mControllingCharacter.attackSpeed()) {
      mAttackVector.x = pInputState.mouseScreenCoords().x;
      mAttackVector.y = pInputState.mouseScreenCoords().y;
      mAttack = true;
      mAttackTimer = 0;
    }
  }
  public void update(GameTime pGameTime) {

    mAttackTimer += pGameTime.elapseGameTime();

    if (mAttack) {
      Vector2f lDirection =
          new Vector2f(
              mAttackVector.x + mGameWorldScreen.gameCamera().getPosition().x - 400,
              mAttackVector.y + mGameWorldScreen.gameCamera().getPosition().y - 320);
      float ltx = mControllingCharacter.x() + mControllingCharacter.width() * .5f;
      float lty = mControllingCharacter.y() + mControllingCharacter.height() * .5f;
      lDirection.sub(ltx, lty);
      lDirection.nor();

      lDirection.mul(10f);

      mGameWorldScreen
          .fireBallParticles()
          .addParticle(ltx, lty, lDirection.x, lDirection.y, new Sprite(0, 0, 32, 32));
      mAttack = false;
    }
  }