diff options
Diffstat (limited to 'tools/globalcode/utility/MExt_template.h')
-rw-r--r-- | tools/globalcode/utility/MExt_template.h | 146 |
1 files changed, 146 insertions, 0 deletions
diff --git a/tools/globalcode/utility/MExt_template.h b/tools/globalcode/utility/MExt_template.h new file mode 100644 index 0000000..5714e95 --- /dev/null +++ b/tools/globalcode/utility/MExt_template.h @@ -0,0 +1,146 @@ +#include "precompiled/PCH.h" + +#ifndef _MEXT_TEMPLATE_H +#define _MEXT_TEMPLATE_H +//----------------------------------------------------------------------------- +// Copyright (C) 2001 Radical Entertainment Ltd. All rights reserved. +// +// MExt_template.h +// +// Description: +// +// Modification History: +// + Created Dec 19, 2001 -- bkusy +//----------------------------------------------------------------------------- + +//This is a warning provided by the STL... It seems that toollib gets whacky when there +//is other templates made... Sigh... +#pragma warning(disable:4786) + +//---------------------------------------- +// System Includes +//---------------------------------------- +//#include <assert.h> + +/* Using precompiled headers +#include <maya/MDoubleArray.h> +#include <maya/MFnDependencyNode.h> +#include <maya/MFnDoubleArrayData.h> +#include <maya/MFnIntArrayData.h> +#include <maya/MFnStringArrayData.h> +#include <maya/MIntArray.h> +#include <maya/MObject.h> +#include <maya/MPlug.h> +#include <maya/MPoint.h> +#include <maya/MString.h> +#include <maya/MStringArray.h> +*/ + +//---------------------------------------- +// Project Includes +//---------------------------------------- + +//---------------------------------------- +// Forward References +//---------------------------------------- + +//---------------------------------------- +// Constants, Typedefs and Statics +//---------------------------------------- + +namespace MExt +{ + namespace Attr + { + + template < class T > + void Get( T* value, const MPlug& plug ) + { + assert( value ); + + MStatus status; + + status = plug.getValue( *value ); + assert( status ); + } + + template < > + void Get< MDoubleArray >( MDoubleArray*, const MPlug& ); + + template < > + void Get< MIntArray >( MIntArray*, const MPlug& ); + + template < > + void Get< MPoint >( MPoint*, const MPlug& ); + + template < > + void Get< MStringArray >( MStringArray*, const MPlug& ); + + template < class T > + void Get( T* value, const MObject& node, const MObject& attr ) + { + MPlug plug( node, attr ); + Get( value, plug ); + } + + template < class T > + void Get( T* value, const MObject& node, const MString& attr ) + { + MStatus status; + + MFnDependencyNode fnNode( node, &status ); + assert( status ); + + MPlug plug = fnNode.findPlug( attr, &status ); + assert( status ); + + Get( value, plug ); + } + + template < class T > + void Set( const T& value, MPlug& plug ) + { + MStatus status; + + status = plug.setValue( const_cast<T&>(value) ); + assert( status ); + } + + template < > + void Set< MDoubleArray >( const MDoubleArray& array, MPlug& plug ); + + template < > + void Set< MIntArray >( const MIntArray& array, MPlug& plug ); + + template < > + void Set< MPoint >( const MPoint& vertex, MPlug& plug ); + + template < > + void Set< MStringArray >( const MStringArray& array, MPlug& plug ); + + template < class T > + void Set( const T& value, MObject& node, MObject& attr ) + { + MPlug plug( node, attr ); + Set( value, plug ); + } + + template < class T > + void Set( const T& value, MObject& node, const MString& attr ) + { + MStatus status; + + MFnDependencyNode fnNode( node, &status ); + assert( status ); + + MPlug plug = fnNode.findPlug( attr, &status ); + assert( status ); + + Set( value, plug ); + } + + } // namespace Attr + +} // namespace MExt + +#endif |