remove kmMat4 interface in cocostudio and UI

This commit is contained in:
Huabing.Xu 2014-04-09 14:44:54 +08:00
parent 504fa2aa60
commit a269ac2864
13 changed files with 46 additions and 42 deletions

View File

@ -72,7 +72,7 @@ Bone::Bone()
_displayManager = nullptr; _displayManager = nullptr;
_ignoreMovementBoneData = false; _ignoreMovementBoneData = false;
// _worldTransform = AffineTransformMake(1, 0, 0, 1, 0, 0); // _worldTransform = AffineTransformMake(1, 0, 0, 1, 0, 0);
kmMat4Identity(&_worldTransform); _worldTransform = Matrix::identity();
_boneTransformDirty = true; _boneTransformDirty = true;
_blendFunc = BlendFunc::ALPHA_NON_PREMULTIPLIED; _blendFunc = BlendFunc::ALPHA_NON_PREMULTIPLIED;
_blendDirty = false; _blendDirty = false;
@ -238,8 +238,8 @@ void Bone::applyParentTransform(Bone *parent)
{ {
float x = _worldInfo->x; float x = _worldInfo->x;
float y = _worldInfo->y; float y = _worldInfo->y;
_worldInfo->x = x * parent->_worldTransform.mat[0] + y * parent->_worldTransform.mat[4] + parent->_worldInfo->x; _worldInfo->x = x * parent->_worldTransform.m[0] + y * parent->_worldTransform.m[4] + parent->_worldInfo->x;
_worldInfo->y = x * parent->_worldTransform.mat[1] + y * parent->_worldTransform.mat[5] + parent->_worldInfo->y; _worldInfo->y = x * parent->_worldTransform.m[1] + y * parent->_worldTransform.m[5] + parent->_worldInfo->y;
_worldInfo->scaleX = _worldInfo->scaleX * parent->_worldInfo->scaleX; _worldInfo->scaleX = _worldInfo->scaleX * parent->_worldInfo->scaleX;
_worldInfo->scaleY = _worldInfo->scaleY * parent->_worldInfo->scaleY; _worldInfo->scaleY = _worldInfo->scaleY * parent->_worldInfo->scaleY;
_worldInfo->skewX = _worldInfo->skewX + parent->_worldInfo->skewX; _worldInfo->skewX = _worldInfo->skewX + parent->_worldInfo->skewX;
@ -380,7 +380,7 @@ void Bone::setLocalZOrder(int zOrder)
Node::setLocalZOrder(zOrder); Node::setLocalZOrder(zOrder);
} }
kmMat4 Bone::getNodeToArmatureTransform() const Matrix Bone::getNodeToArmatureTransform() const
{ {
return _worldTransform; return _worldTransform;
} }

View File

@ -156,7 +156,7 @@ public:
virtual void setTransformDirty(bool dirty) { _boneTransformDirty = dirty; } virtual void setTransformDirty(bool dirty) { _boneTransformDirty = dirty; }
virtual bool isTransformDirty() { return _boneTransformDirty; } virtual bool isTransformDirty() { return _boneTransformDirty; }
virtual kmMat4 getNodeToArmatureTransform() const; virtual Matrix getNodeToArmatureTransform() const;
virtual Matrix getNodeToWorldTransform() const override; virtual Matrix getNodeToWorldTransform() const override;
Node *getDisplayRenderNode(); Node *getDisplayRenderNode();
@ -250,7 +250,7 @@ protected:
bool _boneTransformDirty; //! Whether or not transform dirty bool _boneTransformDirty; //! Whether or not transform dirty
//! self Transform, use this to change display's state //! self Transform, use this to change display's state
kmMat4 _worldTransform; Matrix _worldTransform;
BaseData *_worldInfo; BaseData *_worldInfo;

View File

@ -334,7 +334,7 @@ ColliderFilter *ColliderDetector::getColliderFilter()
Point helpPoint; Point helpPoint;
void ColliderDetector::updateTransform(kmMat4 &t) void ColliderDetector::updateTransform(Matrix &t)
{ {
if (!_active) if (!_active)
{ {

View File

@ -42,6 +42,8 @@ THE SOFTWARE.
namespace cocostudio { namespace cocostudio {
USING_NS_CC_MATH;
class Bone; class Bone;
/** /**
@ -155,7 +157,7 @@ public:
void removeContourData(ContourData *contourData); void removeContourData(ContourData *contourData);
void removeAll(); void removeAll();
void updateTransform(kmMat4 &t); void updateTransform(Matrix &t);
void setActive(bool active); void setActive(bool active);
bool getActive(); bool getActive();

View File

@ -118,7 +118,7 @@ void DisplayFactory::updateDisplay(Bone *bone, float dt, bool dirty)
anchorPoint = PointApplyTransform(anchorPoint, displayTransform); anchorPoint = PointApplyTransform(anchorPoint, displayTransform);
displayTransform.mat[12] = anchorPoint.x; displayTransform.mat[12] = anchorPoint.x;
displayTransform.mat[13] = anchorPoint.y; displayTransform.mat[13] = anchorPoint.y;
kmMat4 t = TransformConcat( bone->getArmature()->getNodeToParentTransform(),displayTransform); Matrix t = TransformConcat( bone->getArmature()->getNodeToParentTransform(),displayTransform);
detector->updateTransform(t); detector->updateTransform(t);
} }
while (0); while (0);

View File

@ -86,7 +86,7 @@ Skin::Skin()
, _armature(nullptr) , _armature(nullptr)
, _displayName("") , _displayName("")
{ {
kmMat4Identity(&_skinTransform); _skinTransform = Matrix::identity();
} }
bool Skin::initWithSpriteFrameName(const std::string& spriteFrameName) bool Skin::initWithSpriteFrameName(const std::string& spriteFrameName)
@ -206,7 +206,7 @@ Matrix Skin::getNodeToWorldTransform() const
return TransformConcat( _bone->getArmature()->getNodeToWorldTransform(), _transform); return TransformConcat( _bone->getArmature()->getNodeToWorldTransform(), _transform);
} }
kmMat4 Skin::getNodeToWorldTransformAR() const Matrix Skin::getNodeToWorldTransformAR() const
{ {
kmMat4 displayTransform = _transform; kmMat4 displayTransform = _transform;
Point anchorPoint = _anchorPointInPoints; Point anchorPoint = _anchorPointInPoints;

View File

@ -52,7 +52,7 @@ public:
void updateTransform() override; void updateTransform() override;
Matrix getNodeToWorldTransform() const override; Matrix getNodeToWorldTransform() const override;
kmMat4 getNodeToWorldTransformAR() const; Matrix getNodeToWorldTransformAR() const;
virtual void draw(cocos2d::Renderer *renderer, const Matrix &transform, bool transformUpdated) override; virtual void draw(cocos2d::Renderer *renderer, const Matrix &transform, bool transformUpdated) override;
@ -75,7 +75,7 @@ protected:
BaseData _skinData; BaseData _skinData;
Bone *_bone; Bone *_bone;
Armature *_armature; Armature *_armature;
kmMat4 _skinTransform; Matrix _skinTransform;
std::string _displayName; std::string _displayName;
cocos2d::QuadCommand _quadCommand; // quad command cocos2d::QuadCommand _quadCommand; // quad command
}; };

View File

@ -118,30 +118,30 @@ void TransformHelp::nodeToMatrix(const BaseData &node, AffineTransform &matrix)
matrix.ty = node.y; matrix.ty = node.y;
} }
void TransformHelp::nodeToMatrix(const BaseData &node, kmMat4 &matrix) void TransformHelp::nodeToMatrix(const BaseData &node, Matrix &matrix)
{ {
kmMat4Identity(&matrix); matrix = Matrix::identity();
if (node.skewX == -node.skewY) if (node.skewX == -node.skewY)
{ {
double sine = sin(node.skewX); double sine = sin(node.skewX);
double cosine = cos(node.skewX); double cosine = cos(node.skewX);
matrix.mat[0] = node.scaleX * cosine; matrix.m[0] = node.scaleX * cosine;
matrix.mat[1] = node.scaleX * -sine; matrix.m[1] = node.scaleX * -sine;
matrix.mat[4] = node.scaleY * sine; matrix.m[4] = node.scaleY * sine;
matrix.mat[5] = node.scaleY * cosine; matrix.m[5] = node.scaleY * cosine;
} }
else else
{ {
matrix.mat[0] = node.scaleX * cos(node.skewY); matrix.m[0] = node.scaleX * cos(node.skewY);
matrix.mat[1] = node.scaleX * sin(node.skewY); matrix.m[1] = node.scaleX * sin(node.skewY);
matrix.mat[4] = node.scaleY * sin(node.skewX); matrix.m[4] = node.scaleY * sin(node.skewX);
matrix.mat[5] = node.scaleY * cos(node.skewX); matrix.m[5] = node.scaleY * cos(node.skewX);
} }
matrix.mat[12] = node.x; matrix.m[12] = node.x;
matrix.mat[13] = node.y; matrix.m[13] = node.y;
} }
@ -171,7 +171,7 @@ void TransformHelp::matrixToNode(const AffineTransform &matrix, BaseData &node)
node.y = matrix.ty; node.y = matrix.ty;
} }
void TransformHelp::matrixToNode(const kmMat4 &matrix, BaseData &node) void TransformHelp::matrixToNode(const Matrix &matrix, BaseData &node)
{ {
/* /*
* In as3 language, there is a function called "deltaTransformPoint", it calculate a point used give Transform * In as3 language, there is a function called "deltaTransformPoint", it calculate a point used give Transform
@ -180,21 +180,21 @@ void TransformHelp::matrixToNode(const kmMat4 &matrix, BaseData &node)
helpPoint1.x = 0; helpPoint1.x = 0;
helpPoint1.y = 1; helpPoint1.y = 1;
helpPoint1 = PointApplyTransform(helpPoint1, matrix); helpPoint1 = PointApplyTransform(helpPoint1, matrix);
helpPoint1.x -= matrix.mat[12]; helpPoint1.x -= matrix.m[12];
helpPoint1.y -= matrix.mat[13]; helpPoint1.y -= matrix.m[13];
helpPoint2.x = 1; helpPoint2.x = 1;
helpPoint2.y = 0; helpPoint2.y = 0;
helpPoint2 = PointApplyTransform(helpPoint2, matrix); helpPoint2 = PointApplyTransform(helpPoint2, matrix);
helpPoint2.x -= matrix.mat[12]; helpPoint2.x -= matrix.m[12];
helpPoint2.y -= matrix.mat[13]; helpPoint2.y -= matrix.m[13];
node.skewX = -(atan2f(helpPoint1.y, helpPoint1.x) - 1.5707964f); node.skewX = -(atan2f(helpPoint1.y, helpPoint1.x) - 1.5707964f);
node.skewY = atan2f(helpPoint2.y, helpPoint2.x); node.skewY = atan2f(helpPoint2.y, helpPoint2.x);
node.scaleX = sqrt(matrix.mat[0] * matrix.mat[0] + matrix.mat[1] * matrix.mat[1]); node.scaleX = sqrt(matrix.m[0] * matrix.m[0] + matrix.m[1] * matrix.m[1]);
node.scaleY = sqrt(matrix.mat[4] * matrix.mat[4] + matrix.mat[5] * matrix.mat[5]); node.scaleY = sqrt(matrix.m[4] * matrix.m[4] + matrix.m[5] * matrix.m[5]);
node.x = matrix.mat[12]; node.x = matrix.m[12];
node.y = matrix.mat[13]; node.y = matrix.m[13];
} }

View File

@ -30,6 +30,8 @@ THE SOFTWARE.
namespace cocostudio { namespace cocostudio {
USING_NS_CC_MATH;
/* /*
* use to calculate the matrix of node from parent node * use to calculate the matrix of node from parent node
* @js NA * @js NA
@ -47,9 +49,9 @@ public:
static void transformToParentWithoutScale(BaseData &node, const BaseData &parentNode); static void transformToParentWithoutScale(BaseData &node, const BaseData &parentNode);
static void nodeToMatrix(const BaseData &_node, cocos2d::AffineTransform &_matrix); static void nodeToMatrix(const BaseData &_node, cocos2d::AffineTransform &_matrix);
static void nodeToMatrix(const BaseData &node, kmMat4 &matrix); static void nodeToMatrix(const BaseData &node, Matrix &matrix);
static void matrixToNode(const cocos2d::AffineTransform &_matrix, BaseData &_node); static void matrixToNode(const cocos2d::AffineTransform &_matrix, BaseData &_node);
static void matrixToNode(const kmMat4 &_matrix, BaseData &_node); static void matrixToNode(const Matrix &_matrix, BaseData &_node);
static void nodeConcat(BaseData &target, BaseData &source); static void nodeConcat(BaseData &target, BaseData &source);
static void nodeSub(BaseData &target, BaseData &source); static void nodeSub(BaseData &target, BaseData &source);

View File

@ -133,7 +133,7 @@ void Skeleton::draw(cocos2d::Renderer *renderer, const Matrix &transform, bool t
renderer->addCommand(&_customCommand); renderer->addCommand(&_customCommand);
} }
void Skeleton::onDraw(const kmMat4 &transform, bool transformUpdated) void Skeleton::onDraw(const Matrix &transform, bool transformUpdated)
{ {
getShaderProgram()->use(); getShaderProgram()->use();
getShaderProgram()->setUniformsForBuiltins(transform); getShaderProgram()->setUniformsForBuiltins(transform);

View File

@ -70,7 +70,7 @@ public:
virtual void update (float deltaTime) override; virtual void update (float deltaTime) override;
virtual void draw(cocos2d::Renderer *renderer, const Matrix &transform, bool transformUpdated) override; virtual void draw(cocos2d::Renderer *renderer, const Matrix &transform, bool transformUpdated) override;
void onDraw(const kmMat4 &transform, bool transformUpdated); void onDraw(const Matrix &transform, bool transformUpdated);
void onEnter() override; void onEnter() override;
void onExit() override; void onExit() override;
virtual cocos2d::Rect getBoundingBox () const override; virtual cocos2d::Rect getBoundingBox () const override;

View File

@ -744,7 +744,7 @@ void Layout::sortAllChildren()
doLayout(); doLayout();
} }
void Layout::stencilClippingVisit(Renderer *renderer, const kmMat4 &parentTransform, bool parentTransformUpdated) void Layout::stencilClippingVisit(Renderer *renderer, const Matrix &parentTransform, bool parentTransformUpdated)
{ {
if(!_visible) if(!_visible)
return; return;
@ -902,7 +902,7 @@ void Layout::onAfterVisitScissor()
glDisable(GL_SCISSOR_TEST); glDisable(GL_SCISSOR_TEST);
} }
void Layout::scissorClippingVisit(Renderer *renderer, const kmMat4& parentTransform, bool parentTransformUpdated) void Layout::scissorClippingVisit(Renderer *renderer, const Matrix& parentTransform, bool parentTransformUpdated)
{ {
_beforeVisitCmdScissor.init(_globalZOrder); _beforeVisitCmdScissor.init(_globalZOrder);
_beforeVisitCmdScissor.func = CC_CALLBACK_0(Layout::onBeforeVisitScissor, this); _beforeVisitCmdScissor.func = CC_CALLBACK_0(Layout::onBeforeVisitScissor, this);

View File

@ -284,8 +284,8 @@ protected:
virtual void copySpecialProperties(Widget* model) override; virtual void copySpecialProperties(Widget* model) override;
virtual void copyClonedWidgetChildren(Widget* model) override; virtual void copyClonedWidgetChildren(Widget* model) override;
void stencilClippingVisit(Renderer *renderer, const kmMat4& parentTransform, bool parentTransformUpdated); void stencilClippingVisit(Renderer *renderer, const Matrix& parentTransform, bool parentTransformUpdated);
void scissorClippingVisit(Renderer *renderer, const kmMat4& parentTransform, bool parentTransformUpdated); void scissorClippingVisit(Renderer *renderer, const Matrix& parentTransform, bool parentTransformUpdated);
void setStencilClippingSize(const Size& size); void setStencilClippingSize(const Size& size);
const Rect& getClippingRect(); const Rect& getClippingRect();