public void update() {
		if(!active) {
			return;
		}

		Vector thrust = this.thrust.clone();

		// normalize thrust if we need to
		if(thrust.lengthSq() > Rules.MISSILE_MAX_THRUST * Rules.MISSILE_MAX_THRUST) {
			thrust.normalize().scale(Rules.MISSILE_MAX_THRUST);
		}

		// update velocity
		velocity.add(thrust);

		// normalize velocity if we need to
		if(velocity.lengthSq() > Rules.MISSILE_MAX_VELOCITY * Rules.MISSILE_MAX_VELOCITY) {
			velocity.normalize().scale(Rules.MISSILE_MAX_VELOCITY);
		}

		// update position
		position.add(velocity);

		// deplete thrust
		this.thrust.sub(thrust);

		if(!Rules.isInBattlefield(position)) {
			active = false;
		}
	}