NAME
    hwGroup - create a group of objects which share a transformation

INHERITS FROM
    hwOrient

PROPERTIES
    Children	*O	The list of children which are grouped together
			in this object
    Invisible	1B	True if the object is not to be displayed; false
			otherwise
    Visibility	1I	Visibility mask for use with hwSetVisibility
    LOD		*F	Array of level-of-detail information
    Matrices	*F	Individual transform matrix for each Child

DEFAULTS
    Children = {}
    Invisible = False
    Visibility = 0xFFFFFFFF
    LOD = {}
    Matrices = {}

DESCRIPTION
    The hwGroup class is used to group a set of children together and
    apply a common transformation to them.  This is useful for two
    reasons; first, it is often easier to transform multiple objects
    simultaneously; second, a hierarchy of objects enhances the
    visibility culling algorithms used by HoverWare.

    The LOD property is an array of minimum and maximum LOD values at
    which the corresponding Child is to be drawn.  The LOD values are
    expressed as a percentage of viewport size.  When the bounding
    volume of the whole group is found to be within range of a
    particular Child's LOD min and max, then that child is drawn.  If
    the Children array has more entries than the LOD array has pairs,
    then the extra Children are always drawn.

    The Matrices property is used to transform individual Children.
    Every 16 floats of the Matrices property is considered to be an
    individual matrix corresponding to the i'th Child.  This matrix is
    pushed before the Child is drawn, and then popped afterward.  If
    there are more Children than Matrices, the extra children are drawn
    without an extra matrix push/pop.

C EXAMPLE
    /* Draw a group of objects all rotated about Y by 30 degrees */
    hwObject
	group,
	objectList[] = {obj1, obj2, obj3, obj4};

    group = hwGroup->create( hwGroup );
    group->modify( group, hwStrChildren,
			HW_MAKE_TYPE(HW_TYPE_OBJECT,4), objectList );
    HW_MODIFY_3F( group, hwStrRotate, 0.0, 30.0, 0.0 );
    group->draw( group, disp );
    group->destroy( group );

OBJECT FILE EXAMPLE
    # A group of objects, rotated about Y by 30 degrees
    hwGroup group {
	Rotate = {0,30,0}
	Children = {obj1, obj2, obj3, obj4}
    }

SEE ALSO
    hw(3), hwOrient(3), hwSetVisibility(3)