Incremental Improvements
Layer property enhancements
Layer properties can now be propagated to child layers by setting the "propagate" parameter for those ILayer
methods that set properties to true. By default properties are not propagated. For more information see class ILayer
and its methods in the C++ API Reference.
RenderElement enhancements
The BOOL MaxRenderElement::IsVisibleToScanlineRenderer()
method is added so render elements can inform 3ds Max whether or not they are compatible with the scanline renderer. A render element that overwrites this method to return FALSE is not shown in the selection dialog for the scanline renderer. By default this method returns true to respect legacy behavior.
APIs promoting the use of dynamic length string arrays (MSTR)
The SDK now provides wrappers for several Windows APIs for getting text out of windows and various controls that work with dynamic length strings (MSTR). They ensure that the string buffer passed to the Windows API has sufficient space to hold the window's text, thus improving robustness of the code that uses these APIs. Using dynamic length string arrays (MSTR) over fixed sized arrays of characters (MCHAR var[MAX_PATH]
) has the advantage of reducing the chances for buffer overruns.
One example of such a function is:
UtilExport TSTR
GetListBoxItemText(HWND hDlg, int nIDDlgItem, int
nListboxItem);
For a full list of the available functions, see maxsdk\include\winutil.h and winutil.h in the C++ API Reference.
Ability to filter animatables
Plug-ins can now filter animatable instances during a hit test with the newly added PickAnimatableCallback
class. Previously only nodes could be filtered with the PickNodeCallback
class.
Access to the main thread ID
The DWORD Interface15::GetMainThreadID()
method provides access to 3ds Max's main thread id.
Xref Scene Enumeration
You can now enumerate the scene entities in xref nodes using IScene::EnumTree()
by passing true as the value for the new bIncludeXref
parameter.
Notifications on action item execution
NOTIFY_ACTION_ITEM_PRE_EXEC
and NOTIFY_ACTION_ITEM_POST_EXEC
have been renamed to NOTIFY_ACTION_ITEM_HOTKEY_PRE_EXEC
and NOTIFY_ACTION_ITEM_HOTKEY_POST_EXEC
to better reflect their semantics. These notifications are sent only when action items are executed via hotkeys.
NOTIFY_ACTION_ITEM_EXECUTION_STARTED
and NOTIFY_ACTION_ITEM_EXECUTION_ENDED
are two new notifications sent on action items execution, regardless of the way the action item execution was triggered (such as hotkey, menu, toolbar, ribbon, maxscript, SDK, or python).