//*********************************************************
// Name: isBooleanDataType
// Desc: 
//*********************************************************
bool BreakdownCommand::isBooleanDataType( const MPlug &connection )
{
    MFnNumericAttribute fnNumAttr;
    MObject attrObj;

    bool isBool = false;

    attrObj = connection.attribute( &status );
    if( attrObj.apiType() == MFn::kNumericAttribute ) {

        status = fnNumAttr.setObject( attrObj );
        if( fnNumAttr.unitType() == MFnNumericData::kBoolean )
            isBool = true;
    }

    return isBool;
}
MStatus TransformationMatrixParameterHandler<T>::setVecDefaultValues( MPlug vecPlug, Imath::Vec3<T> &defaultValue ) const
{
	if( vecPlug.numChildren() != 3 )
	{
		return MS::kFailure;
	}

	MFnNumericAttribute fnN;
	for( unsigned int i=0; i<3; i++ )
	{
		fnN.setObject( vecPlug.child(i).attribute() );
		if( !fnN.setDefault( defaultValue[i] ) )
		{
			return MS::kFailure;
		}
	}

	return MS::kSuccess;
}