274 lines
6.0 KiB
C++
274 lines
6.0 KiB
C++
#include "precompiled/PCH.h"
|
|
|
|
//-----------------------------------------------------------------------------
|
|
// Copyright (C) 2001 Radical Entertainment Ltd. All rights reserved.
|
|
//
|
|
// MExt_template.cpp
|
|
//
|
|
// Description:
|
|
//
|
|
// Modification History:
|
|
// + Created Dec 19, 2001 -- bkusy
|
|
//-----------------------------------------------------------------------------
|
|
|
|
//----------------------------------------
|
|
// System Includes
|
|
//----------------------------------------
|
|
|
|
//----------------------------------------
|
|
// Project Includes
|
|
//----------------------------------------
|
|
#include "MExt_template.h"
|
|
|
|
//----------------------------------------
|
|
// Forward References
|
|
//----------------------------------------
|
|
|
|
//----------------------------------------
|
|
// Constants, Typedefs and Statics
|
|
//----------------------------------------
|
|
|
|
//-----------------------------------------------------------------------------
|
|
// G e t < MDoubleArray >
|
|
//
|
|
// Synopsis:
|
|
//
|
|
// Parameters: NONE
|
|
//
|
|
// Returns: NOTHING
|
|
//
|
|
// Constraints: NONE
|
|
//
|
|
//-----------------------------------------------------------------------------
|
|
template < >
|
|
void MExt::Attr::Get< MDoubleArray >( MDoubleArray* array, const MPlug& plug )
|
|
{
|
|
assert( array );
|
|
|
|
MStatus status;
|
|
|
|
MObject data;
|
|
status = plug.getValue( data );
|
|
assert( status );
|
|
|
|
MFnDoubleArrayData fnArray( data, &status );
|
|
assert( status );
|
|
|
|
MDoubleArray myArray = fnArray.array( &status );
|
|
assert( status );
|
|
|
|
array->clear();
|
|
unsigned int i;
|
|
for ( i = 0; i < myArray.length(); i++ )
|
|
{
|
|
array->append( myArray[i] );
|
|
}
|
|
}
|
|
|
|
//-----------------------------------------------------------------------------
|
|
// G e t < MIntArray >
|
|
//
|
|
// Synopsis:
|
|
//
|
|
// Parameters: NONE
|
|
//
|
|
// Returns: NOTHING
|
|
//
|
|
// Constraints: NONE
|
|
//
|
|
//-----------------------------------------------------------------------------
|
|
template < >
|
|
void MExt::Attr::Get< MIntArray >( MIntArray* array, const MPlug& plug )
|
|
{
|
|
assert( array );
|
|
|
|
MStatus status;
|
|
|
|
MObject data;
|
|
status = plug.getValue( data );
|
|
assert( status );
|
|
|
|
MFnIntArrayData fnArray( data, &status );
|
|
assert( status );
|
|
|
|
MIntArray myArray = fnArray.array( &status );
|
|
assert( status );
|
|
|
|
array->clear();
|
|
unsigned int i;
|
|
for ( i = 0; i < myArray.length(); i++ )
|
|
{
|
|
array->append( myArray[i] );
|
|
}
|
|
}
|
|
//-----------------------------------------------------------------------------
|
|
// G e t < MPoint >
|
|
//
|
|
// Synopsis:
|
|
//
|
|
// Parameters: NONE
|
|
//
|
|
// Returns: NOTHING
|
|
//
|
|
// Constraints: NONE
|
|
//
|
|
//-----------------------------------------------------------------------------
|
|
template < >
|
|
void MExt::Attr::Get< MPoint >( MPoint* vertex, const MPlug& plug )
|
|
{
|
|
assert( vertex );
|
|
|
|
MDoubleArray coordinates;
|
|
Get( &coordinates, plug );
|
|
|
|
if ( coordinates.length() > 0 )
|
|
{
|
|
assert( coordinates.length() == 3 );
|
|
vertex->x = coordinates[0];
|
|
vertex->y = coordinates[1];
|
|
vertex->z = coordinates[2];
|
|
}
|
|
else
|
|
{
|
|
*vertex = MPoint::origin;
|
|
}
|
|
}
|
|
|
|
//-----------------------------------------------------------------------------
|
|
// G e t < MStringArray >
|
|
//
|
|
// Synopsis:
|
|
//
|
|
// Parameters: NONE
|
|
//
|
|
// Returns: NOTHING
|
|
//
|
|
// Constraints: NONE
|
|
//
|
|
//-----------------------------------------------------------------------------
|
|
template < >
|
|
void MExt::Attr::Get< MStringArray >( MStringArray* array, const MPlug& plug )
|
|
{
|
|
assert( array );
|
|
|
|
MStatus status;
|
|
|
|
MObject data;
|
|
status = plug.getValue( data );
|
|
assert( status );
|
|
|
|
MFnStringArrayData fnArray( data, &status );
|
|
assert( status );
|
|
|
|
MStringArray myArray = fnArray.array( &status );
|
|
assert( status );
|
|
|
|
array->clear();
|
|
unsigned int i;
|
|
for ( i = 0; i < myArray.length(); i++ )
|
|
{
|
|
array->append( myArray[i] );
|
|
}
|
|
}
|
|
|
|
//-----------------------------------------------------------------------------
|
|
// S e t < MDoubleArray >
|
|
//
|
|
// Synopsis:
|
|
//
|
|
// Parameters: NONE
|
|
//
|
|
// Returns: NOTHING
|
|
//
|
|
// Constraints: NONE
|
|
//
|
|
//-----------------------------------------------------------------------------
|
|
template < >
|
|
void MExt::Attr::Set< MDoubleArray >( const MDoubleArray& array, MPlug& plug )
|
|
{
|
|
MStatus status;
|
|
|
|
MFnDoubleArrayData fnArray;
|
|
MObject object = fnArray.create( array, &status );
|
|
assert( status );
|
|
|
|
status = plug.setValue( object );
|
|
assert( status );
|
|
}
|
|
|
|
//-----------------------------------------------------------------------------
|
|
// S e t < MIntArray >
|
|
//
|
|
// Synopsis:
|
|
//
|
|
// Parameters: NONE
|
|
//
|
|
// Returns: NOTHING
|
|
//
|
|
// Constraints: NONE
|
|
//
|
|
//-----------------------------------------------------------------------------
|
|
template < >
|
|
void MExt::Attr::Set< MIntArray >( const MIntArray& array, MPlug& plug )
|
|
{
|
|
MStatus status;
|
|
|
|
MFnIntArrayData fnArray;
|
|
MObject object = fnArray.create( array, &status );
|
|
assert( status );
|
|
|
|
status = plug.setValue( object );
|
|
assert( status );
|
|
}
|
|
|
|
//-----------------------------------------------------------------------------
|
|
// S e t < MPoint >
|
|
//
|
|
// Synopsis:
|
|
//
|
|
// Parameters: NONE
|
|
//
|
|
// Returns: NOTHING
|
|
//
|
|
// Constraints: NONE
|
|
//
|
|
//-----------------------------------------------------------------------------
|
|
template < >
|
|
void MExt::Attr::Set< MPoint >( const MPoint& vertex, MPlug& plug )
|
|
{
|
|
MStatus status;
|
|
|
|
MDoubleArray coordinates;
|
|
coordinates.append( vertex.x );
|
|
coordinates.append( vertex.y );
|
|
coordinates.append( vertex.z );
|
|
|
|
Set( coordinates, plug );
|
|
}
|
|
|
|
//-----------------------------------------------------------------------------
|
|
// S e t < MStringArray >
|
|
//
|
|
// Synopsis:
|
|
//
|
|
// Parameters: NONE
|
|
//
|
|
// Returns: NOTHING
|
|
//
|
|
// Constraints: NONE
|
|
//
|
|
//-----------------------------------------------------------------------------
|
|
template < >
|
|
void MExt::Attr::Set< MStringArray >( const MStringArray& array, MPlug& plug )
|
|
{
|
|
MStatus status;
|
|
|
|
MFnStringArrayData fnArray;
|
|
MObject object = fnArray.create( array, &status );
|
|
assert( status );
|
|
|
|
status = plug.setValue( object );
|
|
assert( status );
|
|
}
|
|
|