API Guide > What's New / What's Changed? >

# Autodesk Maya 2013

## What's New?

### Device Data Streaming

The MPxThreadedDeviceNode and MPxClientDeviceNode proxy classes have been added to let you stream data from external sources into the Dependency Graph via custom plug-in nodes. The following new Maya2013/devkit/plug-ins/ examples demonstrate how to use these classes:

- gameInputDevice (Windows)
- udpDevice (Linux)
- randomizerDevice (All platforms)

### UI Drag and Drop

New classes have been added to provide callback hooks into Maya's drag-and-drop mechanism:

- MExternalDropCallback - This class will be used to register callbacks to gain access to Maya's drag-and-drop information when dropping external objects into Maya. You can replace or augment this drop behavior for external drag-and-drop operations.
- MExternalDropData - This class represents the data carried within a drag-and-drop operation when dragging from an external application. This class is used by MExternalDropCallback.

### Viewport 2.0

A group of new classes has been added under the MHWRender namespace to work with index buffers and vertex buffers in Viewport 2.0

- MComponentDataIndexing - Stores index mapping when vertices are shared.
- MComponentDataIndexingList - A list containing MComponentDataIndexing objects.
- MGeometryUtilities - Utility class for rendering geometry in Viewport 2.0. The wireframeColor() function gets the final wireframe color.
- MGeometryExtractor - Base class for extracting renderable geometry. Create an instance of this class to populate buffers with vertex and indexing data.
- MIndexBufferDescriptor - Represents a description of an indexing scheme, indexing type, primitive type, primitive stride, and component information.
- MIndexBufferDescriptorList - A list containing MIndexBufferDescriptor objects.
- MLightParameterInformation - Provides per-light information, accessible via MDrawContext.
- MPxVertexBufferGenerator - Base class for user-defined vertex buffer generators.

### Attribute Patterns

New attribute pattern API classes have been added:

- MAttributePattern - Provides a pattern of attributes to be applied to nodes as dynamic attributes or to node classes as extension attributes.
- MAttributePatternArray - Provides methods for manipulating arrays of attribute patterns.
- MPxAttributeFactory - Base class for user-defined attribute pattern factories.

### Module support for plug-ins

You can now easily create a distributable deployment of your plug-in. The site administrator can setup a plug-in as a folder on a network, along with a module description file. Each user's machine should point to the module description file through the MAYA_MODULE_PATH environment variable. This way, making changes to the plug-in is simple even across multiple Maya versions and platforms.

Multiple versions of a plug-in are now supported, where the version used is determined by a combination of the current operating system, the version of Maya, and the language setting (locale). The details of the new module file syntax are outlined in the following section.

For more information, see:

- Maya module paths, folders and versions
- Recommended workflow for plug-in modules

NoteThe "devkit/plug-ins" folder has been reorganized so that the plug-in associated files are encapsulated under one folder and the plug-in project will be parented under a single parent solution file called "Plug-ins.sln"

## What's Changed?

### imagePlane node changes

The imagePlane node, which was previously a dependency node, is now a shape node (in other words, a DAG node). This may require changes to your scripts and plug-ins.

If you have been using MFnDependencyNode to create imagePlane nodes, you must change your code to use MFnDagNode instead. Similarly, if you were using MDGModifier to create or delete imagePlane nodes, then you must use MDagModifier instead.

Scripts and plug-ins which delete imagePlane nodes may now have to do additional work to clean up the parent transforms.

In addition, to avoid conflicts with some of the standard DAG node attributes, the following imagePlane attributes have been renamed:

previous name | new name
center (c) | imageCenter (ic)
centerX (cx) | imageCenterX (icx)
centerY (cy) | imageCenterY (icy)
centerZ (cz) | imageCenterZ (icz)

Scripts and plug-ins that refer to the child attributes by their previous names no longer work.

Scripts and plug-ins that refer to the parent attribute by its previous name (center) appear to work but now return the center of the node's bounding box, and not the center of the image plane, which may be different.