What's New in MAXScript in 3ds Max 2022

This topic will give you a quick overview of the MAXScript language changes and improvements in 3ds Max 2022 and updates. For details on each feature, please follow the links to the respective documentation pages.

Note:

New additions to MAXScript in 3ds Max 2022 are marked with NEW in 3ds Max 2022:... throughout the MAXScript Reference. The word NEW links back to this page.

New in MAXScript in 3ds Max 2022

Safe Scene Loading The new getCurrentScriptSourceType() function returns whether the current script has the Safe Scene Script Execution security policies applied to it.
The new SceneScriptSecurityManager interface lets you obtain information about the state of Safe Scene Script Execution.
Box2 and Box3 New methods and operators have been added. Operator +, enlargeBy() and expandToInclude() for Box2, and Operator + for Box3
Bounding Box property These value types have a new .boundingBox property that returns a Box3 value representing the contained nodes' bounding box: node, NodeChildrenArray, pathname, SelectionSetArray, and ObjectSet.
Bounding Box methods The Node bounding box methods nodeGetBoundingBox() and nodeLocalBoundingBox() now take an optional asBox3:<bool> argument that, when true, cause the methods to return the bounding box as a Box3 value.
Spinner and Slider controls The type of the value returned by the .value property and on changed event for both the Spinner and Slider ui controls now matches the type of the control specified when it was created, either #float or #integer.
Custom Attributes array The Custom Attributes virtual array class MAXCustAttribArray now supports the isDeleted() method as well as standard comparison operators == and !=.
Non Localized Name Access Scripted Plug-in Parameters can take a new nonLocalizedName:<string> that defines the parameter name when it is accessed in a script
The maxclass value has a new read-only nonLocalizedName property that contains the non-localized name of the class.
ATSOps New keyword arguments have been added to ATSOps methods GetDependencyFileList() and SelectFiles() to control how to repath and compare files.
Localized Name Access Several methods now have a localizedName:<bool> parameter (or localizedNames:<bool> when they return an array) to control whether they return the localized or non-localized name for the target object:
getObjectName()
getSubAnimName()
getSubMtlSlotName()
getSubTexmapSlotName()
getClassName()
WM3_MC_GetName()
WM3_MC_SetName()
getSubAnimNames()
Previously Undocumented Items Box2 methods: <bool>intersects(), <box2>copy()
Box3 methods: <box3>copy(), <box3>rectify()
pathConfig struct methods: doSetProjectFolderSteps() and doSetProjectFolderStepsUsingDirectory()
<ViewportViewSettingImpl>.ProgressiveRenderingEnabled
Deprecated Items Airflow_Node and Airflow_Spline are now deprecated

Inclusive Language Changes

Several terms in the 3ds Max user interface, class, and method names in MAXScript have been changed or removed because they were not aligned with Autodesk values of diversity and inclusion. We want everyone to feel welcome when using 3ds Max as an end user or tool developer.

Therefore, the names of several MAXScript APIs that included words such as "master" or "slave" have been changed to use the terms "driver" and "driven" respectively. We tried to keep MAXScript as backward compatible as possible; however, there may be cases where scripts break.

Here is a list of all the MAXScript API names that were updated, followed by their new name:

BipSlave_Control -> BipDriven_Control 
GetMasterController -> GetPointControllerContainer 
NewDefaultMasterPointController -> NewDefaultPointControllerContainer 
Master_Controller_plugin_not_found -> Driver_Block_Control_plugin_not_found 
Master_Point_Controller -> Point_Controller_Container 
MasterPointController -> PointControllerContainer 
RetimerMasterCtrl -> RetimerDriverCtrl 
Slave_Control -> Driven_Control 
Slave_Point3 -> Driven_Point3 
SlaveFloat -> DrivenFloat 
SlaveMatrix3 -> DrivenMatrix3 
SlavePoint3 -> DrivenPoint3 
SlavePoint4 -> DrivenPoint4 
SlavePos -> DrivenPos 
SlaveRotation -> DrivenRotation 
SlaveScale -> DrivenScale 
Daylight_Slave_Controller -> Daylight_Driven_Controller 
Daylight_Slave_Intensity_Controller -> Daylight_Driven_Intensity_Controller 
Sunlight_Daylight_Slave_Controller -> Sunlight_Daylight_Driven_Controller 
Sunlight_Daylight_Slave_ControllerMatrix3Controller -> Sunlight_Daylight_Driven_ControllerMatrix3Controller 
Sunlight_Daylight_Slave_Intensity_Controller -> Sunlight_Daylight_Driven_Intensity_Controller 
Sunlight_Daylight_Slave_Intensity_ControllerFloatController -> Sunlight_Daylight_Driven_Intensity_ControllerFloatController 
Sunlight_Slave_Controller -> Sunlight_Driven_Controller 
Sunlight_Slave_Intensity_Controller -> Sunlight_Driven_Intensity_Controller 
MasterBlock -> DriverBlock 
MasterBlockController -> DriverBlockController 
MasterList -> BlockControl 
Master_Layer -> Main_Layer 
MasterLayer -> MainLayer 
MasterLayerControlManager -> MainLayerControlManager 
Master_Motion_Clip -> Driver_Motion_Clip 
MasterClip -> DriverClip 
Max_Master_Clip -> Max_Driver_Clip 
MaxMotionClipMaster -> MaxMotionClipDriver 
Motion_Clip_SlaveFloat -> Motion_Clip_DrivenFloat 
Motion_Clip_SlavePoint3 -> Motion_Clip_DrivenPoint3 
Motion_Clip_SlavePos -> Motion_Clip_DrivenPos 
Motion_Clip_SlaveRotation -> Motion_Clip_DrivenRotation 
Motion_Clip_SlaveScale -> Motion_Clip_DrivenScale 
Reaction_Master -> Reaction_Driver 
ReactionMaster -> ReactionDriver 
SprayMaster -> SprayDriver 
StereoCameraSlave -> StereoCameraDriven 
MAXScript properties 
<ClipAssigner>.masterblocks -> driverblocks 
<MassFX_RBody>.GetRBMeshOverrideMasterMat -> GetRBMeshOverrideDriverMat 
<MassFX_RBody>.SetRBMeshOverrideMasterMat -> SetRBMeshOverrideDriverMat 
<nvpx>.GetRBMeshOverrideMasterMat -> GetRBMeshOverrideDriverMat 
<nvpx>.SetRBMeshOverrideMasterMat -> SetRBMeshOverrideDriverMat 
<MaxLiquidSolver>.masterVoxelSize -> baseVoxelSize 
<Point_Cache>.loadTypeSlave -> loadTypeNetwork 
<Point_CacheSpacewarpModifier>.loadTypeSlave -> loadTypeNetwork 
<Select_the_Biped_for_use_as_a_retargeting_reference>.masterMaxClip -> driverMaxClip 
<Float_Wire>.isMaster -> isDriver 
<Float_Wire>.isSlave -> isDriven 
<Float_Wire>.slaveAnimation -> drivenAnimation 
<Point3_Wire>.isMaster -> isDriver 
<Point3_Wire>.isSlave -> isDriven 
<Point3_Wire>.slaveAnimation -> drivenAnimation 
<Point4_Wire>.isMaster -> isDriver 
<Point4_Wire>.isSlave -> isDriven 
<Point4_Wire>.slaveAnimation -> drivenAnimation 
<Position_Wire>.isMaster -> isDriver 
<Position_Wire>.isSlave -> isDriven 
<Position_Wire>.slaveAnimation -> drivenAnimation 
<Rotation_Wire>.isMaster -> isDriver 
<Rotation_Wire>.isSlave -> isDriven 
<Rotation_Wire>.slaveAnimation -> drivenAnimation 
<Scale_Wire>.isMaster -> isDriver 
<Scale_Wire>.isSlave -> isDriven 
<Scale_Wire>.slaveAnimation -> drivenAnimation 
MAXScript Enums 
<SchematicView>.testIncludeFilter: #masterPoint -> #pointControllerContainers 
<SchematicView>.setIncludeFilter: same 
<SchematicView>.clearIncludeFilter: same 
MAXScript interfaces 
Interface: IRingArrayMaster -> IRingArrayDriver 
MAXScript SubAnim Names 
#Master_Point_Controller -> #Point_Controller_Container 
#Master -> #Point_Controller_Container 
#Master_CV_Control -> #CV_Controller_Container 

Others 
gxmlio.wireparams: #(..., #isMaster, #isSlave, #slaveAnimation,...) -> #(..., #isDriver, #isDriven, #drivenAnimation,...)