@Override
    public void draw(boolean isStick)
    {
        gl.glPushMatrix();
        gl.glTranslatef(this.origin[X], this.origin[Y], this.origin[Z]);
        this.drawSphere(this.shoulderRadius, 128, 128);
        gl.glRotated(shoulderRot * (this.isLeft ? 1 : -1), shoulderRotVec.x(), shoulderRotVec.y(), shoulderRotVec.z());
        gl.glTranslatef(0, 0, -this.uDimensions[Z] - this.shoulderRadius);
        gl.glScalef(this.uDimensions[X], this.uDimensions[Y], this.uDimensions[Z]);
        if (isStick)
        {
            glut.glutSolidCylinder(0.1, 1D, 16, 16); // upper arm
        }
        else
        {
            glut.glutSolidCylinder(0.5, 1D, 16, 16); // upper arm
        }
        gl.glScalef(1/this.uDimensions[X], 1/this.uDimensions[Y], 1/this.uDimensions[Z]);
        gl.glTranslatef(0, 0, -this.elbowRadius);
        drawSphere(this.elbowRadius, 128, 128);
        gl.glRotated(elbowRot, elbowRotVec.x(), elbowRotVec.y(), elbowRotVec.z());
        gl.glTranslatef(0, 0, -this.elbowRadius - this.lDimensions[Z]);
        gl.glScalef(this.lDimensions[X], this.lDimensions[Y], this.lDimensions[Z]);
        if (isStick) // if stick figures mode is on
        {
            glut.glutSolidCylinder(0.1, 1D, 16, 16); // upper arm
        }
        else
        {
            glut.glutSolidCylinder(0.5D, 1D, 16, 16);
        }
        
        if (!isStick) // if solid robots mode is on
        {
            gl.glScalef(1/this.lDimensions[X], 1/this.lDimensions[Y], 1/this.lDimensions[Z]);
            gl.glTranslatef(0, 0f, -this.hand[Z]/2);
            drawHand();
        }
        gl.glPopMatrix();
    }