diff options
Diffstat (limited to 'tools/globalcode/utility/MExt.h')
-rw-r--r-- | tools/globalcode/utility/MExt.h | 226 |
1 files changed, 226 insertions, 0 deletions
diff --git a/tools/globalcode/utility/MExt.h b/tools/globalcode/utility/MExt.h new file mode 100644 index 0000000..e4b6444 --- /dev/null +++ b/tools/globalcode/utility/MExt.h @@ -0,0 +1,226 @@ +#include "precompiled/PCH.h" + +#ifndef _MEXT_H +#define _MEXT_H +//----------------------------------------------------------------------------- +// Copyright (C) 2001 Radical Entertainment Ltd. All rights reserved. +// +// MExt.h +// +// Description: Functions that extend the Maya API to perform other common +// tasks. +// +// Modification History: +// + Created Aug 21, 2001 -- bkusy +//----------------------------------------------------------------------------- + +//---------------------------------------- +// System Includes +//---------------------------------------- +/* Using precompiled headers. +#include <maya/MStringArray.h> +#include <maya/MPoint.h> +#include <maya/MObject.h> +#include <maya/MPlug.h> +*/ + +//---------------------------------------- +// Project Includes +//---------------------------------------- +#include "MExt_template.h" + +//---------------------------------------- +// Forward References +//---------------------------------------- +class MString; +class MDagPath; +class MArgList; +class MPlug; +class MObject; +class MSelectionList; +class MTypeId; +class MDoubleArray; + +//---------------------------------------- +// Macros +//---------------------------------------- +#define RETURN_STATUS_ON_FAILURE( STATUS ) if ( ! (STATUS) ) return (STATUS) +#define RETURN_FALSE_ON_FAILURE( STATUS ) if ( ! (STATUS) ) return false + +//These are used when dealing with plugs. +#define AS_DEST true, false +#define AS_SOURCE false, true +#define AS_BOTH true, true +//---------------------------------------- +// Constants, Typedefs and Statics +//---------------------------------------- + + + +namespace MExt +{ + namespace Attr + { + void GetScaled( MPoint*, const MObject& node, const MObject& attr ); + + void SetScaled( const MPoint&, MObject& node, MObject& attr ); + + void SetScaled( const MPoint&, MObject& node, const MString& attr ); + + } // namespace Attr + + namespace OptionVar + { + bool Get( char* buffer, unsigned int buffer_size, const char* symbol ); + + void Set( const char* buffer, const char* symbol ); + + } // namespace OptionVar + + + class OptionParser + { + public: + + OptionParser( const char* command, const MArgList& args ); + ~OptionParser(); + + void setOptions( const char* optionSpec ); + int nextOption(); + MString getArg(); + + private: + + int m_argc; + char** m_argv; + char* m_opt; + + }; + + + void AddChild( MObject& parentLocatorNode, MObject& childLocatorNode ); + + void Connect( MObject& node, + MObject& attr, + MObject& otherNode, + MObject& otherAttr + ); + + void Connect( MObject& node, + const char* attr, + MObject& otherNode, + const char* otherAttr + ); + + + void CreateNode( MObject* node, + MObject* transform, + const MString& type, + const MString* name = 0, + const MObject& parent = MObject::kNullObj + ); + + void CreateNode( MObject& node, + MObject& transform, + const MString& type, + const MString* name = 0, + const MObject& parent = MObject::kNullObj + ); + + + void CreateVertexAttribute( MObject* attr, + const char* name, + const char* brief_name + ); + + void DeleteNode( MObject& node, bool deleteParent ); + + void DisconnectAll( MObject& node, MObject& attr ); + void DisconnectAll( MObject& node, const char* attrName ); + + int DisplayError( const char* fmt, ... ); + + int DisplayWarning( const char* fmt, ... ); + + int DisplayInfo( const char* fmt, ... ); + + void FilterSelectionList( MSelectionList* filteredList, + const MString& typeName, + const MSelectionList& sourceList + ); + + bool FindAllSkeletonRoots( MObjectArray* objects ); + + bool FindAllTransforms( MObjectArray* transforms, const MObject& root ); + + + bool FindDagNodeByName( MDagPath* path, + const MString& node, + const MObject& root = MObject::kNullObj + ); + + bool FindDagNodeByName( MDagPath* path, + const MString& node, + const MString& root + ); + + void GetWorldPosition( MPoint*, const MObject& node ); + + MPoint GetWorldPositionBetween( MObject& node1, MObject& node2 ); + + MMatrix GetWorldMatrix( MObject& node ); + + bool IsConnected( MObject& node, const char* attr ); + bool IsConnected( MObject& node, MObject& attr ); + bool IsConnected( MPlug& plug1, MPlug& plug2 ); + + void MakeNameUnique( MString* unique, + const MString& name, + const MObject& root = MObject::kNullObj + ); + + void MakeNameUnique( MString* unique, + const MString& name, + const MString& root + ); + + bool MeshClickIntersect( short xClick, short yClick, MPoint& intersect, bool closest = true ); + + bool MeshIntersectAlongVector( MPoint from, MPoint direction, MPoint& intersect, bool closest = true ); + + bool PlugHasConnection( MObject* connectedNode, + MPlug& plug, + bool asDst = true, + bool asSrc = true, + const char* type = 0 + ); + + bool PlugHasConnection( MPlug* connectedPlug, + MPlug& plug, + bool asDst = true, + bool asSrc = true, + const char* type = 0 + ); + + + void ResolveConnections( MPlugArray* sources, + MPlugArray* targets, + MPlug& plug, + bool asDst = true, + bool asSrc = true + ); + + + void SelectNodesBelowRoot( MSelectionList* list, + const MString& typeName, + const MObject& root = MObject::kNullObj, + MSelectionList* intersectionList = 0 + ); + + void SetWorldPosition( const MPoint&, const MObject& node ); + + void ViewToWorldAtY( MPoint* world, MPoint& view, double y = 0.0 ); + +} // namespace MExt + +#endif |