2
Copyright (c) 2008-2009 NetAllied Systems GmbH
4
This file is part of COLLADAMax.
6
Portions of the code are:
7
Copyright (c) 2005-2007 Feeling Software Inc.
8
Copyright (c) 2005-2007 Sony Computer Entertainment America
10
Based on the 3dsMax COLLADASW Tools:
11
Copyright (c) 2005-2006 Autodesk Media Entertainment
13
Licensed under the MIT Open Source License,
14
for details please see LICENSE file or the website
15
http://www.opensource.org/licenses/mit-license.php
18
#include "COLLADAMaxStableHeaders.h"
19
#include "COLLADAMaxSkinInterface.h"
27
// ONLY CONSTRUCTOR: Assumes we have been called with correct
29
SkinInterface::SkinInterface(Modifier *modifier, INode *node )
31
, mModifier( modifier )
32
, mModifierInterface( modifier ? (ISkin*)mModifier->GetInterface(I_SKIN) : 0 )
33
, mSkinContext( (node && mModifierInterface) ? mModifierInterface->GetContextInterface(node) : 0)
36
assert( mModifierInterface );
37
assert( !node || mSkinContext );
40
// Release our interface on death
41
SkinInterface::~SkinInterface()
43
// Check to make sure we are released
44
// If we are not, someone has forgotten
46
assert( !mModifierInterface );
49
void SkinInterface::releaseMe()
51
mModifier->ReleaseInterface(I_SKIN, (void*)mModifierInterface);
52
mModifierInterface = 0;
56
bool SkinInterface::getSkinInitTM(Matrix3 &initTM, bool bObjOffset)
59
return mModifierInterface->GetSkinInitTM(mInode, initTM, bObjOffset) == SKIN_OK;
62
int SkinInterface::getNumBones()
64
return mModifierInterface->GetNumBones();
67
INode *SkinInterface::getBone(int i)
69
return mModifierInterface->GetBone(i);
72
bool SkinInterface::getBoneInitTM(INode *node, Matrix3 &boneInitTM)
74
return mModifierInterface->GetBoneInitTM(node, boneInitTM) == SKIN_OK;
77
int SkinInterface::getNumVertices()
79
assert( mSkinContext );
80
return mSkinContext->GetNumPoints();
83
int SkinInterface::getNumAssignedBones(int i)
85
assert( mSkinContext );
86
return mSkinContext->GetNumAssignedBones(i);
89
float SkinInterface::getBoneWeight(int vertexIdx, int boneIdx)
91
assert( mSkinContext );
92
return mSkinContext->GetBoneWeight(vertexIdx, boneIdx);
95
int SkinInterface::getAssignedBone(int vertexIdx, int boneIdx)
97
assert( mSkinContext );
98
return mSkinContext->GetAssignedBone(vertexIdx, boneIdx);
102
} // namespace COLLADAMax