зеркало из https://github.com/microsoft/cocos2d-x.git
rename Bone to Bone3D
This commit is contained in:
Родитель
7a4dfda868
Коммит
fd8541e32d
|
@ -38,7 +38,7 @@
|
||||||
NS_CC_BEGIN
|
NS_CC_BEGIN
|
||||||
|
|
||||||
class Animation3D;
|
class Animation3D;
|
||||||
class Bone;
|
class Bone3D;
|
||||||
/**
|
/**
|
||||||
* Animate3D, Animates a Sprite3D given with an Animation3D
|
* Animate3D, Animates a Sprite3D given with an Animation3D
|
||||||
*/
|
*/
|
||||||
|
@ -92,7 +92,7 @@ protected:
|
||||||
float _start; //start time 0 - 1, used to generate sub Animate3D
|
float _start; //start time 0 - 1, used to generate sub Animate3D
|
||||||
float _last; //last time 0 - 1, used to generate sub Animate3D
|
float _last; //last time 0 - 1, used to generate sub Animate3D
|
||||||
bool _playReverse; // is playing reverse
|
bool _playReverse; // is playing reverse
|
||||||
std::map<Bone*, Animation3D::Curve*> _boneCurves; //weak ref
|
std::map<Bone3D*, Animation3D::Curve*> _boneCurves; //weak ref
|
||||||
};
|
};
|
||||||
|
|
||||||
NS_CC_END
|
NS_CC_END
|
||||||
|
|
|
@ -36,22 +36,22 @@ NS_CC_BEGIN
|
||||||
*
|
*
|
||||||
* @param m C3DMatrix representing the inverse bind pose for this Bone.
|
* @param m C3DMatrix representing the inverse bind pose for this Bone.
|
||||||
*/
|
*/
|
||||||
void Bone::setInverseBindPose(const Mat4& m)
|
void Bone3D::setInverseBindPose(const Mat4& m)
|
||||||
{
|
{
|
||||||
_invBindPose = m;
|
_invBindPose = m;
|
||||||
}
|
}
|
||||||
|
|
||||||
const Mat4& Bone::getInverseBindPose()
|
const Mat4& Bone3D::getInverseBindPose()
|
||||||
{
|
{
|
||||||
return _invBindPose;
|
return _invBindPose;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Bone::setOriPose(const Mat4& m)
|
void Bone3D::setOriPose(const Mat4& m)
|
||||||
{
|
{
|
||||||
_oriPose = m;
|
_oriPose = m;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Bone::resetPose()
|
void Bone3D::resetPose()
|
||||||
{
|
{
|
||||||
_local =_oriPose;
|
_local =_oriPose;
|
||||||
|
|
||||||
|
@ -60,7 +60,7 @@ void Bone::resetPose()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void Bone::setWorldMatDirty(bool dirty)
|
void Bone3D::setWorldMatDirty(bool dirty)
|
||||||
{
|
{
|
||||||
_worldDirty = dirty;
|
_worldDirty = dirty;
|
||||||
for (auto it : _children) {
|
for (auto it : _children) {
|
||||||
|
@ -69,7 +69,7 @@ void Bone::setWorldMatDirty(bool dirty)
|
||||||
}
|
}
|
||||||
|
|
||||||
//update own world matrix and children's
|
//update own world matrix and children's
|
||||||
void Bone::updateWorldMat()
|
void Bone3D::updateWorldMat()
|
||||||
{
|
{
|
||||||
getWorldMat();
|
getWorldMat();
|
||||||
for (auto itor : _children) {
|
for (auto itor : _children) {
|
||||||
|
@ -77,7 +77,7 @@ void Bone::updateWorldMat()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
const Mat4& Bone::getWorldMat()
|
const Mat4& Bone3D::getWorldMat()
|
||||||
{
|
{
|
||||||
if (_worldDirty)
|
if (_worldDirty)
|
||||||
{
|
{
|
||||||
|
@ -95,7 +95,7 @@ const Mat4& Bone::getWorldMat()
|
||||||
return _world;
|
return _world;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Bone::setAnimationValue(float* trans, float* rot, float* scale, void* tag, float weight)
|
void Bone3D::setAnimationValue(float* trans, float* rot, float* scale, void* tag, float weight)
|
||||||
{
|
{
|
||||||
for (auto& it : _blendStates) {
|
for (auto& it : _blendStates) {
|
||||||
if (it.tag == tag)
|
if (it.tag == tag)
|
||||||
|
@ -124,7 +124,7 @@ void Bone::setAnimationValue(float* trans, float* rot, float* scale, void* tag,
|
||||||
_blendStates.push_back(state);
|
_blendStates.push_back(state);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Bone::clearBoneBlendState()
|
void Bone3D::clearBoneBlendState()
|
||||||
{
|
{
|
||||||
_blendStates.clear();
|
_blendStates.clear();
|
||||||
for (auto it : _children) {
|
for (auto it : _children) {
|
||||||
|
@ -135,14 +135,14 @@ void Bone::clearBoneBlendState()
|
||||||
/**
|
/**
|
||||||
* Creates C3DBone.
|
* Creates C3DBone.
|
||||||
*/
|
*/
|
||||||
Bone* Bone::create(const std::string& id)
|
Bone3D* Bone3D::create(const std::string& id)
|
||||||
{
|
{
|
||||||
auto bone = new Bone(id);
|
auto bone = new Bone3D(id);
|
||||||
bone->autorelease();
|
bone->autorelease();
|
||||||
return bone;
|
return bone;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Bone::updateJointMatrix(Vec4* matrixPalette)
|
void Bone3D::updateJointMatrix(Vec4* matrixPalette)
|
||||||
{
|
{
|
||||||
{
|
{
|
||||||
static Mat4 t;
|
static Mat4 t;
|
||||||
|
@ -154,37 +154,37 @@ void Bone::updateJointMatrix(Vec4* matrixPalette)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Bone* Bone::getParentBone()
|
Bone3D* Bone3D::getParentBone()
|
||||||
{
|
{
|
||||||
return _parent;
|
return _parent;
|
||||||
}
|
}
|
||||||
ssize_t Bone::getChildBoneCount() const
|
ssize_t Bone3D::getChildBoneCount() const
|
||||||
{
|
{
|
||||||
return _children.size();
|
return _children.size();
|
||||||
}
|
}
|
||||||
Bone* Bone::getChildBoneByIndex(int index)
|
Bone3D* Bone3D::getChildBoneByIndex(int index)
|
||||||
{
|
{
|
||||||
return _children.at(index);
|
return _children.at(index);
|
||||||
}
|
}
|
||||||
void Bone::addChildBone(Bone* bone)
|
void Bone3D::addChildBone(Bone3D* bone)
|
||||||
{
|
{
|
||||||
if (_children.find(bone) == _children.end())
|
if (_children.find(bone) == _children.end())
|
||||||
_children.pushBack(bone);
|
_children.pushBack(bone);
|
||||||
}
|
}
|
||||||
void Bone::removeChildBoneByIndex(int index)
|
void Bone3D::removeChildBoneByIndex(int index)
|
||||||
{
|
{
|
||||||
_children.erase(index);
|
_children.erase(index);
|
||||||
}
|
}
|
||||||
void Bone::removeChildBone(Bone* bone)
|
void Bone3D::removeChildBone(Bone3D* bone)
|
||||||
{
|
{
|
||||||
_children.eraseObject(bone);
|
_children.eraseObject(bone);
|
||||||
}
|
}
|
||||||
void Bone::removeAllChildBone()
|
void Bone3D::removeAllChildBone()
|
||||||
{
|
{
|
||||||
_children.clear();
|
_children.clear();
|
||||||
}
|
}
|
||||||
|
|
||||||
Bone::Bone(const std::string& id)
|
Bone3D::Bone3D(const std::string& id)
|
||||||
: _name(id)
|
: _name(id)
|
||||||
, _parent(nullptr)
|
, _parent(nullptr)
|
||||||
, _worldDirty(true)
|
, _worldDirty(true)
|
||||||
|
@ -192,12 +192,12 @@ Bone::Bone(const std::string& id)
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
Bone::~Bone()
|
Bone3D::~Bone3D()
|
||||||
{
|
{
|
||||||
removeAllChildBone();
|
removeAllChildBone();
|
||||||
}
|
}
|
||||||
|
|
||||||
void Bone::updateLocalMat()
|
void Bone3D::updateLocalMat()
|
||||||
{
|
{
|
||||||
if (_blendStates.size())
|
if (_blendStates.size())
|
||||||
{
|
{
|
||||||
|
@ -299,13 +299,13 @@ bool MeshSkin::initFromSkinData(const SkinData& skindata)
|
||||||
{
|
{
|
||||||
ssize_t i = 0;
|
ssize_t i = 0;
|
||||||
for (; i < skindata.skinBoneNames.size(); i++) {
|
for (; i < skindata.skinBoneNames.size(); i++) {
|
||||||
auto bone = Bone::create(skindata.skinBoneNames[i]);
|
auto bone = Bone3D::create(skindata.skinBoneNames[i]);
|
||||||
bone->_invBindPose = skindata.inverseBindPoseMatrices[i];
|
bone->_invBindPose = skindata.inverseBindPoseMatrices[i];
|
||||||
bone->setOriPose(skindata.skinBoneOriginMatrices[i]);
|
bone->setOriPose(skindata.skinBoneOriginMatrices[i]);
|
||||||
addSkinBone(bone);
|
addSkinBone(bone);
|
||||||
}
|
}
|
||||||
for (i = 0; i < skindata.nodeBoneNames.size(); i++) {
|
for (i = 0; i < skindata.nodeBoneNames.size(); i++) {
|
||||||
auto bone = Bone::create(skindata.nodeBoneNames[i]);
|
auto bone = Bone3D::create(skindata.nodeBoneNames[i]);
|
||||||
bone->setOriPose(skindata.nodeBoneOriginMatrices[i]);
|
bone->setOriPose(skindata.nodeBoneOriginMatrices[i]);
|
||||||
addNodeBone(bone);
|
addNodeBone(bone);
|
||||||
}
|
}
|
||||||
|
@ -330,7 +330,7 @@ ssize_t MeshSkin::getBoneCount() const
|
||||||
}
|
}
|
||||||
|
|
||||||
//get bone
|
//get bone
|
||||||
Bone* MeshSkin::getBoneByIndex(unsigned int index) const
|
Bone3D* MeshSkin::getBoneByIndex(unsigned int index) const
|
||||||
{
|
{
|
||||||
if (index < _skinBones.size())
|
if (index < _skinBones.size())
|
||||||
return _skinBones.at(index);
|
return _skinBones.at(index);
|
||||||
|
@ -340,7 +340,7 @@ Bone* MeshSkin::getBoneByIndex(unsigned int index) const
|
||||||
|
|
||||||
return nullptr;
|
return nullptr;
|
||||||
}
|
}
|
||||||
Bone* MeshSkin::getBoneByName(const std::string& id) const
|
Bone3D* MeshSkin::getBoneByName(const std::string& id) const
|
||||||
{
|
{
|
||||||
//search from skin bones
|
//search from skin bones
|
||||||
for (auto it : _skinBones) {
|
for (auto it : _skinBones) {
|
||||||
|
@ -355,18 +355,18 @@ Bone* MeshSkin::getBoneByName(const std::string& id) const
|
||||||
return nullptr;
|
return nullptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
Bone* MeshSkin::getRootBone() const
|
Bone3D* MeshSkin::getRootBone() const
|
||||||
{
|
{
|
||||||
return _rootBone;
|
return _rootBone;
|
||||||
}
|
}
|
||||||
void MeshSkin::setRootBone(Bone* joint)
|
void MeshSkin::setRootBone(Bone3D* joint)
|
||||||
{
|
{
|
||||||
CC_SAFE_RETAIN(joint);
|
CC_SAFE_RETAIN(joint);
|
||||||
CC_SAFE_RELEASE(_rootBone);
|
CC_SAFE_RELEASE(_rootBone);
|
||||||
_rootBone = joint;
|
_rootBone = joint;
|
||||||
}
|
}
|
||||||
|
|
||||||
int MeshSkin::getBoneIndex(Bone* bone) const
|
int MeshSkin::getBoneIndex(Bone3D* bone) const
|
||||||
{
|
{
|
||||||
int i = 0;
|
int i = 0;
|
||||||
for (; i < _skinBones.size(); i++) {
|
for (; i < _skinBones.size(); i++) {
|
||||||
|
@ -419,12 +419,12 @@ void MeshSkin::removeAllBones()
|
||||||
CC_SAFE_RELEASE(_rootBone);
|
CC_SAFE_RELEASE(_rootBone);
|
||||||
}
|
}
|
||||||
|
|
||||||
void MeshSkin::addSkinBone(Bone* bone)
|
void MeshSkin::addSkinBone(Bone3D* bone)
|
||||||
{
|
{
|
||||||
_skinBones.pushBack(bone);
|
_skinBones.pushBack(bone);
|
||||||
}
|
}
|
||||||
|
|
||||||
void MeshSkin::addNodeBone(Bone* bone)
|
void MeshSkin::addNodeBone(Bone3D* bone)
|
||||||
{
|
{
|
||||||
_nodeBones.pushBack(bone);
|
_nodeBones.pushBack(bone);
|
||||||
}
|
}
|
||||||
|
|
|
@ -40,7 +40,7 @@ NS_CC_BEGIN
|
||||||
/**
|
/**
|
||||||
* Defines a basic hierachial structure of transformation spaces.
|
* Defines a basic hierachial structure of transformation spaces.
|
||||||
*/
|
*/
|
||||||
class Bone : public Ref
|
class Bone3D : public Ref
|
||||||
{
|
{
|
||||||
friend class MeshSkin;
|
friend class MeshSkin;
|
||||||
public:
|
public:
|
||||||
|
@ -76,7 +76,7 @@ public:
|
||||||
/**
|
/**
|
||||||
* Creates C3DBone.
|
* Creates C3DBone.
|
||||||
*/
|
*/
|
||||||
static Bone* create(const std::string& id);
|
static Bone3D* create(const std::string& id);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Sets the inverse bind pose matrix.
|
* Sets the inverse bind pose matrix.
|
||||||
|
@ -105,17 +105,17 @@ public:
|
||||||
void updateJointMatrix(Vec4* matrixPalette);
|
void updateJointMatrix(Vec4* matrixPalette);
|
||||||
|
|
||||||
/**bone tree, we do not inherit from Node, Node has too many properties that we do not need. A clean Node is needed.*/
|
/**bone tree, we do not inherit from Node, Node has too many properties that we do not need. A clean Node is needed.*/
|
||||||
Bone* getParentBone();
|
Bone3D* getParentBone();
|
||||||
/**get child bone count*/
|
/**get child bone count*/
|
||||||
ssize_t getChildBoneCount() const;
|
ssize_t getChildBoneCount() const;
|
||||||
/**get child bone by index*/
|
/**get child bone by index*/
|
||||||
Bone* getChildBoneByIndex(int index);
|
Bone3D* getChildBoneByIndex(int index);
|
||||||
/**add child bone*/
|
/**add child bone*/
|
||||||
void addChildBone(Bone* bone);
|
void addChildBone(Bone3D* bone);
|
||||||
/**remove child bone by index*/
|
/**remove child bone by index*/
|
||||||
void removeChildBoneByIndex(int index);
|
void removeChildBoneByIndex(int index);
|
||||||
/**remove child bone*/
|
/**remove child bone*/
|
||||||
void removeChildBone(Bone* bone);
|
void removeChildBone(Bone3D* bone);
|
||||||
/**remove all child bone*/
|
/**remove all child bone*/
|
||||||
void removeAllChildBone();
|
void removeAllChildBone();
|
||||||
|
|
||||||
|
@ -143,12 +143,12 @@ protected:
|
||||||
/**
|
/**
|
||||||
* Constructor.
|
* Constructor.
|
||||||
*/
|
*/
|
||||||
Bone(const std::string& id);
|
Bone3D(const std::string& id);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Destructor.
|
* Destructor.
|
||||||
*/
|
*/
|
||||||
virtual ~Bone();
|
virtual ~Bone3D();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Update local matrix
|
* Update local matrix
|
||||||
|
@ -166,9 +166,9 @@ protected:
|
||||||
|
|
||||||
Mat4 _oriPose; //original bone pose
|
Mat4 _oriPose; //original bone pose
|
||||||
|
|
||||||
Bone* _parent; //parent bone
|
Bone3D* _parent; //parent bone
|
||||||
|
|
||||||
Vector<Bone*> _children;
|
Vector<Bone3D*> _children;
|
||||||
|
|
||||||
bool _worldDirty;
|
bool _worldDirty;
|
||||||
Mat4 _world;
|
Mat4 _world;
|
||||||
|
@ -193,15 +193,15 @@ public:
|
||||||
ssize_t getBoneCount() const;
|
ssize_t getBoneCount() const;
|
||||||
|
|
||||||
/**get bone*/
|
/**get bone*/
|
||||||
Bone* getBoneByIndex(unsigned int index) const;
|
Bone3D* getBoneByIndex(unsigned int index) const;
|
||||||
Bone* getBoneByName(const std::string& id) const;
|
Bone3D* getBoneByName(const std::string& id) const;
|
||||||
|
|
||||||
/**get & set root bone*/
|
/**get & set root bone*/
|
||||||
Bone* getRootBone() const;
|
Bone3D* getRootBone() const;
|
||||||
void setRootBone(Bone* bone);
|
void setRootBone(Bone3D* bone);
|
||||||
|
|
||||||
/**get bone index*/
|
/**get bone index*/
|
||||||
int getBoneIndex(Bone* bone) const;
|
int getBoneIndex(Bone3D* bone) const;
|
||||||
|
|
||||||
/**compute matrix palette used by gpu skin*/
|
/**compute matrix palette used by gpu skin*/
|
||||||
Vec4* getMatrixPalette();
|
Vec4* getMatrixPalette();
|
||||||
|
@ -225,17 +225,17 @@ CC_CONSTRUCTOR_ACCESS:
|
||||||
void removeAllBones();
|
void removeAllBones();
|
||||||
|
|
||||||
/**add skin bone*/
|
/**add skin bone*/
|
||||||
void addSkinBone(Bone* bone);
|
void addSkinBone(Bone3D* bone);
|
||||||
|
|
||||||
/**add Node bone*/
|
/**add Node bone*/
|
||||||
void addNodeBone(Bone* bone);
|
void addNodeBone(Bone3D* bone);
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
|
|
||||||
Vector<Bone*> _skinBones; // bones with skin
|
Vector<Bone3D*> _skinBones; // bones with skin
|
||||||
Vector<Bone*> _nodeBones; //bones without skin, only used to compute transform of children
|
Vector<Bone3D*> _nodeBones; //bones without skin, only used to compute transform of children
|
||||||
|
|
||||||
Bone* _rootBone;
|
Bone3D* _rootBone;
|
||||||
|
|
||||||
// Pointer to the array of palette matrices.
|
// Pointer to the array of palette matrices.
|
||||||
// This array is passed to the vertex shader as a uniform.
|
// This array is passed to the vertex shader as a uniform.
|
||||||
|
|
Загрузка…
Ссылка в новой задаче