cgfxVector.h
 
 
 
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_ */