September 24, 2001
This is a list of the changes in the LightWave 7.0 release that affect the SDK. The
changes include a new Layout tool class and two new globals, as well as extensive
enhancement of many of the info globals defined in
Layout supports 51 new commands of its own plus another 46 that it now propagates to the
One change and one bug fix were made to the SDK for the LightWave 7.0B patch. These have been marked here with "[ B ]".
Structures associated with the ShaderHandler class and the Preview Functions and Item Info globals were changed, but the shader version number and the global name strings weren't incremented. 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 can use the Product Info global to verify that they're running in at least LightWave 7.0 before they use the new structure members.
LWCUSTOMOBJ_VERSION(CustomObjHandler) has been incremented.
quadfunction for drawing solid quad polygons has been added to LWCustomObjAccess.
- Quads can be image-mapped using new
setTextureaccepts a square image in
setUVssets the UV coordinates at the corners of a quad.
textfunction accepts a new justification argument, 0 for left, 1 for center, 2 for right.
- The color argument to
setColornow takes a fourth array element for the color's alpha level.
- Since custom objects can draw semi-transparent primitives,
viewDirvectors have been added so that plug-ins can depth-sort their primitives.
- The header now defines
LWDISPLACEMENT_VERSION(DisplacementHandler) has been incremented because of changes to LWMeshInfo.
LWCHANNELINFO_GLOBAL(Channel Info) has been incremented to "Channel Info 2".
serverRemovefunctions have been added to LWChannelInfo. Also added were
serverInstancefunctions that return the flags and instance data of a channel handler.
- A new event code,
LWCEVNT_VALUE, has been added to signal changes to channels.
- This is a new header file containing the definition of a new plug-in class, LayoutTool.
LWEVNT_SELECTevent code has been added (MasterHandler).
polFlagsfunction has been added to LWMeshInfo.
pntVPIDGetfunctions have been added to LWMeshInfo. These are like
pntVPGet, but they don't require a preceeding call to
pntVSelect, making them more reliable when called from threaded code.
- Because of LWMeshInfo changes,
LWOBJECTFUNCS_GLOBAL(Scene Objects) has been incremented to "Scene Objects 4".
- A new global (Layout Monitor) has been created to
provide a standard monitor for Layout. The server name is
- A new global (Context Menu) has been created to
provide context menus in Panels. The server name is
LWPANELS_API_VERSION(Panels) has been incremented. Panels using the new
PANF_NOBUTTflag will not have Continue or Cancel buttons.
PANF_RESIZEpanels can be resized.
setPresetfunction has been added to LWPreviewFuncs (Preview Functions).
- Due to an error,
LWSCENEINFO_GLOBAL(Scene Info) was defined as "LW Scene Info 2" in the public version of
lwrender.hreleased with LightWave 6.5B. It should have been "LW Scene Info 3". The correct definition has been restored in the LightWave 7.0 headers.
- Four functions (
stiffness) have been added to LWItemInfo (Item Info).
LWOBJECTINFO_GLOBAL(Object Info) has been incremented to "LW Object Info 4".
- Eight new functions (
excluded) have been added to LWObjectInfo. The
excludedfunction returns TRUE if the object has been excluded from the given light.
- The LWObjectInfo
flagsfunction returns new flags
LWBONEINFO_GLOBAL(Bone Info) has been incremented to "LW Bone Info 3".
- Four new functions (
muscleFlex) have been added to LWBoneInfo.
- The LWBoneInfo
flagsfunction returns new flags
LWLIGHTINFO_GLOBAL(Light Info) has been incremented to "LW Light Info 3".
- Eight new functions (
intensity) have been added to LWLightInfo.
coneAnglesfunction now includes a time argument (since the angles can be enveloped) and returns values in radians rather than degrees.
- A time argument has been added to the LWLightInfo
- The LWLightInfo
flagsfunction returns new flags
LWINTERFACEINFO_GLOBAL(Interface Info) has been incremented to "LW Interface Info 3".
- The LWInterfaceInfo
itemColorfunction returns the color used to draw the item in the interface. The new
boxThresholdfield contains the bounding box threshold, and
replacement_colorfields have been added to LWShaderAccess (ShaderHandler). Use these to set the surface color when your shader calculates lighting and you therefore don't want LightWave to overwrite your color.
- [ B ]
refractionBlur. fields have been added to the shader access structure.
- Two new channel definitions for reflection and refraction blurring have been added (Surface Functions).
pxScale(pixel scale) field have been added to LWWireDrawAccess.
LWTEXTUREFUNCS_GLOBAL(Texture Functions) has been incremented to "Texture Functions 2", and four new functions have been added to LWTextureFuncs.
texturereturns a texture ID, given the ID of a texture layer.
contextreturn information about a texture.
- Due to an error, the public version of
lwvparm.h(Variant Parameters) released with LightWave 6.5 and 6.5B contained an incorrect definition of the LWVParmFuncs
getEnvfunction. This definition showed
getEnvtaking a single argument and returning a single envelope ID. The correct definition shows
getEnvreturning void. It writes up to three envelope IDs in an array passed as the second argument. This definition has been restored in the current header.
- The file written by
SaveCommandListnow includes Graph Editor, Image Editor and Surface Editor commands, and Layout now dispatches those commands to their respective components.
Refreshcommand now defers its work until the system is idle, for improved interactivity. A
RefreshNowcommand has been added for cases in which synchronous updates are desired. The new
RedrawNowcommands are similar except that they don't cause motions and geometry to be recomputed.
PluginOptionscommand has been replaced by
MasterPlugins, to reflect the fact that the name of the panel it invokes has changed in the interface.
- Other new commands:
RecentScenes ItemActive PolygonSize ReplaceObjectLayer ItemLock UnaffectedByFog SquashTool ItemVisibility BoneStrengthMultiply ShowTargetLines ItemColor BoneMinRange BoundingBoxThreshold RadiosityType BoneMaxRange VIPER RecentContentDirs BoneJointComp Presets AlertLevel BoneJointCompParent EnableDeformations AddButton BoneJointCompAmounts MatchGoalOrientation Generics BoneMuscleFlex KeepGoalWithinReach ClearAudio BoneMuscleFlexParent LimitH LoadAudio BoneMuscleFlexAmounts LimitP PlayAudio LightQuality LimitB RayTraceTransparency ShadowMapFuzziness HStiffness LoadObjectLayer ShadowMapFitCone PStiffness MorphMTSE ShadowMapAngle BStiffness MorphSurfaces
- The new
setcontentcommand sets the content directory.
- New (or newly available) Graph Editor commands include:
GE_OpenWindow GE_DeleteSelKeys GE_MoveKeys GE_SetWindowPos GE_ReduceKeys GE_CreateExpression GE_SetWindowSize GE_LockKeys GE_AttachExpression GE_ApplyServer GE_CopySelKeys GE_AttachExpressionID GE_RemoveServer GE_PasteKeys GE_SetGroup GE_GetLayoutSel GE_LeaveFootprints GE_SetEnv GE_SelectAllCurves GE_PickupFootprints GE_SetEnvID GE_FilterSelection GE_BacktrackFootprints GE_LoadExpressions GE_BakeCurves GE_CopyTimeslice GE_SaveExpressions GE_SnapKeysToFrames GE_PasteTimeslice GE_ClearBin GE_SelectAllKeys GE_MatchFootprintAtFrame
- The newly available Image Editor commands are:
IE_OpenWindow IE_SetClipTable IE_SetWindowPos
- The surface system supports a new
- When the user changes the item order, plug-ins are now notified of the new IDs only
after the item data have actually been rearranged. Globals that take item IDs as arguments
should now behave correctly when called from within a handler's
- In LWSN, master plug-ins now receive a
LoadScenecommand event at the end of scene loading. Since the issuing of commands is not supported in LWSN, the LWMasterAccess structure contains dummy functions in this situation.
- Attempts by plug-ins to trace rays during Wireframe or Quickshade renders were causing crashes. This has been fixed (the ray tracing functions now always return -1 in those modes).
- The Directory Info global now returns the correct result for "Content" in Modeler.
- Low and high angles are now returned by the Item Info
limitsfunction even if the corresponding limits are turned off.
- A condition that could cause mesh info queries to fail after an object is cleared from the scene has been fixed.
- All enabled environment plug-ins are now evaluated (although this can be a waste of time since each one will overwrite the results of the previous one).
NextItemcommands now skip over locked items.
- When Adaptive Sampling is on and Antialiasing is off, the
minSamplesPerPixelfrom the Scene Info global is now zero, since some pixels may be totally skipped.
- The Item Info
controllerfunction now returns correct values.
- Button names specified by generic plug-ins are now used if present.
- The envelope commands are now safe to use when there is no current item.
- Object serial numbers are now computed during rather than after cloning so that plug-ins can get the final object names as they are created.
- Since they may draw semi-transparent primitives, custom objects are now processed after all other 3D elements (including the grid).
- [ B ] During scene file loading, newline characters after plug-in server names were not being read before the plug-ins loaded their data. This has been fixed.
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.
textfunction was added to LWCustomObjAccess (Custom Objects).
LWVIEW_SCHEMAto the codes for the
viewfield of the LWCustomObjAccess structure.
LWCOF_SCHEMA_OKto the flags that can be returned from the LWCustomObjHandler
- Added preprocessor symbols for some of the file type strings used with the File Type and Directory Info globals.
LWEVNT_TIMEto the event codes that can be passed to the Master class
eventcallback. This event notice is sent whenever the frame slider is moved, which includes playing the scene, but not playing back a preview.
ABSmacros within preprocessor conditionals so that they won't conflict with versions of the macros that might be defined elsewhere.
LWOBJECTFUNCS_GLOBAL(Scene Objects) to "Scene Objects 3"
refNamefunctions 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.
- 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
LWPSB_ENBbuffer (Particle Services) now encodes three states (
LWPST_LIMBO) instead of two (on/off).
LWPSB_CAGE(collision age) buffer containing the time since the last collision.
remParticlefunction to LWPSysFuncs.
LWSCENEINFO_GLOBAL(Scene Info) to "LW Scene Info 3".
LWROPT_PARTICLEBLURoption for the LWSceneInfo
metaballResfunctions to LWObjectInfo (Object Info).
LWLFL_NO_OPENGLto the flags for LWLightInfo (Light Info).
LWCAMERAINFO_GLOBAL(Camera Info) to "LW Camera Info 2".
maskColorfunctions to LWCameraInfo.
LWCAMF_MASKcamera info flags.
generalFlagsfields to the LWInterfaceInfo (Interface Info) structure.
itemNameto LWTxtrParamDesc (Texture Functions)
XPTAG_NULLdefine, which replaces
NULLin the Xp macros for XPanels.
- The arguments to the new
AddScaleare relative rather than absolute. These are useful for multiple selections and should also improve the reusability of scripts generated by macro recorders.
EditServercommand has been added which opens a plug-in's interface. The syntax is the same as the
RemoveServercommand, with class name and index arguments. If the index isn't specified, the last plug-in in the list is used, making it easy for a script to add a plug-in and immediately open its interface without having to know its index.
AutoConfirmcommand now recognizes an argument value of -1, which will automatically respond negatively to all Yes/No or OK/Cancel dialogs.
RemoveEnvelopecommands now operate on all three parts of a color envelope as a unit (".R", ".G", and ".B" suffixes are ignored).
- Other new commands:
ShadowExclusion GradientBackdrop ParentInPlace NoiseReduction ZenithColor FractionalFrames RadiosityIntensity SkyColor PolygonEdgeFlags CausticIntensity GroundColor BoneFalloffType VolumetricRadiosity NadirColor ShadowMapSize DynamicUpdate
- The new
mesheditcommand allows plug-ins to execute MeshDataEdit class plug-ins.
Surf_SetSurfcommand was using the display name rather than the filename to identify objects. This has been corrected.
- The mesh info
pntOtherPosfunctions obtained from the Object Info global now provide better information for frozen meshes. The revised
pntBasePosreturns 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.
pntOtherPosnow 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
errorfunctions may appear in the status line rather than in separate dialog windows.
changeIDhandler callback is now called when all lights or all cameras are cleared at once.
illuminateraytracing 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.
sourcemember 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_NULLfor 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_ICONmode are no longer affected by object scaling.
- When the Item Info
paramfunction was called during a custom object plug-in's
evaluatefunction, 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
paramduring 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
- 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
LWMAST_LAYOUTare no longer cleared with the scene.
- The MeshEditOp
pntVMapfunction 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.
November 4, 2000
This is a list of the changes in the LightWave 6.5 patch that affect the SDK. In most cases, the changes won't require you to rewrite or recompile your existing code. The most significant exception is for variant parameters, which have been updated to support parameters modulated by textures.
- Definitions of variant parameters have been moved to a new header, lwvparm.h.
- New buffers (
LWBUF_REFL_BLUE) have been added to the list of buffers available to image filters and pixel filters. These contain the RGB levels for reflections calculated by raytracing and environment mapping.
LWIMAGELIST_GLOBAL(Image List) has been incremented to "LW Image List 3".
- Added LWImageList functions:
- Added File I/O type
LWIO_BINARY_IFF. This type supports 4-byte chunk sizes for block reading and writing of IFF files.
LWMESHEDIT_VERSION(MeshDataEdit) has been incremented to 4.
- Added MeshEditOp functions
pntVPMap. These are for per-polygon vertex mapping.
- The second argument to
initUVis now float * rather than float so that
initUVcan be used to initialize per-polygon UVs.
- Added vertex map types for color vmaps:
- Added LWMeshInfo function
pntVPGetfor per-polygon vertex mapping.
LWOBJECTIMPORT_VERSION(ObjectLoader) has been incremented to 3.
- Added LWObjectImport function
vmapPDVfor per-polygon vertex mapping.
- The second argument to
pivotand the third argument to
vmapValare now const.
illuminatespecial item types
LWITEM_CAUSTICSallow callers of
illuminateto get information about global illumination at a spot.
LWOBJECTINFO_GLOBAL(Object Info) has been incremented to "LW Object Info 3".
- The texture IDs of the displacement and clip maps of each object can now be obtained
using the new
clipMapObject Info functions.
LWINTERFACEINFO_GLOBAL(Interface Info) has been incremented to "LW Interface Info 2"
- New Interface Info function
schemaPosreturns the positions of items in schematic viewports. (Use the new
SchematicPositioncommand to set them.)
- New Interface Info field
dynaUpdatecontains Layout's Dynamic Update setting, which can be
- Added a Time Info global that returns the frame and time for the image currently being rendered.
- ServerUserName has been replaced by ServerTagInfo, which among other things allows plug-ins to specify how they should be added to LightWave's menu system.
- New LWShelfFuncs function
LWSURFACEFUNCS_GLOBAL(Surface Functions) incremented to "Surface Functions 2".
- Added surface channel
SURF_VCOLfor color vertex maps.
- Added Surface Functions routines
LWTEXTURE_VERSION(ProceduralTextureHandler) has been incremented to 5.
- Texture class plug-ins can now return RGBA levels, in support of which added
txRGBA, LWTextureHandler flag
LWTEXF_SELF_COLORand LWTextureAccess flag
- New LWTxtrParamDesc flag
LWGF_AUTOSIZEfor gradient textures that can automatically adjust their min and max.
LWTXTREDFUNCS_GLOBAL(Texture Editor) has been incremented to "Texture Editor 2".
- New callback type
LW_GradAutoSizeFuncfor gradient autosizing.
- New Texture Editor functions for supporting multiselection (
selectNext) and automatic ranges for gradient textures (
- New header (variant parameters were formerly defined in lwenvel.h).
LWVPDTtexture data types.
- Added arguments (texture context, event callback, plug-in name and userdata) to the
- Added a micropolygon argument to
getValfor texture evaluation.
- New functions
setEnvStatefunctions, which have been removed. The new functions support textures in addition to envelopes.
SaveObjectCopysave a copy of the scene or the object in a file with a new name without affecting the current name in Layout.
NextSiblingallow easy navigation among a set of items that share the same parent.
RemoveEnvelopeallow plug-ins and scripts to "press the E button" for a Layout parameter. Each command takes a channel name as its argument (the same names that appear when channels are expanded in the Scene Editor).
- By passing
AutoConfirman argument greater than zero, plug-ins and scripts can use this command to automatically respond affirmatively to all confirmation requesters before commands are issued to clear items, etc. This feature should be used with care, and it should be turned off by passing it a zero before control is returned to the user.
EditPluginsopens the new dialog for displaying, adding, and deleting servers.
SaveTransformednow accept a filename argument.
CommandInputnow accepts a command argument.
MaskPositionallows plug-ins and scripts to set exact pixel values for the left, top, width, and height of the camera mask. One potential use is to create scene files for portions of a frame which can be rendered separately and then perfectly recombined by summing the resulting images (assuming the mask color is black).
SchematicPositionsets the X and Y of the current item's schematic node. This and the
schemaPosfunction added to the Interface Info global allow plug-ins to arrange items in Schematic viewports.
Antialiasingtakes an argument from 0 to 4, as in scene files.
- Other new commands:
TopView CacheRadiosity RayTraceShadows BottomView CacheCaustics RayTraceReflection BackView EnableVolumetricLights RayTraceRefraction FrontView RadiosityTolerance MorphTarget RightView EnhancedAA IncludeLight LeftView FogType ExcludeLight SchematicView FogMinDistance PolygonEdgeColor CenterItem FogMaxDistance CacheShadowMap FitAll FogMinAmount MaskColor FitSelected FogMaxAmount LightIntensityTool ShowSafeAreas FogColor EnableVIPER ShowFieldChart AddPartigon
revertcommand reloads an existing object file.
- When items are moved, rotated, or scaled, using either the mouse or the numeric fields, the appropriate position, rotation, or scale commands are now added to the command history, which in turn generates events for master plug-ins.
newTimecallbacks of shaders, volumetrics, and pixel filters are now called only after all geometry has been finalized. This fixes a problem that occurs when plug-ins of one of those classes depend on the results of displacement plug-ins.
- There can now be any number of custom object plug-ins per object, and they are added using a server pane rather than a popup.
- RGB and alpha image savers are now recorded in scene files by name rather than by index, preventing problems caused by different machines having different saver lists. Image saver indices in existing scene files will continue to work as before.
- When the
newTimefunctions of shaders, environment plug-ins, volumetric plug-ins and lights, pixel filters, custom object and displacement plug-ins are called, inverse kinematics have already been computed. Therefore, the Item Info
paramfunction now simply returns existing vectors in such cases (assuming the time argument matches the current time), allowing those plug-ins to properly account for IK.
- When a subpatch object is being deformed and its Subdivision Order is later than the
deformation, the interior patch points are no longer deformed. In particular, the
evaluatefunctions of displacement plug-ins will no longer be called for the patch points.
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.
serverfunction to the Channel Info global.
LWBUF_MOTION_Yfor 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.
- Generic plug-ins are now first activated with a
version number of 4. If that doesn't work, the
saveScenefunction is replaced with one that saves old format scenes, and version numbers 3, 2, and 1 are tried.
- 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).
sceneSaveto Image List global, now "Image List 2".
- Changed LWImageID to LWPixmapID in Image Utility functions.
LWMAST_LAYOUTtype for masters that survive scene clearing.
vmapfunctions added to the state query global, incremented the service name.
PAN_SETKEYS; touched up
closeto accept void arg.
- New API.
- Removed obsolete functions
- Only items matching the current edit mode are now eligible to have their
LWITEMF_SELECTEDbit set by the Interface Info
LWIP_PIVOT_ROTto let plug-ins get pivot rotation.
- If the Item Info
paramfunction 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
serverfunction 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.
fogto Object Info.
- Corrected "LW Comp Info" to "LW Compositing Info".
renderCamerato LWSceneInfo structure.
squeezeto 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.
controllerto 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
paramfunction 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.
- New API.
- Removed closed notification function typedef.
- Removed closed notification from shelf subscription.
byNamefunction 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.
- Input parameter type defines added.
polygonIDadded to LWMicropol structure.
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 tags for getting and setting opacity, reference object, repeat options, pixel blending, AA, AA strength.
getParamfunctions removed (put into lwtxtr.h).
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.
currentLayer, which gets the currently selected layer in the texture editor. If client is NULL, uses surface's texture editor.
- Removed adaptive flag.
flagsfunction of each volumetric plug-in is now called to determine whether to include it in reflection, refraction, or shadow computations.
LWVEF_RAYTRACEbit in the LWVolumeAccess structure is now set when evaluating volumetric plug-ins for a ray.
- Added focus event code.
- Added refresh codes.
- The usage string for the
AddPluginscommand now shows that it accepts a filename argument.
RemoveFromSelectioncommands 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
ResolutionMultiplier, which work just like the identically named scene file lines.
RemoveServercommand 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
serverfunction, these indices count from one. Item-specific plug-ins like motion and displacement handlers are removed from the current item.
SaveCommandListcommand in Layout has been duplicated in Modeler.
- A new batch command
maketesball2has been added which takes the new segments parameter for tesselated spheres. The old
maketesballcommand 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
maketext2batch 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
bevelbatch 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.
Surf_SetSurfcommand 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_RemoveShadercommand now works this way: Removes all shaders that use the specified name, and if name is NULL, removes all shaders.
- modlib: Added object name argument to
- rapts: Changed
- 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
ServerInterfacefor 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
openfunctions 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.