- Main Page
- Related Pages
- Modules
- Classes
- Examples

# polyModifierNode.h

    //-
    // ==========================================================================
    // Copyright 1995,2006,2008 Autodesk, Inc. All rights reserved.
    //
    // Use of this software is subject to the terms of the Autodesk
    // license agreement provided at the time of installation or download,
    // or which otherwise accompanies this software in either electronic
    // or hard copy form.
    // ==========================================================================
    //+

    #ifndef _polyModifierNode
    #define _polyModifierNode
    //
    // File: polyModifierNode.h
    //
    // Dependency Graph Node: polyModifierNode
    //
    // Author: Lonnie Li
    //
    // Overview:
    //
    //      The polyModifierNode class is a intermediate class used by polyModifierCmd to
    //      modify a polygonal object in Maya. The purpose of the polyModifierNode is to
    //      generalize a node that can receive an input mesh object, modify the mesh and
    //      return the modified mesh.
    //
    //      polyModifierNode is an abstraction which does not need to know about the DG
    //      and simply needs to know about the process outlined above. polyModifierCmd
    //      manages when and how this node will be used.
    //
    //      Each polyModifierNode is recommended to contain an instance of a polyModifierFty
    //      which will do the actual work, leaving only the node setup and attribute
    //      associations to the node. The recommended structure of a polyModifierNode is
    //      as follows:
    //
    //              _____________
    //             /        ___  \
    //           /         /   \   \
    //        O |   Node  | Fty |   | O
    //        |  \         \___/   /  |
    //        |    \_____________/    |
    //      inMesh                 outMesh
    //
    //
    //      The purpose of the node is to simply define the attributes (inputs and outputs) of
    //      the node and associate which attribute affects each other. This is basic node setup
    //      for a DG node. Using the above structure, the node's inherited "compute()" method
    //      (from MPxNode) should retrieve the inputs and pass the appropriate data down to the
    //      polyModifierFty for processing.
    //
    //
    // How to use:
    //
    //      (1) Create a class derived from polyModifierNode
    //      (2) Define and associate inMesh and outMesh attributes (inMesh --> affects --> outMesh)
    //      (3) Add any additional attributes specific to the derived node and setup associations
    //      (4) Define an instance of your specific polyModifierFty to perform the operation on the node
    //      (5) Override the MPxNode::compute() method
    //      (6) Inside compute():
    //
    //          (a) Retrieve input attributes
    //          (b) Use inputs to setup your factory to operate on the given mesh
    //          (c) Call the factory's inherited doIt() method
    //
    //

    // Proxies
    //
    #include <maya/MPxNode.h>

    class polyModifierNode : public MPxNode
    {
    public:
                            polyModifierNode();
        virtual             ~polyModifierNode();

    public:

        // There needs to be a MObject handle declared for each attribute that
        // the node will have.  These handles are needed for getting and setting
        // the values later.
        //
        static  MObject     inMesh;
        static  MObject     outMesh;
    };

    #endif