2
Copyright (c) 2008-2009 NetAllied Systems GmbH
4
This file is part of COLLADAMaya.
6
Portions of the code are:
7
Copyright (c) 2005-2007 Feeling Software Inc.
8
Copyright (c) 2005-2007 Sony Computer Entertainment America
9
Copyright (c) 2004-2005 Alias Systems Corp.
11
Licensed under the MIT Open Source License,
12
for details please see LICENSE file or the website
13
http://www.opensource.org/licenses/mit-license.php
16
#include "COLLADAMayaStableHeaders.h"
17
#include "COLLADAMayaSetHelper.h"
19
#include <maya/MStringArray.h>
20
#include <maya/MDagPath.h>
21
#include <maya/MItDependencyNodes.h>
22
#include <maya/MFnSet.h>
23
#include <maya/MFnDagNode.h>
24
#include <maya/MSelectionList.h>
28
std::vector<MObjectHandle> SetHelper::setObjects;
29
SetHelper::SetModes SetHelper::setMode;
31
// ------------------------------------------------------
32
// Unlike Maya's default behavior, we want to consider set membership to be inheritable
33
bool SetHelper::isMemberOfSet ( const MDagPath& dagPath, MFnSet& Set )
35
if ( Set.isMember ( dagPath ) )
42
MFnDagNode dagNode ( dagPath );
43
MSelectionList setMembers;
44
Set.getMembers ( setMembers, true );
46
for ( unsigned int i = 0; i < setMembers.length(); ++i )
50
if ( setMembers.getDependNode ( i, memberObject ) )
52
if ( dagNode.isChildOf ( memberObject ) )
63
// ------------------------------------------------------
64
bool SetHelper::isExcluded ( const MDagPath& dagPath )
66
MFnDagNode dagNode ( dagPath );
68
if ( dagNode.name() == "world" )
71
bool bContainedInSet = false;
73
for ( unsigned int i = 0; i < SetHelper::setObjects.size(); ++i )
75
# if MAYA_API_VERSION < 600
76
MObject o = SetHelper::setObjects[i];
78
MObject o = SetHelper::setObjects[i].object();
80
MFnSet currentSet ( o );
82
if ( isMemberOfSet ( dagPath, currentSet ) )
84
bContainedInSet = true;
89
if ( setMode == kExcluding )
91
return bContainedInSet;
94
else if ( setMode == kIncludeOnly )
96
return !bContainedInSet;
b'\\ No newline at end of file'