6.5B Changes
May 8, 2001
This is a list of the changes in the LightWave 6.5B patch that affect the SDK. As with
previous changes, these in most cases won't require you to rewrite or recompile your
existing code.
Structures associated with the CustomObjHandler
class and the Particle Services, Object Info and Interface
Info globals were changed, but the custom object version number and the global name
strings weren't incremented. This was discovered too close to the release of 6.5B to be
remedied. In all cases, the changes involve members added to the ends of structures, so
they have no effect on existing plug-ins. New plug-ins that need to distinguish between
the old and new structures can use the program build numbers returned by the Product Info global.
lwcustobj.h
- A text function was added to LWCustomObjAccess (Custom
Objects).
- Added LWVIEW_SCHEMA to the codes for the view field of the
LWCustomObjAccess structure.
- Added LWCOF_SCHEMA_OK to the flags that can be returned from the
LWCustomObjHandler flags callback
lwhost.h
lwmaster.h
- Added LWEVNT_TIME to the event codes that can be passed to the Master class event callback. This event notice is
sent whenever the frame slider is moved, which includes playing the scene, but not playing
back a preview.
lwmath.h
- Bracketed MIN, MAX and ABS macros within preprocessor
conditionals so that they won't conflict with versions of the macros that might be defined
elsewhere.
lwmeshes.h
- Incremented LWOBJECTFUNCS_GLOBAL (Scene Objects)
to "Scene Objects 3"
- Added userName and refName functions to the LWObjectFuncs structure.
These return, respectively, the name of the object as seen by the user, and an unambiguous
internal name for the object that can be used to refer to it in commands.
lwpanel.h
- Added LWValPointer to the data types in the LWValue union used by Panels. Besides being more type-friendly, this change is in
anticipation of 64-bit operating systems on which ints and pointers may not be the same
size.
- LWValPointer used in the definitions of the CON_PAN, CON_PANFUN and CON_SETEVENT
macros.
lwprtcl.h
- The LWPSB_ENB buffer (Particle Services)
now encodes three states (LWPST_DEAD, LWPST_ALIVE, LWPST_LIMBO)
instead of two (on/off).
- Added LWPSB_CAGE (collision age) buffer containing the time since the last
collision.
- Added remParticle function to LWPSysFuncs.
lwrender.h
- Incremented LWSCENEINFO_GLOBAL (Scene Info)
to "LW Scene Info 3".
- Added numThreads to LWSceneInfo.
- Added LWROPT_PARTICLEBLUR option for the LWSceneInfo renderOpts
function.
- Added patchLevel and metaballRes functions to LWObjectInfo (Object Info).
- Added LWLFL_NO_OPENGL to the flags for LWLightInfo (Light Info).
- Incremented LWCAMERAINFO_GLOBAL (Camera Info)
to "LW Camera Info 2".
- Added flags, resolution, pixelAspect, separation, regionLimits,
maskLimits and maskColor functions to LWCameraInfo.
- Added LWCAMF_STEREO, LWCAMF_LIMITED_REGION and LWCAMF_MASK
camera info flags.
- Added itemVis function and displayFlags and generalFlags
fields to the LWInterfaceInfo (Interface Info)
structure.
lwserver.h
- Added LANGID_KOREAN definition.
lwtxtr.h
lwxpanel.h
- Added XPTAG_NULL define, which replaces NULL in the Xp macros for XPanels.
Commands: Layout
Commands: Modeler
- The new meshedit command allows plug-ins to execute MeshDataEdit
class plug-ins.
Commands: Common
- The Surf_SetSurf command was using the display name rather than the filename to
identify objects. This has been corrected.
Miscellaneous
- The mesh info pntBasePos and pntOtherPos
functions obtained from the Object Info global now
provide better information for frozen meshes. The revised pntBasePos returns the
same point positions that Layout uses for object coordinate texture mapping. These are
completely undeformed positions in the case of regular polygons and subpatches, and
positions at freezing time for metaballs and partigons. pntOtherPos now returns
the actual world coordinates used by Layout. The new behavior of these functions should
remove the need to use "helper" displacement
plug-ins to gather vertex positions.
- An Alert Level popup has been added to the General Options panel. At the Intermediate
and Advanced levels, messages displayed using the message
global's info, warn and error functions may appear in the
status line rather than in separate dialog windows.
- The changeID handler callback is now called when all
lights or all cameras are cleared at once.
- The illuminate raytracing function was returning 0
if the position was partially shadowed, which can happen when the light is a linear or
area light. The return value is now 1.0 in such cases, and the partial shadowing is
accounted for in the returned color.
- The source member of the LWVolumeAccess structure is now set to the camera ID
for directly viewed volumetrics, to the light ID for
shadow rays, and to LWITEM_NULL for other types of rays.
- The Z buffer given to image filters no longer has
unfilled holes when unenhanced antialiasing is used with adaptive sampling and without
motion blur or depth of field.
- Previously, if an object replacement plug-in tried to
replace an object that had been cloned with an object of the same filename, the change was
ignored, since two objects with the same name weren't allowed to have different geometry.
This has been fixed by freeing and replacing all instances of the object in such cases,
just as manual object replacement does.
- Objects loaded by object import plug-ins no longer
cause a crash when the scene is later saved.
- Custom object plug-ins were unable to draw points
unless one of the other drawing functions had been called first. This has been fixed.
- Custom objects using the LWCSYS_ICON mode
are no longer affected by object scaling.
- When the Item Info param function was
called during a custom object plug-in's evaluate
function, and FSPE was turned on, the interactive (non-keyframed) position of the item
being queried could be forgotten. This has been fixed (but it's generally more efficient
for plug-ins to call param during their newTime functions).
- When an object is cloned, the clones are now named earlier in the copying process so
that custom object and displacement
plug-ins can look up the names from inside their create functions.
- The viewports are now updated whenever a custom object,
displacement or item
motion plug-in is added, edited, or removed.
- Keyframe shifting and scaling now work by looping through all members of the envelope
group of each affected item, including envelopes added
by plug-ins.
- Manual operation of the envelope (E) button for color settings is now properly recorded
in the command history.
- Item selections made by clicking in the viewports or the Scene Editor or by using the
current item popups are now recorded in the command history so that master plug-ins are notified when these selection changes
occur.
- Master plug-ins whose flags functions return LWMAST_LAYOUT
are no longer cleared with the scene.
- The MeshEditOp pntVMap function no longer crashes
when passed polygons created during the same mesh edit.
- The MeshEditOp polygon creation functions no longer crash
when passed null vertex pointers. They instead return an error.
|