The following is a list of incremental improvements to the 3ds Max SDK:
Windows Message Filtering - A new class MaxSDK::WindowsMessageFilter has been added that allows safe and convenient filtering of messages for progress dialogs. For more information see Windows Message Filtering.
Thread tools - A new class that allow control of the amount of threading in various parts of 3ds Max. See Thread Tools for more information
Bitmap pager - The new bitmap pager feature reduces the memory footprint of bitmap data by swapping that data to and from disk. The IBitmapPager interface controls the pager and memory usage for bitmaps.
Variable guard - A new helper class allows exception safe setting and resetting of variables. See Exception Safety for more information.
Biped enhancements - The new interface IBipMaster12 extends IBipMaster11 with support for knuckles and choosing the number of links in thumbs and for retargeting biped layer animation. The retargeting can be done either to the base layer or a reference biped. See maxsdk\include\CS\Biped12Api.h for more information.
Policy based AutoPtr - The AutoPtr<> class template is now policy based. This means that an optional policy parameter can be passed as a template argument that allows the method of destruction of the resource to be dictated. See Smart Pointers (AutoPtr) for more information.
File extension defaults - The FilterList class now records the user's choice of file extension. Plug-ins can use that as the default choice the next time they need to present the user with a File Open or File Save dialog.
Querying language - Two new methods allow for retrieving the language used by 3ds Max. The language can be retrieved either as a combination of primary and secondary language ids (such as LANG_CHINESE and SUBLANG_CHINESE_SIMPLIFIED) or as a three letter acronym (TLA). These methods allow plugins to switch their user interfaces at run-time based on the language used by 3ds Max. MaxSDK::Util::GetLanguageID() and MaxSDK::Util::GetLanguageTLA().
Drag-and-Drop improvements - New DADMgr methods allow for querying the destination object on which an item is dropped and the source drag-and-drop manager. These new methods allow for deeper customization of the drag-and-drop process DADMgr::GetDestinationInstance() and DADMgr::Drop().
Viewport button - The new IViewportButton class represents buttons displayed in the viewport. They allow the user to perform actions associated with the buttons via mouse input. For more information see Viewport Button.
Hardware mesh - Plug-ins can now build a mesh that is meant only for display by the graphics window system (which may or may not use hardware acceleration). The hardware mesh can be displayed without having to use the Mesh or MNMesh classes. This means that they are considerably cheaper on memory usage since the objects don't need to be instantiated in order to display the mesh. For more information see Hardware Mesh Support.
Assert Improvement - Failed assertions now provide additional information in the assert dialog (i.e. function name and expression). This happens automatically in all use of the DbgAssert macro. CAssertCB::Assert() has been replaced with CAssertCB::AssertEx().
Retrieving Product Type - The new API UtilityInterface::GetProductID() provides a robust method to programmatically identify whether the currently executing 3ds Max product flavor is 3ds Max Design or 3ds Max. Note that the method UtilityInterface::GetProductName() is not a robust way for plug-ins to distinguish between the different 3ds Max product flavors, since the names are subject to change, and such a change could break existing plug-in code.
Virtual Destructors - Destructors have been made virtual in a number of base classes, making deletion of classes possible using a base class pointer.