- ### 9.2 Changes March 21st, 2007 This is a list of the changes in the LightWave® 9.2 release that affect the SDK. `lwsc4.html` Changes have been made to the scene file format to add baked object identifiers. `panel.html` `CHANNEL_CTL`, `*ITEM_CTL`, and `TREE_CTL` use pointer values, not integer values as was previously incorrectly documented. `xpanel.html` Added text transformation callback, to allow value display to be customized. `lwserver.h` Added the Server Info global to allow plug-ins to query information about server modules defined in the system. `lwmaster.h` Added notification of changes in plugin state. Added the LWEVNT_NOTIFY_RENDER_ABORTED event notification. `lwfilter.h` Added `rayTraceMode` and `illuminateSample` raytrace functions to `LWPixelAccess`. Added the LWPFF_MULTITHREADED flag. Incremented the pixel filter handler version to 6. `lwvolume.h` Added `illuminateSample` to volumentric access structure. Incremented volumetric handler to version 6. Added `illuminateSample` to `LWVRayFuncs->SetRenderFuncs()`. Incremented VRayFuncs global to version 3. `lwrender.h` Added functions to `LWCameraInfo`: `motionBlurPasses` `shutterEfficiency` `noiseSampler` `filmSize` `frameTiming` `antiAliasing` `overSampling` `diaphragm` Incremented LWCameraInfo global to version 5. The retrieval of global camera controlled values through the camera info global has changed. The requirement that the camera be the current render camera for the global values to be returned has been removed. The camera evaluation functions global has been incremented to version 2 to incorporate the changes made to the camera handler API (see below). Due to the extent of the changes, version 1 of this global is no longer supported. Changed the name of the `LWOBJF_NODESENABLE` flag to the more accurate and descriptive `LWOBJF_NODEDISPENABLED`. The flag is now also documented. The `LWOBJF_NODEFORMERSAPPLIED` object flag now takes into account all types of deformations. `lwcamera.h` The camera handler API has undergone a significant make-over to support the improved motion blur and depth of field rendering. Camera evaluation is now also given a lens position and a time fraction. A `newFrame()` function has been added that is called at the start of a frame evaluation. The `newPass()` function has been removed. As a result, version 1 camera handler plugins are no longer supported and will not load. `lwimage.h` Incremented LWImageList global to version 5: Added a `create` function to create new images in memory Commands: Layout Several new related commands have been added to allow management of Master class plugins. `ActivateMaster` `ActivateMasterUnique` `RemoveMaster` Added commands to set the number of motion blur samples for the camera. `MotionBlurPasses` `GlobalMotionBlurPasses` Added `NoiseSampler` command to set the noise sampler for the camera. API Support has been added for Mac OS X universal binary plugins using the CFBundle method. LScript v2.9 LScript has been updated for the Macintosh OS X Universal Binary (UB) build of LightWave. The `getsep()` function now reports the correct separator character (`'/'`) when running under the Universal Binary build. The `platform()` function now returns `MACUB` when running under the Universal Binary build. (The `MACINTOSH` return value will now indicate the CFM version of Mac LightWave.) `if(platform() == MACUB)` The preprocessor `@if` test now supports `MACUB` as an indicator that LScript is running under the Universal Binary build. (Again, `MACINTOSH` now represents the CFM build.) For example: `@if platform == MACUB` The `ctlfilename()` and `ctlstring()` functions now handle text lengths limited only by your computer's available memory. Support has been added for Master Event Notifications (see lwmaster.h) in the process() callback. To enable Notifications for your script, you must provide the notification flags when requested, e.g.:
      flags
      {
          return(LWMASTF_LAYOUT,LWMASTF_RECEIVE_NOTIFICATIONS);
      }
The Requester Control Object Agent has a new data member, `label`. By reading and writing this value, you can alter the label text of a control that displays a label. A new file requester function called `getmultifile()` is now available. This is an open requester that allows multiple files to be selected by the user. The LScript Symbolic Debugger now supports debugging of scripts comprised of multiple "parts" (i.e., constructed using the @insert command). When debugging a script that includes other parts, the debugger will make each available via a tab interface. These parts can be selected, navigated, and breakpoints set or cleared even if they are not currently the focus of the debug session. Support for LP64 programming model The use of 'long' has been removed in favor of 'int'. The purpose of this change is to support LP64 programming models (where 'long' is 8 bytes, pointers are 8 bytes). In the previous LWSDK version, all currently supported platforms of LightWave treated 'long' as 4 bytes. The Macintosh architectures ppc64 and x86_64 use the LP64 programming model, whereas the i386 and ppc architectures use the ILP32 programming model. Windows x64 uses the LLP64 programming model (where 'int' is 4 bytes, 'long' is 4 bytes, 'long long' is 8 bytes, pointers are 8 bytes). Windows (32bit as in Win2k and WinXP) uses the ILP32 programming model (where 'int' is 4 bytes, 'long' is 4 bytes, pointers are 4 bytes). This version of LWSDK is not compatible with any LP32 programming model versions of LightWave (e.g. pre-Windows 2000 or pre-Mac OS X). This will cause some (if only a minor) inconvenience for those needing to update existing plugin code. Starting with this LWSDK version, you can begin to develop Macintosh universal binaries with both 32bit and 64bit versions. Keep the size of pointers in mind when using the LWItemID data type, which is a pointer type (of which only the lower 32bits are used). Macros to help typecast pointers to 32 bit values are provided in lwtypes.h (PTR2UINT and PTR2INT). These are helpful in I/O operations on LWItemID data. There are currently no 8 byte read or write features in the LWSDK.