### 9.6 Changes November 15, 2008 This is a list of the changes in the LightWave® 9.6 release that affect the SDK. `lwpanel.h` A new `DISTSLIDER_CTL` control has been added. The `CTL_MOUSEBUTTON` controller attribute has been added which contains the mouse buttons which are pressed, to complement the `CTL_MOUSEX` and `CTL_MOUSEY` attributes. `lwrender.h` Functions have been added to `LWBoneInfo` to support the new bulging and displacement parameters. This brings the version number of the global up to 5. The `LWSceneInfo` global has been expanded to include new radiosity flags, and hence has its version number increased to 6. New raytracing functions (`LWRayTraceDataFunc` and `LWRayTraceShadeFunc`) were added to the Rendering Functions. See the raytracing functions page for a description of these. The `itemColorRgba` function in `LWInterfaceInfo` has been expanded to include a state parameter, which indicates the state of the item for which to obtain the color. Previously only the color of the item in its current state could be returned. This has necessitated increasing the version number of the `LWInterfaceInfo` global to 7. `lwcustobj.h` To support part selection for gizmos, the `LWCustomObjAccess` structure has been expanded to include `setPart`. `lwgizmo.h` The gizmo interface has been changed by the inclusion of a parts array in `pickItems`. The version number of the interface has been bumped to 3. `lwmeshedt.h` The st_MeshEditOp interface has been expanded to include routines to create/destroy/manipulate vertex maps. The version number of the interface has been bumped to 6. `lwfilter.h` Some more buffers have been added. Some of the new buffers are computed from other buffers, and therefore require those other buffers to be available. Furthermore, as there aren't any bits left to represent those buffers for the `flags()` callback, requesting access to the new buffers is done by requesting the needed combination of other buffers. To avoid confusion, the buffer flags (`LWBUFF_*`, which are bitmasks, returned from the `flags()` callback) have now been separated from the buffer types (`LWBUF_*`, which are indices, passed to `getLine()`, `getVal()`, and `setVal()`). `lwextrend.h` A new class of plugins has been added, used to implement an external renderer. External renderers replace the built-in LightWave® renderer. `Commands: Layout` The `ParentInPlace` command now takes an optional argument to set the state, instead of toggle. The `ClearSelected` command now takes an optional argument to partially or completely supress the confirmation dialog. The `DirtyMotion` command has been added, which marks the motion of the currently selected item as needing re-evaluation. A new `EnableMC` toggle command has been added to complement the `EnableIK` command. It disables motion controllers. `LScript 2.13.1` The Shader Access data member `polNum` is now deprecated. This data member reports polygon index values in a zero-based format which is incongruent with LScript's 1-based idiom. A new Shader Access data member called `polIndex` has been added to replace the deprecated `polNum`. This new data member reports the polygon index value using a 1-based format. Added the following new data members to the Scene Object Agent: doublesidedarealights (true/false) loadinprogress (true/false) radiositytype Contains one of the following three values: LWRT_BACKDROP LWRT_MONTECARLO LWRT_FINALGATHER radiosityindirectbouncecount (int) radiosityraysperevaluation1 (int) radiosityraysperevaluation2 (int) radiosityintensity (double) radiosityangulartolerance (double) radiosityminimumpixelspacing (double) radiositymaximumpixelspacing (double) radiositymultiplier (double) radiosityfilename (string) causticsintensity (double) causticsaccuracy (int) causticssoftness (int) radiosityflags[9] Each entry is a Boolean true/false that corresponds to one of the following radiosity flags: LWRDFLG_SHOW_NODES LWRDFLG_SHOW_CELLS LWRDFLG_SHOW_COLOR_CELLS LWRDFLG_SHOW_SAMPLES LWRDFLG_SHOW_MISSING_PREPROCESS_SAMPLES LWRDFLG_SHOW_MISSING_RENDER_SAMPLES LWRDFLG_SHOW_SECOND_BOUNCE LWRDFLG_SHOW_BEHIND LWRDFLG_USE_BUMPS Expanded the SceneInfo.renderopts[] array by 3 to accommodate the USEGRADIENTS (28), USEBEHINDTEST (29), and CAUSTICSCACHE (30) flags. Added the LWRT_BACKDROP, LWRT_MONTECARLO and LWRT_FINALGATHER constants to the environment for use with the SceneInfo.radiositytype value. Added the Layout RadiosityFlags() command. This command is used to set one or more radiosity flag values. These values are passed to the command, logically or'ing multiple flags to enable them. Any flag values not included in the resulting or'd value are disabled. Added the following environment constants for use with the RadiosityFlags() command: LWRDFLG_SHOW_NODES LWRDFLG_SHOW_CELLS LWRDFLG_SHOW_COLOR_CELLS LWRDFLG_SHOW_SAMPLES LWRDFLG_SHOW_MISSING_PREPROCESS_SAMPLES LWRDFLG_SHOW_MISSING_RENDER_SAMPLES LWRDFLG_SHOW_SECOND_BOUNCE LWRDFLG_SHOW_BEHIND LWRDFLG_USE_BUMPS Due to potential name conflicts, the following Procedural Texture (Shader) flags have been deprecated: `NORMAL` `COLOR` `LUMINOUS` `DIFFUSE` `SPECULAR` `MIRROR` `TRANSPARENT` `ETA` `ROUGHNESS` `RAYTRACE` They have been replaced with the following prefixed equivalents: `PT_NORMAL` `PT_COLOR` `PT_LUMINOUS` `PT_DIFFUSE` `PT_SPECULAR` `PT_MIRROR` `PT_TRANSPARENT` `PT_ETA` `PT_ROUGHNESS` `PT_RAYTRACE` New code should use the prefixed versions, and older code should migrate in preparation for the removal of the original flags in some later release. The following new flags have been added to the Procedural Texture (Shader) class: `PT_TRANSLUCENT` `PT_DIFFUSE_SHADE` `PT_SPECULAR_SHADE` `PT_REFRACT_SHADE` `PT_REFLECT_SHADE` Due to potential name conflicts, the following Image Filter flags have been deprecated: `SPECIAL` `LUMINOUS` `DIFFUSE` `SPECULAR` `MIRROR` `TRANS` `RAWRED` `RAWGREEN` `RAWBLUE` `SHADING` `SHADOW` `GEOMETRY` `DEPTH` `DIFFSHADE` `SPECSHADE` `MOTIONX` `MOTIONY` `REFLECTRED` `REFLECTGREEN` `REFLECTBLUE` `RED` `GREEN` `BLUE` `ALPHA` They have been replaced with the following prefixed equivalents: `IF_SPECIAL` `IF_LUMINOUS` `IF_DIFFUSE` `IF_SPECULAR` `IF_MIRROR` `IF_TRANS` `IF_RAWRED` `IF_RAWGREEN` `IF_RAWBLUE` `IF_SHADING` `IF_SHADOW` `IF_GEOMETRY` `IF_DEPTH` `IF_DIFFSHADE` `IF_SPECSHADE` `IF_MOTIONX` `IF_MOTIONY` `IF_REFLECTRED` `IF_REFLECTGREEN` `IF_REFLECTBLUE` `IF_RED` `IF_GREEN` `IF_BLUE` `IF_ALPHA` New code should use the prefixed versions, and older code should migrate in preparation for the removal of the original flags in some later release.