Incremental Improvements
 
 
 

Dark Icon Enhancements

Bitmap based icons which were automatically darkened by 3ds Max for use with the dark color scheme have had readability problems. In an effort to solve this problem, 3ds Max 2012 ships with a set of dark icons optimized for the dark color scheme in a new icon folder called <3dsMax_Root>\UI\IconsDark. 3ds Max 2012 looks into this new folder for dark icons, but falls back to <3dsMax_Root>\UI\Icons if it can't find any.

This change may impact the way your plug-in's icons are displayed when 3ds Max uses the dark color theme. More information on this matter is provided in Dark Icons of the Icons topic.

Improved Robustness of Reference System

There are some incorrect usages of the reference system that can allow plug-ins to cause instabilities in 3ds Max, and eventually leading to unexpected behavior or crashes. One such case is when plug-ins call ReferenceMaker::SetReference() directly on other plug-ins. Doing so only partially updates the reference graph which results in system instability when the reference links are deleted. The visibility ReferenceMaker::SetReference() has been changed from public to protected in the class ReferenceMaker and all of its sub-classes, to prevent plug-ins from accidentally calling this method. Plug-ins that have been calling ReferenceMaker::SetReference() on objects of types other than themselves or their parent class, will have to change their code to call ReferenceMaker::ReplaceReference() instead.

Eliminated Ambiguity Caused by ParamID

Since ParamID is defined as a short integer using a typedef, a compiler can incorrectly resolve calls to a method overloaded with parameters of type ParamID and int. If a pair of overloaded methods differ only by the type of one of their parameters, and this parameter was of type int in the first method and of type ParamID in the second method, the compiler's method resolution rules would always choose the first method with the integer parameter. This would result in a value representing a parameter id being interpreted as a parameter index which could lead to hard to track down defects.

The method pairs where the compiler would resolve to the wrong method overload are methods of class IParamBlock2:

These methods have been deprecated and replaced with methods whose names clearly indicates whether a parameter id ("ByID" ) or a parameter index ("ByIndex") is expected as a parameter:

Plug-ins calling the now-deprecated methods will have to update their code.

Plug-in DLL API Changes

The API for working with the system wide registry of plug-in DLLs and the class descriptors it exposes has been updated. The reason for this has been to make plug-in defer loading faster and more robust. Now instances of the classes DllDesc, ClassDirectory, and SubClassList can be allocated and deleted only by the system. Plug-ins are discouraged to create instances of class ClassEntry, as support will be retired in future versions of 3ds Max. Following is the list of changes to the classes concerning this issue.

Auto-Tangent Manager

A new auto-tangent algorithm has been introduced in 3ds Max 2012. The new class IAutoTangentMan allows plug-in developers to determine if a controller supports auto-tangents, and whether the legacy or new algorithm is used. The new algorithm is referred to as "unified" in the IAutoTangentMan documentation because it is used across several Autodesk products.

At this time the 3ds Max 2012 auto-tangents cannot be supported by controllers developed using the 3ds Max SDK.

Help System Enhancements

3ds Max 2012 help will support both local and online delivery. New methods have been added to the API to allow setting and getting the user guide's location. A number of functions related to 3ds Max's help system have been deprecated and the functionality of the helpsys.lib has been migrated to core.lib. The impact of these changes on plug-ins should be minimal since the help system methods do not handle plug-in specific user guides.

Removed Deprecated SDK Elements

Over the last few releases of 3ds Max many SDK, certain elements have been deprecated but were not removed. These elements are now removed from the SDK. Plug-ins compiled for a version of 3ds Max older than 2011, should compile first against the 3ds Max 2011 SDK, and after that migrate to 3ds Max 2012. This will permit SDK users to avoid compilation errors caused by the removal of deprecated SDK elements. Note that the SDK elements deprecated during the 3ds Max 2012 development cycle will not be removed from the 3ds Max SDK.

Removed Retired SDK Sample Projects

The projects under the maxsdk\samples\retired were using outdated techniques and have been removed from the SDK samples folder.

Visual Studio AppWizard Updated for 2010

The AppWizard - which was deprecated in 3ds Max 2011 - is supported again in this release of 3ds Max, and has been updated to support Visual Studio 2010.

The Visual Studio AppWizard is a plug-in to Visual Studio 2010 that facilitates the creation of skeleton plug-in projects. for more information on using AppWizard to create plug-in projects, refer to Using the Plug-in Wizard