public void turn(long deltaMs) {
        float targetAngleDeg = MathUtil.radToDeg(targetAngle);
        float currentAngleDeg = MathUtil.radToDeg(angleRad);
        
        WeaponsComponent wc = (WeaponsComponent)owner.getComponent("WeaponsComponent");
        if(currentAngleDeg < targetAngleDeg - 1f) {
            float amount = 0.0f;
            if(targetAngleDeg - currentAngleDeg > 180) {
                amount = -turnSpeed * deltaMs;
            }
            else {
                amount = turnSpeed * deltaMs;
            }
            setAngleRad(angleRad + amount);
            if(wc != null) {
                wc.setReady(false);
            }
        }
        else if(currentAngleDeg > targetAngleDeg + 1f) {
            float amount = 0.0f;
            if(currentAngleDeg - targetAngleDeg > 180) {
                amount = turnSpeed * deltaMs;
            }
            else {
                amount = -turnSpeed * deltaMs;
            }
            setAngleRad(angleRad + amount);
            if(wc != null) {
                wc.setReady(false);
            }
        }
        else {
            if(wc != null) {
                wc.setReady(true);
            }
        }
        
        if(angleRad < 0) {
            angleRad += MathUtil.degToRad(360);
        }
        
        float over = angleRad - MathUtil.degToRad(360);
        if(over > 0) {
            angleRad = 0 + over;
        }
    }