#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
virtual ~cgfxVector();
virtual MStatus compute( const MPlug& plug, MDataBlock& data );
// Create the node ...
static void* creator();
// ... and initialize it.
static MStatus initialize();
// 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_ */