### 6.0B Changes May 11, 2000 This is a list of the changes in the LightWave® 6.0B patch that affect the SDK. In most cases, the changes are additions to global services that won't affect the operation of existing code. In some cases, however, you will have to recompile, and in a few, it may be necessary to rewrite a small amount of your code that was written prior to the release of the patch. `lwenvel.h` Added `server` function to the Channel Info global. `lwfilter.h` Added `LWBUF_MOTION_X` and `LWBUF_MOTION_Y` for vector blur feature. The buffers will be filled in with the image coordinate movement at each pixel during the time the shutter was open. For example, if part of an object has moved 11 pixels right and 6 pixels down since the previous frame, and the blur length is 50%, the motion buffers will contain 5.5 and 3.0 in that part of the frame. Camera motion is also taken into account. This information can be used by filters to perform a Photoshop-style vector motion blur. `lwgeneric.h` Generic plug-ins are now first activated with a version number of 4. If that doesn't work, the `saveScene` function is replaced with one that saves old format scenes, and version numbers 3, 2, and 1 are tried. `lwhost.h` Added new dialog types to Message Functions global, incremented the service name. (3/23) The new Locale Info global has been implemented (but the old Language ID global is still supported as well). `lwimage.h` Added `sceneLoad` and `sceneSave` to Image List global, now "Image List 2". Changed LWImageID to LWPixmapID in Image Utility functions. `lwmaster.h` Added `LWMAST_LAYOUT` type for masters that survive scene clearing. `lwmodeler.h` `mode` and `vmap` functions added to the state query global, incremented the service name. `lwpanel.h` fixed `PAN_SETDATA`, `PAN_SETDRAW`, `PAN_SETKEYS`; touched up `PAN_SETH`, `MOVE_PAN`; added `PAN_SETW`. `lwpreview.h` Changed `close` to accept void arg. `lwprtcl.h` New API. Removed obsolete functions `setDraw`, `setMesh`, `remParticle`. `lwrender.h` Only items matching the current edit mode are now eligible to have their `LWITEMF_SELECTED` bit set by the Interface Info `itemFlags` function. Added `LWIP_PIVOT_ROT` to let plug-ins get pivot rotation. If the Item Info `param` function is called while the user is dragging items in a viewport and the time argument matches the current time, the function can now return temporary, non-keyframed data. One benefit of this change is that expressions can react to interactively moved items even if Auto Key is turned off. changed flag name to `LWOBJF_UNSEEN_BY_CAMERA`. A `server` function has been added to the Item Info global. It takes an item ID, a class name, and an index (which starts with one, as in the tag functions). The return value is the name of whatever server is applied in the specified "slot" (or NULL if there isn't one). Naturally the ID is ignored for classes like volumetrics, filters, etc. Added `flags` and `fog` to Object Info. Corrected "LW Comp Info" to "LW Compositing Info". Added `renderCamera` to LWSceneInfo structure. Added `type`, `color`, and `squeeze` to LWBackdropInfo structure. A function to get the ID of the camera used for rendering has been added to the Scene Info global. It accepts a time argument in order to be ready for automated camera switching in the future. Added `serverFlags` and `controller` to Item Info. The first frame, last frame, and step size used by the frame slider and by Layout previews can now be obtained through the Interface Info global. The vectors returned by the Item Info `param` function now take pivot rotation into account. Attempts by plug-ins to look up information about their items while in the process of being created due to cloning should no longer fail. `lwshader.h` Added `polygonID` to LWShaderAccess. Added `vertsWPos` to LWShaderAccess. `lwshelf.h` New API. Removed closed notification function typedef. Removed closed notification from shelf subscription. Added `isOpen`. `lwsurf.h` The `byName` function now has an additional object name argument. If the object name is set to NULL, the function will return all the surfaces that share the same name, behaving as before. `lwtxtr.h` `layerEnvGrp` renamed `layerEnvGroup`. Input parameter type defines added. `polygonID` added to LWMicropol structure. `setParam` and `getParam` functions added. Added `evaluateUV`, which sets the UV values given the 3D position of the point in world and local coordinates, plus the world and local dominant axis. This does the coordinate transfromation and projection from 3D to 2D. Added new tags to set and get images and vmaps. Added `vertsWPos` to LWMicropol. Added `setEnvGroup` and `envGroup` functions. Added `layerType` function. Added tags for getting and setting opacity, reference object, repeat options, pixel blending, AA, AA strength. `lwtxtred.h` `setParam` and `getParam` functions removed (put into lwtxtr.h). Added `refresh`, which refreshes the editor if some parameters have been changed without user interaction. The clientID should be NULL if trying to update surface textures (= default client). That's what texture guide is doing. Added `currentLayer`, which gets the currently selected layer in the texture editor. If client is NULL, uses surface's texture editor. `lwvolume.h` Removed adaptive flag. The `flags` function of each volumetric plug-in is now called to determine whether to include it in reflection, refraction, or shadow computations. The `LWVEF_RAYTRACE` bit in the LWVolumeAccess structure is now set when evaluating volumetric plug-ins for a ray. `lwxpanel.h` Added focus event code. Added refresh codes. Added `XpXREQCFG`, `XpBORDER`, `XpDLGTYPE` hints. Commands: Layout The usage string for the `AddPlugins` command now shows that it accepts a filename argument. The `AddToSelection` and `RemoveFromSelection` commands have been added to allow plug-ins and scripts to create and manage multiple selections. They accept a hexadecimal item ID as an argument, and the usual selection rules apply (for example, if only one item of the current type is selected, it can't be deselected). Other new commands include `SubdivisionOrder` and `ResolutionMultiplier`, which work just like the identically named scene file lines. A `RemoveServer` command has been added. Like `ApplyServer`, it takes a class name argument, but it differs in that it takes an index rather than a server name (in case there are multiple instances of the same server). Consistent with the Item Info `server` function, these indices count from one. Item-specific plug-ins like motion and displacement handlers are removed from the current item. Commands: Modeler The `SaveCommandList` command in Layout has been duplicated in Modeler. A new batch command `maketesball2` has been added which takes the new segments parameter for tesselated spheres. The old `maketesball` command still works using the old level parameter. The segments parameter directly sets the number of segments along the the edges between the 12 polyhedral vertices. Power of two segment values are equivalent to the old level values: 1 = level 0, 2 = level 1, 4 = level 2, 8 = level 3, 16 = level 4, 32 = level 5, etc. A new `maketext2` batch command has been added which accepts alignment settings. It also takes fonts as zero-based indices, fixing a long lived bug. Added more arguments to the `bevel` batch command to bring it more in line with the options of the Bevel tool. There are new plug-in commands for selecting the current object and for setting the vmap for the current morph, texture or weight map. Commands: Surfaces The `Surf_SetSurf` command now has an additional object name argument. This specifies in which object library the surface should be set (there can be multiple surfaces with the same name in different objects). `Surf_RemoveShader` command now works this way: Removes all shaders that use the specified name, and if name is NULL, removes all shaders. Commands: Envelopes Added `Env_ApplyServer` <classname> <servername>. Added `Env_RemoveServer` <clasname> <index>. Sample Code modlib: Added object name argument to `mgGetSurfacesByName` in surface.c. rapts: Changed `layerEnvGrp` to `layerEnvGroup`. Miscellaneous A new Plug-in Options panel has been added. It contains the controls for generic and master plug-ins that used to be on the General Options panel, as well as an Add Plug-ins button and some UI ranch space for the masters. There is now a dedicated options button which calls `ServerInterface` for the current animation saver. This is intended to be the official way to edit compression settings, etc. Saver plug-ins whose interfaces are in their `load` or `open` functions should be rewritten. The DirectoryType config file entry for images is now used as the default location for image loading, replacing the ImagesDirectory line. Several other old config file lines have also been discontinued in favor of new DirectoryType entries. Envelopes for displacement and clip map channels are now added to the envelope groups of the objects they belong to. This makes them appear in the right place in the Graph Editor hierarchy.