### State Query Availability LightWave® 6.0 Component Modeler Header lwmodeler.h This global provides a set of functions that return information about the current modeling environment. Global Call
       LWStateQueryFuncs *query;
       query = global( LWSTATEQUERYFUNCS_GLOBAL, GFUSE_TRANSIENT );
The global function returns a pointer to an LWStateQueryFuncs.
       typedef struct st_LWStateQueryFuncs {
          int          (*numLayers) (void);
          unsigned int (*layerMask) (EltOpLayer);
          const char * (*surface)   (void);
          unsigned int (*bbox)      (EltOpLayer, double *minmax);
          const char * (*layerList) (EltOpLayer, const char *);
          const char * (*object)    (void);
          int          (*mode)      (int);
          const char * (*vmap)      (int, LWID *);
       } LWStateQueryFuncs;
  `nlayers = numLayers()` Returns the number of data layers for the current object. `mask = layerMask( oplayer )` Returns bits for the data layers included in the EltOpLayer selection. If bit i of the mask is set, then layer i + 1 of the current object belongs to the set defined by the `oplayer` argument. This function is provided primarily for backward compatibility. New code should use the `layerList` function, which is designed for multiple objects and an unlimited number of layers. `surfname = surface()` Returns the name of the current default surface. `npoints = bbox( oplayer, box )` Returns the number of points in the layer selection. If `box` isn't NULL, it is an array of six doubles that will receive the bounding box of the points in the layer selection, in the order (x0, x1, y0, y1, z0, z1). `layers = layerList( oplayer, objname )` Returns a string containing layer numbers for the given EltOpLayer and object. The layer numbers in the string are separated by spaces, with the highest numbered layer listed first. The object name is its filename, or NULL for the current object. `objname = object()` Returns the filename of the current object. If the geometry in the current layers hasn't been saved to a file yet, this returns the reference name (the name that would be returned by the Object Functions `refName` function). If no object has been loaded into Modeler, this returns NULL. `m = mode( setting )` Returns the state of a user interface setting. The setting codes are `LWM_MODE_SELECTION` Returns the selection mode (points, polygons, volume) as an integer. `LWM_MODE_SYMMETRY` Returns the state of the symmetry toggle. `vmapname = vmap( index, lwid )` Returns the name of the currently selected vertex map, and stores the `LWID` of the vmap in the second argument. The index can be one of the following.
      LWM_VMAP_WEIGHT
      LWM_VMAP_TEXTURE
      LWM_VMAP_MORPH
Example This code fragment exercises the query functions.
       #include <lwserver.h>
       #include <lwmodeler.h>

       LWStateQueryFuncs *query;
       double box[ 6 ];
       char *surfname, *layers, *objname;
       int nlayers, npoints;

       query = global( LWSTATEQUERYFUNCS_GLOBAL, GFUSE_TRANSIENT );
       if ( !query ) return AFUNC_BADGLOBAL;

       nlayers  = query->numLayers();
       npoints  = query->bbox( OPLYR_PRIMARY, box );
       surfname = query->surface();
       objname  = query->object();
       layers   = query->layerList( OPLYR_FG, objname );