@Override
	public void update() {
		Action action = this.ctrl.action(this.game);
		d.rotate(action.turn*STEER_RATE*Constants.DT);
	    //calc new v
	    v.add(d, MAG_ACC*Constants.DT*action.thrust);
	    v.mult(LOSS);
	    s.add(v, Constants.DT);
	    s.wrap(Constants.WORLD_WIDTH, Constants.WORLD_HEIGHT);
	    if (action.shoot && lastShot == 0) {
            shootBullet();
            lastShot = 20;
        }
        if (action.thrust == -1) {
            SoundManager.play(SoundManager.thrust);
            thrustParticles();
        }
        if (action.energyShield && !shield.active && shield.hasEnergy()) shield.activate();
        else if (!action.energyShield && shield.active) shield.deactivate();
        if (lastShot > 0) lastShot--;
		
	}