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

# cgfxVector.h

    #ifndef _cgfxVector_h_
    #define _cgfxVector_h_
    //
    // Copyright (C) 2002 NVIDIA
    //
    // File: cgfxVector.h
    //
    // Dependency Graph Node: cgfxVector
    //
    // Description:
    //  The cgfxVector node is used to convert a vector in the scene to
    //  world coordinates.  The inputs are a vector in local coordinates,
    //  a flag indicating whether the vector is a position or a direction,
    //  and a matrix that will transoform the vector to world coordinates.
    //  This matrix is generally the worldInverseMatrix of the vector.
    //
    // Author: Jim Atkinson
    //
    //-
    // ==========================================================================
    // 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.
    // ==========================================================================
    //+
    #include "cgfxShaderCommon.h"

    #include <maya/MPxNode.h>
    #include <maya/MFnNumericAttribute.h>
    #include <maya/MTypeId.h>

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

        virtual MStatus     compute( const MPlug& plug, MDataBlock& data );

        // Create the node ...
        //
        static  void*       creator();

        // ... and initialize it.
        //
        static  MStatus     initialize();

    public:

        // The typeid is a unique 32bit indentifier that describes this node.
        // It is used to save and retrieve nodes of this type from the binary
        // file format.  If it is not unique, it will cause file IO problems.
        //
        static  MTypeId sId;

        // 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.
        //
        // Input vector attribute
        //
        static  MObject sVector;

        static  MObject sVectorX;
        static  MObject sVectorY;
        static  MObject sVectorZ;

        // Input position/direction flag.  If isDirection is set then
        // the vector represents a direction and the W coordinate is
        // 0.0.  If it is not set then W is 1.0.
        //
        static  MObject sIsDirection;

        // Input matrix attribute
        //
        static  MObject sMatrix;

        // Output world coordinate vector attribute
        //
        static  MObject sWorldVector;
        static  MObject sWorldVectorX;
        static  MObject sWorldVectorY;
        static  MObject sWorldVectorZ;
        static  MObject sWorldVectorW;
    };

    #endif /* _cgfxVector_h_ */