Merge pull request #5123 from ricardoquesada/global_z_order

GlobalZOrder is used for render priority...
This commit is contained in:
Ricardo Quesada 2014-01-18 11:43:32 -08:00
commit d2b3a3e2ca
60 changed files with 272 additions and 185 deletions

View File

@ -1,10 +1,11 @@
cocos2d-x-3.0final ?.? ? cocos2d-x-3.0beta2 ?.? ?
[All] [All]
[NEW] DrawNode supports to draw triangle, quad bezier, cubic bezier. [NEW] DrawNode supports to draw triangle, quad bezier, cubic bezier.
[NEW] Console: added the 'textures', 'fileutils dump' and 'config' commands [NEW] Console: added the 'textures', 'fileutils dump' and 'config' commands
[NEW] GLCache: glActiveTexture() is cached with GL::activeTexture(). All code MUST call the cached version in order to work correctly [NEW] GLCache: glActiveTexture() is cached with GL::activeTexture(). All code MUST call the cached version in order to work correctly
[NEW] Label: Uses a struct of TTF configuration for Label::createWithTTF to reduce parameters and make this interface more easily to use. [NEW] Label: Uses a struct of TTF configuration for Label::createWithTTF to reduce parameters and make this interface more easily to use.
[NEW] Label: Integrates LabelAtlas into new Label. [NEW] Label: Integrates LabelAtlas into new Label.
[NEW] Node: Added `setGlobalZOrder()`. Useful to change the Node's render order. Node::setZOrder() -> Node::setLocalZOrder()
[NEW] Renderer: Added BatchCommand. This command is not "batchable" with other commands, but improves performance in about 10% [NEW] Renderer: Added BatchCommand. This command is not "batchable" with other commands, but improves performance in about 10%
[NEW] LuaBindings: Bindings-generator supports to bind namespace for lua. [NEW] LuaBindings: Bindings-generator supports to bind namespace for lua.

View File

@ -1 +1 @@
e1e5a1169e92834330092c45165660c6cbd03609 63e6598ea5798bf42bbd22c2295e65f7c739695a

View File

@ -1 +1 @@
1fa58d8cba77ef923c83d2860d5511d28dad6c27 447e7ba37294e6da0df2e02f5a62f30fb15e3272

View File

@ -153,7 +153,7 @@ void AtlasNode::draw(void)
auto shader = ShaderCache::getInstance()->getProgram(GLProgram::SHADER_NAME_POSITION_TEXTURE_COLOR_NO_MVP); auto shader = ShaderCache::getInstance()->getProgram(GLProgram::SHADER_NAME_POSITION_TEXTURE_COLOR_NO_MVP);
_quadCommand.init( _quadCommand.init(
_vertexZ, _globalZOrder,
_textureAtlas->getTexture()->getName(), _textureAtlas->getTexture()->getName(),
shader, shader,
_blendFunc, _blendFunc,

View File

@ -210,12 +210,12 @@ void ClippingNode::visit()
Renderer* renderer = Director::getInstance()->getRenderer(); Renderer* renderer = Director::getInstance()->getRenderer();
_groupCommand.init(_vertexZ); _groupCommand.init(_globalZOrder);
renderer->addCommand(&_groupCommand); renderer->addCommand(&_groupCommand);
renderer->pushGroup(_groupCommand.getRenderQueueID()); renderer->pushGroup(_groupCommand.getRenderQueueID());
_beforeVisitCmd.init(_vertexZ); _beforeVisitCmd.init(_globalZOrder);
_beforeVisitCmd.func = CC_CALLBACK_0(ClippingNode::onBeforeVisit, this); _beforeVisitCmd.func = CC_CALLBACK_0(ClippingNode::onBeforeVisit, this);
renderer->addCommand(&_beforeVisitCmd); renderer->addCommand(&_beforeVisitCmd);
if (_alphaThreshold < 1) if (_alphaThreshold < 1)
@ -238,7 +238,7 @@ void ClippingNode::visit()
} }
_stencil->visit(); _stencil->visit();
_afterDrawStencilCmd.init(_vertexZ); _afterDrawStencilCmd.init(_globalZOrder);
_afterDrawStencilCmd.func = CC_CALLBACK_0(ClippingNode::onAfterDrawStencil, this); _afterDrawStencilCmd.func = CC_CALLBACK_0(ClippingNode::onAfterDrawStencil, this);
renderer->addCommand(&_afterDrawStencilCmd); renderer->addCommand(&_afterDrawStencilCmd);
@ -268,7 +268,7 @@ void ClippingNode::visit()
this->draw(); this->draw();
} }
_afterVisitCmd.init(_vertexZ); _afterVisitCmd.init(_globalZOrder);
_afterVisitCmd.func = CC_CALLBACK_0(ClippingNode::onAfterVisit, this); _afterVisitCmd.func = CC_CALLBACK_0(ClippingNode::onAfterVisit, this);
renderer->addCommand(&_afterVisitCmd); renderer->addCommand(&_afterVisitCmd);

View File

@ -241,7 +241,7 @@ void DrawNode::render()
void DrawNode::draw() void DrawNode::draw()
{ {
_customCommand.init(_vertexZ); _customCommand.init(_globalZOrder);
_customCommand.func = CC_CALLBACK_0(DrawNode::onDraw, this); _customCommand.func = CC_CALLBACK_0(DrawNode::onDraw, this);
Director::getInstance()->getRenderer()->addCommand(&_customCommand); Director::getInstance()->getRenderer()->addCommand(&_customCommand);
} }

View File

@ -666,7 +666,7 @@ void Label::onDraw()
void Label::draw() void Label::draw()
{ {
_customCommand.init(_vertexZ); _customCommand.init(_globalZOrder);
_customCommand.func = CC_CALLBACK_0(Label::onDraw, this); _customCommand.func = CC_CALLBACK_0(Label::onDraw, this);
Director::getInstance()->getRenderer()->addCommand(&_customCommand); Director::getInstance()->getRenderer()->addCommand(&_customCommand);
} }

View File

@ -565,7 +565,7 @@ void LayerColor::updateColor()
void LayerColor::draw() void LayerColor::draw()
{ {
_customCommand.init(_vertexZ); _customCommand.init(_globalZOrder);
_customCommand.func = CC_CALLBACK_0(LayerColor::onDraw, this); _customCommand.func = CC_CALLBACK_0(LayerColor::onDraw, this);
Director::getInstance()->getRenderer()->addCommand(&_customCommand); Director::getInstance()->getRenderer()->addCommand(&_customCommand);

View File

@ -359,7 +359,7 @@ void MotionStreak::draw()
if(_nuPoints <= 1) if(_nuPoints <= 1)
return; return;
kmGLGetMatrix(KM_GL_MODELVIEW,&_cachedMV); kmGLGetMatrix(KM_GL_MODELVIEW,&_cachedMV);
_customCommand.init(_vertexZ); _customCommand.init(_globalZOrder);
_customCommand.func = CC_CALLBACK_0(MotionStreak::onDraw, this); _customCommand.func = CC_CALLBACK_0(MotionStreak::onDraw, this);
Director::getInstance()->getRenderer()->addCommand(&_customCommand); Director::getInstance()->getRenderer()->addCommand(&_customCommand);

View File

@ -108,7 +108,8 @@ Node::Node(void)
, _inverseDirty(true) , _inverseDirty(true)
// children (lazy allocs) // children (lazy allocs)
// lazy alloc // lazy alloc
, _ZOrder(0) , _localZOrder(0)
, _globalZOrder(0)
, _parent(nullptr) , _parent(nullptr)
// "whole screen" objects. like Scenes and Layers, should set _ignoreAnchorPointForPosition to true // "whole screen" objects. like Scenes and Layers, should set _ignoreAnchorPointForPosition to true
, _tag(Node::INVALID_TAG) , _tag(Node::INVALID_TAG)
@ -212,28 +213,21 @@ void Node::setSkewY(float newSkewY)
_transformDirty = _inverseDirty = true; _transformDirty = _inverseDirty = true;
} }
/// zOrder getter
int Node::getZOrder() const
{
return _ZOrder;
}
/// zOrder setter : private method /// zOrder setter : private method
/// used internally to alter the zOrder variable. DON'T call this method manually /// used internally to alter the zOrder variable. DON'T call this method manually
void Node::_setZOrder(int z) void Node::_setLocalZOrder(int z)
{ {
_ZOrder = z; _localZOrder = z;
} }
void Node::setZOrder(int z) void Node::setLocalZOrder(int z)
{ {
_localZOrder = z;
if (_parent) if (_parent)
{ {
_parent->reorderChild(this, z); _parent->reorderChild(this, z);
} }
// should set "_ZOrder" after reorderChild, because the implementation of reorderChild subclass of Node, such as Sprite,
// will return when _ZOrder value is not changed
_setZOrder(z);
_eventDispatcher->setDirtyForNode(this); _eventDispatcher->setDirtyForNode(this);
} }
@ -246,9 +240,10 @@ float Node::getVertexZ() const
/// vertexZ setter /// vertexZ setter
void Node::setVertexZ(float var) void Node::setVertexZ(float zOrder)
{ {
_vertexZ = var; _vertexZ = zOrder;
setGlobalZOrder(zOrder);
} }
@ -650,7 +645,7 @@ void Node::addChild(Node *child, int zOrder)
void Node::addChild(Node *child) void Node::addChild(Node *child)
{ {
CCASSERT( child != nullptr, "Argument must be non-nil"); CCASSERT( child != nullptr, "Argument must be non-nil");
this->addChild(child, child->_ZOrder, child->_tag); this->addChild(child, child->_localZOrder, child->_tag);
} }
void Node::removeFromParent() void Node::removeFromParent()
@ -767,7 +762,7 @@ void Node::insertChild(Node* child, int z)
{ {
_reorderChildDirty = true; _reorderChildDirty = true;
_children.pushBack(child); _children.pushBack(child);
child->_setZOrder(z); child->_setLocalZOrder(z);
} }
void Node::reorderChild(Node *child, int zOrder) void Node::reorderChild(Node *child, int zOrder)
@ -775,7 +770,7 @@ void Node::reorderChild(Node *child, int zOrder)
CCASSERT( child != nullptr, "Child must be non-nil"); CCASSERT( child != nullptr, "Child must be non-nil");
_reorderChildDirty = true; _reorderChildDirty = true;
child->setOrderOfArrival(s_globalOrderOfArrival++); child->setOrderOfArrival(s_globalOrderOfArrival++);
child->_setZOrder(zOrder); child->_setLocalZOrder(zOrder);
} }
void Node::sortAllChildren() void Node::sortAllChildren()
@ -816,7 +811,7 @@ void Node::visit()
{ {
auto node = _children.at(i); auto node = _children.at(i);
if ( node && node->_ZOrder < 0 ) if ( node && node->_localZOrder < 0 )
node->visit(); node->visit();
else else
break; break;

View File

@ -161,43 +161,72 @@ public:
/// @name Setters & Getters for Graphic Peroperties /// @name Setters & Getters for Graphic Peroperties
/** /**
* Sets the Z order which stands for the drawing order, and reorder this node in its parent's children array. LocalZOrder is the 'key' used to sort the node relative to its siblings.
*
* The Z order of node is relative to its siblings. The Node's parent will sort all its children based ont the LocalZOrder value.
* It is not related to the OpenGL's z property. This one only affects the draw order of itself and its siblings. If two nodes have the same LocalZOrder, then the node that was added first to the children's array will be in front of the other node in the array.
* Lower Z order number are drawn before higher numbers.
* Please refer to `setVertexZ(float)` for the difference. Also, the Scene Graph is traversed using the "In-Order" tree traversal algorithm ( http://en.wikipedia.org/wiki/Tree_traversal#In-order )
* And Nodes that have LocalZOder values < 0 are the "left" subtree
* @param zOrder Z order of this node. While Nodes with LocalZOder >=0 are the "right" subtree.
@see `setGlobalZOrder`
@see `setVertexZ`
*/ */
virtual void setZOrder(int zOrder); virtual void setLocalZOrder(int zOrder);
/*
* Sets the z order which stands for the drawing order CC_DEPRECATED_ATTRIBUTE virtual void setZOrder(int zOrder) { setLocalZOrder(zOrder); }
* /* Helper function used by `setLocalZOrder`. Don't use it unless you know what you are doing.
* This is an internal method. Don't call it outside the framework.
* The difference between setZOrder(int) and _setOrder(int) is:
* - _setZOrder(int) is a pure setter for _ZOrder memeber variable
* - setZOrder(int) firstly changes _ZOrder, then recorder this node in its parent's chilren array.
*/ */
virtual void _setZOrder(int z); virtual void _setLocalZOrder(int z);
/** /**
* Gets the Z order of this node. * Gets the local Z order of this node.
* *
* @see `setZOrder(int)` * @see `setLocalZOrder(int)`
* *
* @return The Z order. * @return The local (relative to its siblings) Z order.
*/ */
virtual int getZOrder() const; virtual int getLocalZOrder() const { return _localZOrder; }
CC_DEPRECATED_ATTRIBUTE virtual int getZOrder() const { return getLocalZOrder(); }
/** /**
* Sets the real OpenGL Z vertex. Defines the oder in which the nodes are renderer.
Nodes that have a Global Z Order lower, are renderer first.
In case two or more nodes have the same Global Z Order, the oder is not guaranteed.
The only exception if the Nodes have a Global Z Order == 0. In that case, the Scene Graph order is used.
By default, all nodes have a Global Z Order = 0. That means that by default, the Scene Graph order is used to render the nodes.
Global Z Order is useful when you need to render nodes in an order different than the Scene Graph order.
Limitations: Global Z Order can't be used used by Nodes that have SpriteBatchNode as one of their acenstors.
And if ClippingNode is one of the ancestors, then "global Z order" will be relative to the ClippingNode.
@see `setLocalZOrder()`
@see `setVertexZ()`
@since v3.0
*/
virtual void setGlobalZOrder(float zOrder) { _globalZOrder = zOrder; }
/**
* Returns the Node's Global Z Order.
* *
* Differences between openGL Z vertex and cocos2d Z order: * @see `setGlobalZOrder(int)`
* - OpenGL Z modifies the Z vertex, and not the Z order in the relation between parent-children
* - OpenGL Z might require to set 2D projection
* - cocos2d Z order works OK if all the nodes uses the same openGL Z vertex. eg: `vertexZ = 0`
* *
* @warning Use it at your own risk since it might break the cocos2d parent-children z order * @return The node's global Z order
*/
virtual float getGlobalZOrder() const { return _globalZOrder; }
/**
* Sets the 'z' value in the OpenGL Depth Buffer.
*
* The OpenGL depth buffer and depth testing are disabled by default. You need to turn them on
* in order to use this property correctly.
*
* `setVertexZ()` also sets the `setGlobalZValue()` with the vertexZ value.
*
* @see `setGlobalZValue()`
* *
* @param vertexZ OpenGL Z vertex of this node. * @param vertexZ OpenGL Z vertex of this node.
*/ */
@ -1411,7 +1440,6 @@ protected:
float _scaleX; ///< scaling factor on x-axis float _scaleX; ///< scaling factor on x-axis
float _scaleY; ///< scaling factor on y-axis float _scaleY; ///< scaling factor on y-axis
float _vertexZ; ///< OpenGL real Z vertex
Point _position; ///< position of the node Point _position; ///< position of the node
@ -1433,7 +1461,11 @@ protected:
mutable bool _transformDirty; ///< transform dirty flag mutable bool _transformDirty; ///< transform dirty flag
mutable bool _inverseDirty; ///< inverse transform dirty flag mutable bool _inverseDirty; ///< inverse transform dirty flag
int _ZOrder; ///< z-order value that affects the draw order
int _localZOrder; ///< Local order (relative to its siblings) used to sort the node
float _globalZOrder; ///< Global order used to sort the node
float _vertexZ; ///< OpenGL real Z vertex
Vector<Node*> _children; ///< array of children nodes Vector<Node*> _children; ///< array of children nodes
Node *_parent; ///< weak reference to parent node Node *_parent; ///< weak reference to parent node

View File

@ -92,7 +92,7 @@ void NodeGrid::visit()
Renderer* renderer = Director::getInstance()->getRenderer(); Renderer* renderer = Director::getInstance()->getRenderer();
_groupCommand.init(_vertexZ); _groupCommand.init(_globalZOrder);
renderer->addCommand(&_groupCommand); renderer->addCommand(&_groupCommand);
renderer->pushGroup(_groupCommand.getRenderQueueID()); renderer->pushGroup(_groupCommand.getRenderQueueID());
@ -104,7 +104,7 @@ void NodeGrid::visit()
_nodeGrid->set2DProjection(); _nodeGrid->set2DProjection();
} }
_gridBeginCommand.init(_vertexZ); _gridBeginCommand.init(_globalZOrder);
_gridBeginCommand.func = CC_CALLBACK_0(NodeGrid::onGridBeginDraw, this); _gridBeginCommand.func = CC_CALLBACK_0(NodeGrid::onGridBeginDraw, this);
renderer->addCommand(&_gridBeginCommand); renderer->addCommand(&_gridBeginCommand);
@ -152,7 +152,7 @@ void NodeGrid::visit()
director->setProjection(beforeProjectionType); director->setProjection(beforeProjectionType);
} }
_gridEndCommand.init(_vertexZ); _gridEndCommand.init(_globalZOrder);
_gridEndCommand.func = CC_CALLBACK_0(NodeGrid::onGridEndDraw, this); _gridEndCommand.func = CC_CALLBACK_0(NodeGrid::onGridEndDraw, this);
renderer->addCommand(&_gridEndCommand); renderer->addCommand(&_gridEndCommand);

View File

@ -197,7 +197,7 @@ int ParticleBatchNode::addChildHelper(ParticleSystem* child, int z, int aTag)
_children.insert(pos, child); _children.insert(pos, child);
child->setTag(aTag); child->setTag(aTag);
child->_setZOrder(z); child->_setLocalZOrder(z);
child->setParent(this); child->setParent(this);
@ -264,7 +264,7 @@ void ParticleBatchNode::reorderChild(Node * aChild, int zOrder)
} }
} }
child->_setZOrder(zOrder); child->_setLocalZOrder(zOrder);
} }
void ParticleBatchNode::getCurrentIndex(int* oldIndex, int* newIndex, Node* child, int z) void ParticleBatchNode::getCurrentIndex(int* oldIndex, int* newIndex, Node* child, int z)
@ -383,7 +383,7 @@ void ParticleBatchNode::draw(void)
} }
_batchCommand.init( _batchCommand.init(
_vertexZ, _globalZOrder,
_textureAtlas->getTexture()->getName(), _textureAtlas->getTexture()->getName(),
_shaderProgram, _shaderProgram,
_blendFunc, _blendFunc,

View File

@ -439,7 +439,7 @@ void ParticleSystemQuad::draw()
auto shader = ShaderCache::getInstance()->getProgram(GLProgram::SHADER_NAME_POSITION_TEXTURE_COLOR_NO_MVP); auto shader = ShaderCache::getInstance()->getProgram(GLProgram::SHADER_NAME_POSITION_TEXTURE_COLOR_NO_MVP);
_quadCommand.init(_vertexZ, _texture->getName(), shader, _blendFunc, _quads, _particleIdx, _modelViewTransform); _quadCommand.init(_globalZOrder, _texture->getName(), shader, _blendFunc, _quads, _particleIdx, _modelViewTransform);
Director::getInstance()->getRenderer()->addCommand(&_quadCommand); Director::getInstance()->getRenderer()->addCommand(&_quadCommand);
} }

View File

@ -555,7 +555,7 @@ void ProgressTimer::draw()
if( ! _vertexData || ! _sprite) if( ! _vertexData || ! _sprite)
return; return;
_customCommand.init(_vertexZ); _customCommand.init(_globalZOrder);
_customCommand.func = CC_CALLBACK_0(ProgressTimer::onDraw, this); _customCommand.func = CC_CALLBACK_0(ProgressTimer::onDraw, this);
Director::getInstance()->getRenderer()->addCommand(&_customCommand); Director::getInstance()->getRenderer()->addCommand(&_customCommand);
} }

View File

@ -322,7 +322,7 @@ void RenderTexture::beginWithClear(float r, float g, float b, float a, float dep
this->begin(); this->begin();
//clear screen //clear screen
_beginWithClearCommand.init(_vertexZ); _beginWithClearCommand.init(_globalZOrder);
_beginWithClearCommand.func = CC_CALLBACK_0(RenderTexture::onClear, this); _beginWithClearCommand.func = CC_CALLBACK_0(RenderTexture::onClear, this);
Director::getInstance()->getRenderer()->addCommand(&_beginWithClearCommand); Director::getInstance()->getRenderer()->addCommand(&_beginWithClearCommand);
} }
@ -340,7 +340,7 @@ void RenderTexture::clearDepth(float depthValue)
this->begin(); this->begin();
_clearDepthCommand.init(_vertexZ); _clearDepthCommand.init(_globalZOrder);
_clearDepthCommand.func = CC_CALLBACK_0(RenderTexture::onClearDepth, this); _clearDepthCommand.func = CC_CALLBACK_0(RenderTexture::onClearDepth, this);
Director::getInstance()->getRenderer()->addCommand(&_clearDepthCommand); Director::getInstance()->getRenderer()->addCommand(&_clearDepthCommand);
@ -605,7 +605,7 @@ void RenderTexture::draw()
begin(); begin();
//clear screen //clear screen
_clearCommand.init(_vertexZ); _clearCommand.init(_globalZOrder);
_clearCommand.func = CC_CALLBACK_0(RenderTexture::onClear, this); _clearCommand.func = CC_CALLBACK_0(RenderTexture::onClear, this);
Director::getInstance()->getRenderer()->addCommand(&_clearCommand); Director::getInstance()->getRenderer()->addCommand(&_clearCommand);
@ -648,13 +648,13 @@ void RenderTexture::begin()
(float)-1.0 / heightRatio, (float)1.0 / heightRatio, -1,1 ); (float)-1.0 / heightRatio, (float)1.0 / heightRatio, -1,1 );
kmGLMultMatrix(&orthoMatrix); kmGLMultMatrix(&orthoMatrix);
_groupCommand.init(_vertexZ); _groupCommand.init(_globalZOrder);
Renderer *renderer = Director::getInstance()->getRenderer(); Renderer *renderer = Director::getInstance()->getRenderer();
renderer->addCommand(&_groupCommand); renderer->addCommand(&_groupCommand);
renderer->pushGroup(_groupCommand.getRenderQueueID()); renderer->pushGroup(_groupCommand.getRenderQueueID());
_beginCommand.init(_vertexZ); _beginCommand.init(_globalZOrder);
_beginCommand.func = CC_CALLBACK_0(RenderTexture::onBegin, this); _beginCommand.func = CC_CALLBACK_0(RenderTexture::onBegin, this);
Director::getInstance()->getRenderer()->addCommand(&_beginCommand); Director::getInstance()->getRenderer()->addCommand(&_beginCommand);
@ -662,7 +662,7 @@ void RenderTexture::begin()
void RenderTexture::end() void RenderTexture::end()
{ {
_endCommand.init(_vertexZ); _endCommand.init(_globalZOrder);
_endCommand.func = CC_CALLBACK_0(RenderTexture::onEnd, this); _endCommand.func = CC_CALLBACK_0(RenderTexture::onEnd, this);
Renderer *renderer = Director::getInstance()->getRenderer(); Renderer *renderer = Director::getInstance()->getRenderer();

View File

@ -670,7 +670,7 @@ void Sprite::updateTransform(void)
void Sprite::draw(void) void Sprite::draw(void)
{ {
//TODO implement z order //TODO implement z order
_quadCommand.init(_vertexZ, _texture->getName(), _shaderProgram, _blendFunc, &_quad, 1, _modelViewTransform); _quadCommand.init(_globalZOrder, _texture->getName(), _shaderProgram, _blendFunc, &_quad, 1, _modelViewTransform);
// if(culling()) // if(culling())
{ {
@ -769,13 +769,8 @@ void Sprite::addChild(Node *child, int zOrder, int tag)
void Sprite::reorderChild(Node *child, int zOrder) void Sprite::reorderChild(Node *child, int zOrder)
{ {
CCASSERT(child != nullptr, ""); CCASSERT(child != nullptr, "child must be non null");
CCASSERT(_children.contains(child), ""); CCASSERT(_children.contains(child), "child does not belong to this");
if (zOrder == child->getZOrder())
{
return;
}
if( _batchNode && ! _reorderChildDirty) if( _batchNode && ! _reorderChildDirty)
{ {

View File

@ -357,7 +357,7 @@ void SpriteBatchNode::draw()
child->updateTransform(); child->updateTransform();
_batchCommand.init( _batchCommand.init(
_vertexZ, _globalZOrder,
_textureAtlas->getTexture()->getName(), _textureAtlas->getTexture()->getName(),
_shaderProgram, _shaderProgram,
_blendFunc, _blendFunc,

View File

@ -98,23 +98,23 @@ void TransitionPageTurn::draw()
if( _isInSceneOnTop ) { if( _isInSceneOnTop ) {
_outSceneProxy->visit(); _outSceneProxy->visit();
_enableOffsetCmd.init(_vertexZ); _enableOffsetCmd.init(_globalZOrder);
_enableOffsetCmd.func = CC_CALLBACK_0(TransitionPageTurn::onEnablePolygonOffset, this); _enableOffsetCmd.func = CC_CALLBACK_0(TransitionPageTurn::onEnablePolygonOffset, this);
Director::getInstance()->getRenderer()->addCommand(&_enableOffsetCmd); Director::getInstance()->getRenderer()->addCommand(&_enableOffsetCmd);
_inSceneProxy->visit(); _inSceneProxy->visit();
_disableOffsetCmd.init(_vertexZ); _disableOffsetCmd.init(_globalZOrder);
_disableOffsetCmd.func = CC_CALLBACK_0(TransitionPageTurn::onDisablePolygonOffset, this); _disableOffsetCmd.func = CC_CALLBACK_0(TransitionPageTurn::onDisablePolygonOffset, this);
Director::getInstance()->getRenderer()->addCommand(&_disableOffsetCmd); Director::getInstance()->getRenderer()->addCommand(&_disableOffsetCmd);
} else { } else {
_inSceneProxy->visit(); _inSceneProxy->visit();
_enableOffsetCmd.init(_vertexZ); _enableOffsetCmd.init(_globalZOrder);
_enableOffsetCmd.func = CC_CALLBACK_0(TransitionPageTurn::onEnablePolygonOffset, this); _enableOffsetCmd.func = CC_CALLBACK_0(TransitionPageTurn::onEnablePolygonOffset, this);
Director::getInstance()->getRenderer()->addCommand(&_enableOffsetCmd); Director::getInstance()->getRenderer()->addCommand(&_enableOffsetCmd);
_outSceneProxy->visit(); _outSceneProxy->visit();
_disableOffsetCmd.init(_vertexZ); _disableOffsetCmd.init(_globalZOrder);
_disableOffsetCmd.func = CC_CALLBACK_0(TransitionPageTurn::onDisablePolygonOffset, this); _disableOffsetCmd.func = CC_CALLBACK_0(TransitionPageTurn::onDisablePolygonOffset, this);
Director::getInstance()->getRenderer()->addCommand(&_disableOffsetCmd); Director::getInstance()->getRenderer()->addCommand(&_disableOffsetCmd);
} }

View File

@ -38,9 +38,9 @@ BatchCommand::BatchCommand()
_shader = nullptr; _shader = nullptr;
} }
void BatchCommand::init(float depth, GLuint textureID, GLProgram* shader, BlendFunc blendType, TextureAtlas *textureAtlas, const kmMat4& modelViewTransform) void BatchCommand::init(float globalOrder, GLuint textureID, GLProgram* shader, BlendFunc blendType, TextureAtlas *textureAtlas, const kmMat4& modelViewTransform)
{ {
_depth = depth; _globalOrder = globalOrder;
_textureID = textureID; _textureID = textureID;
_blendType = blendType; _blendType = blendType;
_shader = shader; _shader = shader;
@ -54,7 +54,7 @@ BatchCommand::~BatchCommand()
{ {
} }
void BatchCommand::execute() const void BatchCommand::execute()
{ {
// Set material // Set material
_shader->use(); _shader->use();

View File

@ -45,7 +45,7 @@ public:
void init(float depth, GLuint texutreID, GLProgram* shader, BlendFunc blendType, TextureAtlas *textureAtlas, const kmMat4& modelViewTransform); void init(float depth, GLuint texutreID, GLProgram* shader, BlendFunc blendType, TextureAtlas *textureAtlas, const kmMat4& modelViewTransform);
void execute() const; void execute();
protected: protected:
int32_t _materialID; int32_t _materialID;

View File

@ -32,9 +32,9 @@ CustomCommand::CustomCommand()
_type = RenderCommand::Type::CUSTOM_COMMAND; _type = RenderCommand::Type::CUSTOM_COMMAND;
} }
void CustomCommand::init(float depth) void CustomCommand::init(float globalOrder)
{ {
_depth = depth; _globalOrder = globalOrder;
} }
CustomCommand::~CustomCommand() CustomCommand::~CustomCommand()
@ -42,7 +42,7 @@ CustomCommand::~CustomCommand()
} }
void CustomCommand::execute() const void CustomCommand::execute()
{ {
if(func) if(func)
{ {

View File

@ -41,7 +41,7 @@ public:
void init(float depth); void init(float depth);
void execute() const; void execute();
inline bool isTranslucent() { return true; } inline bool isTranslucent() { return true; }
std::function<void()> func; std::function<void()> func;

View File

@ -91,9 +91,9 @@ GroupCommand::GroupCommand()
_renderQueueID = GroupCommandManager::getInstance()->getGroupID(); _renderQueueID = GroupCommandManager::getInstance()->getGroupID();
} }
void GroupCommand::init(float depth) void GroupCommand::init(float globalOrder)
{ {
_depth = depth; _globalOrder = globalOrder;
GroupCommandManager::getInstance()->releaseGroupID(_renderQueueID); GroupCommandManager::getInstance()->releaseGroupID(_renderQueueID);
_renderQueueID = GroupCommandManager::getInstance()->getGroupID(); _renderQueueID = GroupCommandManager::getInstance()->getGroupID();
} }

View File

@ -38,9 +38,9 @@ QuadCommand::QuadCommand()
_quads = nullptr; _quads = nullptr;
} }
void QuadCommand::init(float depth, GLuint textureID, GLProgram* shader, BlendFunc blendType, V3F_C4B_T2F_Quad* quad, ssize_t quadCount, const kmMat4 &mv) void QuadCommand::init(float globalOrder, GLuint textureID, GLProgram* shader, BlendFunc blendType, V3F_C4B_T2F_Quad* quad, ssize_t quadCount, const kmMat4 &mv)
{ {
_depth = depth; _globalOrder = globalOrder;
_textureID = textureID; _textureID = textureID;
_blendType = blendType; _blendType = blendType;
_shader = shader; _shader = shader;

View File

@ -29,7 +29,7 @@ NS_CC_BEGIN
RenderCommand::RenderCommand() RenderCommand::RenderCommand()
: _type(RenderCommand::Type::UNKNOWN_COMMAND) : _type(RenderCommand::Type::UNKNOWN_COMMAND)
, _depth(0) , _globalOrder(0)
{ {
} }
@ -57,7 +57,7 @@ void printBits(ssize_t const size, void const * const ptr)
void RenderCommand::printID() void RenderCommand::printID()
{ {
printf("Command Depth: %f\n", _depth); printf("Command Depth: %f\n", _globalOrder);
} }
NS_CC_END NS_CC_END

View File

@ -50,7 +50,7 @@ public:
}; };
/** Get Render Command Id */ /** Get Render Command Id */
inline float getDepth() const { return _depth; } inline float getGlobalOrder() const { return _globalOrder; }
/** Returns the Command type */ /** Returns the Command type */
inline Type getType() const { return _type; } inline Type getType() const { return _type; }
@ -65,7 +65,7 @@ protected:
Type _type; Type _type;
// commands are sort by depth // commands are sort by depth
float _depth; float _globalOrder;
}; };
NS_CC_END NS_CC_END

View File

@ -34,21 +34,21 @@
#include "CCEventDispatcher.h" #include "CCEventDispatcher.h"
#include "CCEventListenerCustom.h" #include "CCEventListenerCustom.h"
#include "CCEventType.h" #include "CCEventType.h"
#include <algorithm> // for std::stable_sort #include <algorithm>
NS_CC_BEGIN NS_CC_BEGIN
bool compareRenderCommand(RenderCommand* a, RenderCommand* b) bool compareRenderCommand(RenderCommand* a, RenderCommand* b)
{ {
return a->getDepth() < b->getDepth(); return a->getGlobalOrder() < b->getGlobalOrder();
} }
void RenderQueue::push_back(RenderCommand* command) void RenderQueue::push_back(RenderCommand* command)
{ {
float z = command->getDepth(); float z = command->getGlobalOrder();
if(z < 0) if(z < 0)
_queueNegZ.push_back(command); _queueNegZ.push_back(command);
if(z > 0) else if(z > 0)
_queuePosZ.push_back(command); _queuePosZ.push_back(command);
else else
_queue0.push_back(command); _queue0.push_back(command);
@ -66,7 +66,7 @@ void RenderQueue::sort()
std::sort(std::begin(_queuePosZ), std::end(_queuePosZ), compareRenderCommand); std::sort(std::begin(_queuePosZ), std::end(_queuePosZ), compareRenderCommand);
} }
const RenderCommand* RenderQueue::operator[](ssize_t index) const RenderCommand* RenderQueue::operator[](ssize_t index) const
{ {
if(index < _queueNegZ.size()) if(index < _queueNegZ.size())
return _queueNegZ[index]; return _queueNegZ[index];
@ -295,7 +295,7 @@ void Renderer::render()
if(commandType == RenderCommand::Type::QUAD_COMMAND) if(commandType == RenderCommand::Type::QUAD_COMMAND)
{ {
auto cmd = static_cast<const QuadCommand*>(command); auto cmd = static_cast<QuadCommand*>(command);
ssize_t cmdQuadCount = cmd->getQuadCount(); ssize_t cmdQuadCount = cmd->getQuadCount();
//Batch quads //Batch quads
@ -317,19 +317,19 @@ void Renderer::render()
else if(commandType == RenderCommand::Type::CUSTOM_COMMAND) else if(commandType == RenderCommand::Type::CUSTOM_COMMAND)
{ {
flush(); flush();
auto cmd = static_cast<const CustomCommand*>(command); auto cmd = static_cast<CustomCommand*>(command);
cmd->execute(); cmd->execute();
} }
else if(commandType == RenderCommand::Type::BATCH_COMMAND) else if(commandType == RenderCommand::Type::BATCH_COMMAND)
{ {
flush(); flush();
auto cmd = static_cast<const BatchCommand*>(command); auto cmd = static_cast<BatchCommand*>(command);
cmd->execute(); cmd->execute();
} }
else if(commandType == RenderCommand::Type::GROUP_COMMAND) else if(commandType == RenderCommand::Type::GROUP_COMMAND)
{ {
flush(); flush();
auto cmd = static_cast<const GroupCommand*>(command); auto cmd = static_cast<GroupCommand*>(command);
_renderStack.top().currentIndex = i + 1; _renderStack.top().currentIndex = i + 1;
@ -467,7 +467,7 @@ void Renderer::drawBatchedQuads()
auto command = _renderGroups[_renderStack.top().renderQueueID][i]; auto command = _renderGroups[_renderStack.top().renderQueueID][i];
if (command->getType() == RenderCommand::Type::QUAD_COMMAND) if (command->getType() == RenderCommand::Type::QUAD_COMMAND)
{ {
auto cmd = static_cast<const QuadCommand*>(command); auto cmd = static_cast<QuadCommand*>(command);
if(_lastMaterialID != cmd->getMaterialID()) if(_lastMaterialID != cmd->getMaterialID())
{ {
//Draw quads //Draw quads

View File

@ -49,7 +49,7 @@ public:
void push_back(RenderCommand* command); void push_back(RenderCommand* command);
ssize_t size() const; ssize_t size() const;
void sort(); void sort();
const RenderCommand* operator[](ssize_t index) const; RenderCommand* operator[](ssize_t index) const;
void clear(); void clear();
protected: protected:

View File

@ -156,7 +156,7 @@ void BatchNode::draw()
void BatchNode::generateGroupCommand() void BatchNode::generateGroupCommand()
{ {
Renderer* renderer = Director::getInstance()->getRenderer(); Renderer* renderer = Director::getInstance()->getRenderer();
_groupCommand->init(_vertexZ); _groupCommand->init(_globalZOrder);
renderer->addCommand(_groupCommand); renderer->addCommand(_groupCommand);
renderer->pushGroup(_groupCommand->getRenderQueueID()); renderer->pushGroup(_groupCommand->getRenderQueueID());

View File

@ -145,7 +145,7 @@ void Bone::setBoneData(BoneData *boneData)
} }
_name = _boneData->name; _name = _boneData->name;
_ZOrder = _boneData->zOrder; _localZOrder = _boneData->zOrder;
_displayManager->initDisplayList(boneData); _displayManager->initDisplayList(boneData);
} }
@ -283,11 +283,11 @@ void Bone::updateZOrder()
if (_dataVersion >= VERSION_COMBINED) if (_dataVersion >= VERSION_COMBINED)
{ {
int zorder = _tweenData->zOrder + _boneData->zOrder; int zorder = _tweenData->zOrder + _boneData->zOrder;
setZOrder(zorder); setLocalZOrder(zorder);
} }
else else
{ {
setZOrder(_tweenData->zOrder); setLocalZOrder(_tweenData->zOrder);
} }
} }
@ -374,10 +374,10 @@ Tween *Bone::getTween()
return _tween; return _tween;
} }
void Bone::setZOrder(int zOrder) void Bone::setLocalZOrder(int zOrder)
{ {
if (_ZOrder != zOrder) if (_localZOrder != zOrder)
Node::setZOrder(zOrder); Node::setLocalZOrder(zOrder);
} }
kmMat4 Bone::getNodeToArmatureTransform() const kmMat4 Bone::getNodeToArmatureTransform() const

View File

@ -143,7 +143,7 @@ public:
//! Update zorder //! Update zorder
void updateZOrder(); void updateZOrder();
virtual void setZOrder(int zOrder) override; virtual void setLocalZOrder(int zOrder) override;
Tween *getTween(); Tween *getTween();

View File

@ -331,7 +331,7 @@ void WidgetPropertiesReader0250::setPropsForWidgetFromJsonDictionary(Widget*widg
widget->setVisible(DICTOOL->getBooleanValue_json(options, "visible")); widget->setVisible(DICTOOL->getBooleanValue_json(options, "visible"));
} }
int z = DICTOOL->getIntValue_json(options, "ZOrder"); int z = DICTOOL->getIntValue_json(options, "ZOrder");
widget->setZOrder(z); widget->setLocalZOrder(z);
} }
void WidgetPropertiesReader0250::setColorPropsForWidgetFromJsonDictionary(Widget *widget, const rapidjson::Value&options) void WidgetPropertiesReader0250::setColorPropsForWidgetFromJsonDictionary(Widget *widget, const rapidjson::Value&options)
@ -1062,7 +1062,7 @@ void WidgetPropertiesReader0300::setPropsForWidgetFromJsonDictionary(Widget*widg
widget->setVisible(DICTOOL->getBooleanValue_json(options, "visible")); widget->setVisible(DICTOOL->getBooleanValue_json(options, "visible"));
} }
int z = DICTOOL->getIntValue_json(options, "ZOrder"); int z = DICTOOL->getIntValue_json(options, "ZOrder");
widget->setZOrder(z); widget->setLocalZOrder(z);
bool layout = DICTOOL->checkObjectExist_json(options, "layoutParameter"); bool layout = DICTOOL->checkObjectExist_json(options, "layoutParameter");
if (layout) if (layout)

View File

@ -203,7 +203,7 @@ void SceneReader::setPropertyFromJsonDict(const rapidjson::Value &root, cocos2d:
node->setTag(nTag); node->setTag(nTag);
int nZorder = DICTOOL->getIntValue_json(root, "zorder"); int nZorder = DICTOOL->getIntValue_json(root, "zorder");
node->setZOrder(nZorder); node->setLocalZOrder(nZorder);
float fScaleX = DICTOOL->getFloatValue_json(root, "scalex", 1.0); float fScaleX = DICTOOL->getFloatValue_json(root, "scalex", 1.0);
float fScaleY = DICTOOL->getFloatValue_json(root, "scaley", 1.0); float fScaleY = DICTOOL->getFloatValue_json(root, "scaley", 1.0);

View File

@ -225,7 +225,7 @@ void Skin::draw()
kmGLGetMatrix(KM_GL_MODELVIEW, &mv); kmGLGetMatrix(KM_GL_MODELVIEW, &mv);
//TODO implement z order //TODO implement z order
_quadCommand.init(_vertexZ, _texture->getName(), _shaderProgram, _blendFunc, &_quad, 1, mv); _quadCommand.init(_globalZOrder, _texture->getName(), _shaderProgram, _blendFunc, &_quad, 1, mv);
Director::getInstance()->getRenderer()->addCommand(&_quadCommand); Director::getInstance()->getRenderer()->addCommand(&_quadCommand);
} }

View File

@ -131,7 +131,7 @@ void Skeleton::draw()
kmGLMatrixMode(KM_GL_MODELVIEW); kmGLMatrixMode(KM_GL_MODELVIEW);
kmGLGetMatrix(KM_GL_MODELVIEW, &_oldTransMatrix); kmGLGetMatrix(KM_GL_MODELVIEW, &_oldTransMatrix);
_customCommand.init(_vertexZ); _customCommand.init(_globalZOrder);
_customCommand.func = CC_CALLBACK_0(Skeleton::onDraw, this); _customCommand.func = CC_CALLBACK_0(Skeleton::onDraw, this);
Director::getInstance()->getRenderer()->addCommand(&_customCommand); Director::getInstance()->getRenderer()->addCommand(&_customCommand);
} }

View File

@ -210,18 +210,18 @@ void Layout::stencilClippingVisit()
Renderer* renderer = Director::getInstance()->getRenderer(); Renderer* renderer = Director::getInstance()->getRenderer();
_groupCommand.init(_vertexZ); _groupCommand.init(_globalZOrder);
renderer->addCommand(&_groupCommand); renderer->addCommand(&_groupCommand);
renderer->pushGroup(_groupCommand.getRenderQueueID()); renderer->pushGroup(_groupCommand.getRenderQueueID());
_beforeVisitCmdStencil.init(_vertexZ); _beforeVisitCmdStencil.init(_globalZOrder);
_beforeVisitCmdStencil.func = CC_CALLBACK_0(Layout::onBeforeVisitStencil, this); _beforeVisitCmdStencil.func = CC_CALLBACK_0(Layout::onBeforeVisitStencil, this);
renderer->addCommand(&_beforeVisitCmdStencil); renderer->addCommand(&_beforeVisitCmdStencil);
_clippingStencil->visit(); _clippingStencil->visit();
_afterDrawStencilCmd.init(_vertexZ); _afterDrawStencilCmd.init(_globalZOrder);
_afterDrawStencilCmd.func = CC_CALLBACK_0(Layout::onAfterDrawStencil, this); _afterDrawStencilCmd.func = CC_CALLBACK_0(Layout::onAfterDrawStencil, this);
renderer->addCommand(&_afterDrawStencilCmd); renderer->addCommand(&_afterDrawStencilCmd);
@ -251,7 +251,7 @@ void Layout::stencilClippingVisit()
this->draw(); this->draw();
} }
_afterVisitCmdStencil.init(_vertexZ); _afterVisitCmdStencil.init(_globalZOrder);
_afterVisitCmdStencil.func = CC_CALLBACK_0(Layout::onAfterVisitStencil, this); _afterVisitCmdStencil.func = CC_CALLBACK_0(Layout::onAfterVisitStencil, this);
renderer->addCommand(&_afterVisitCmdStencil); renderer->addCommand(&_afterVisitCmdStencil);
@ -336,13 +336,13 @@ void Layout::scissorClippingVisit()
{ {
Renderer* renderer = Director::getInstance()->getRenderer(); Renderer* renderer = Director::getInstance()->getRenderer();
_beforeVisitCmdScissor.init(_vertexZ); _beforeVisitCmdScissor.init(_globalZOrder);
_beforeVisitCmdScissor.func = CC_CALLBACK_0(Layout::onBeforeVisitScissor, this); _beforeVisitCmdScissor.func = CC_CALLBACK_0(Layout::onBeforeVisitScissor, this);
renderer->addCommand(&_beforeVisitCmdScissor); renderer->addCommand(&_beforeVisitCmdScissor);
Node::visit(); Node::visit();
_afterVisitCmdScissor.init(_vertexZ); _afterVisitCmdScissor.init(_globalZOrder);
_afterVisitCmdScissor.func = CC_CALLBACK_0(Layout::onAfterVisitScissor, this); _afterVisitCmdScissor.func = CC_CALLBACK_0(Layout::onAfterVisitScissor, this);
renderer->addCommand(&_afterVisitCmdScissor); renderer->addCommand(&_afterVisitCmdScissor);
} }
@ -651,14 +651,14 @@ void Layout::addBackGroundImage()
if (_backGroundScale9Enabled) if (_backGroundScale9Enabled)
{ {
_backGroundImage = extension::Scale9Sprite::create(); _backGroundImage = extension::Scale9Sprite::create();
_backGroundImage->setZOrder(-1); _backGroundImage->setLocalZOrder(-1);
Node::addChild(_backGroundImage, BACKGROUNDIMAGE_Z, -1); Node::addChild(_backGroundImage, BACKGROUNDIMAGE_Z, -1);
static_cast<extension::Scale9Sprite*>(_backGroundImage)->setPreferredSize(_size); static_cast<extension::Scale9Sprite*>(_backGroundImage)->setPreferredSize(_size);
} }
else else
{ {
_backGroundImage = Sprite::create(); _backGroundImage = Sprite::create();
_backGroundImage->setZOrder(-1); _backGroundImage->setLocalZOrder(-1);
Node::addChild(_backGroundImage, BACKGROUNDIMAGE_Z, -1); Node::addChild(_backGroundImage, BACKGROUNDIMAGE_Z, -1);
} }
_backGroundImage->setPosition(Point(_size.width/2.0f, _size.height/2.0f)); _backGroundImage->setPosition(Point(_size.width/2.0f, _size.height/2.0f));

View File

@ -195,7 +195,7 @@ public:
* If the child is added to a 'running' node, then 'onEnter' and 'onEnterTransitionDidFinish' will be called immediately. * If the child is added to a 'running' node, then 'onEnter' and 'onEnterTransitionDidFinish' will be called immediately.
* *
* @param child A child node * @param child A child node
* @param zOrder Z order for drawing priority. Please refer to setZOrder(int) * @param zOrder Z order for drawing priority. Please refer to setLocalZOrder(int)
*/ */
virtual void addChild(Node * child, int zOrder) override; virtual void addChild(Node * child, int zOrder) override;
/** /**
@ -204,7 +204,7 @@ public:
* If the child is added to a 'running' node, then 'onEnter' and 'onEnterTransitionDidFinish' will be called immediately. * If the child is added to a 'running' node, then 'onEnter' and 'onEnterTransitionDidFinish' will be called immediately.
* *
* @param child A child node * @param child A child node
* @param zOrder Z order for drawing priority. Please refer to setZOrder(int) * @param zOrder Z order for drawing priority. Please refer to setLocalZOrder(int)
* @param tag A interger to identify the node easily. Please refer to setTag(int) * @param tag A interger to identify the node easily. Please refer to setTag(int)
*/ */
virtual void addChild(Node* child, int zOrder, int tag) override; virtual void addChild(Node* child, int zOrder, int tag) override;

View File

@ -378,7 +378,7 @@ void ListView::refreshView()
for (int i=0; i<length; i++) for (int i=0; i<length; i++)
{ {
Widget* item = _items.at(i); Widget* item = _items.at(i);
item->setZOrder(i); item->setLocalZOrder(i);
remedyLayoutParameter(item); remedyLayoutParameter(item);
} }
updateInnerContainerSize(); updateInnerContainerSize();

View File

@ -242,7 +242,7 @@ public:
* If the child is added to a 'running' node, then 'onEnter' and 'onEnterTransitionDidFinish' will be called immediately. * If the child is added to a 'running' node, then 'onEnter' and 'onEnterTransitionDidFinish' will be called immediately.
* *
* @param child A child node * @param child A child node
* @param zOrder Z order for drawing priority. Please refer to setZOrder(int) * @param zOrder Z order for drawing priority. Please refer to setLocalZOrder(int)
*/ */
virtual void addChild(Node * child, int zOrder) override; virtual void addChild(Node * child, int zOrder) override;
/** /**
@ -251,7 +251,7 @@ public:
* If the child is added to a 'running' node, then 'onEnter' and 'onEnterTransitionDidFinish' will be called immediately. * If the child is added to a 'running' node, then 'onEnter' and 'onEnterTransitionDidFinish' will be called immediately.
* *
* @param child A child node * @param child A child node
* @param zOrder Z order for drawing priority. Please refer to setZOrder(int) * @param zOrder Z order for drawing priority. Please refer to setLocalZOrder(int)
* @param tag A interger to identify the node easily. Please refer to setTag(int) * @param tag A interger to identify the node easily. Please refer to setTag(int)
*/ */
virtual void addChild(Node* child, int zOrder, int tag) override; virtual void addChild(Node* child, int zOrder, int tag) override;

View File

@ -1040,7 +1040,7 @@ void Widget::copyProperties(Widget *widget)
setBright(widget->isBright()); setBright(widget->isBright());
setTouchEnabled(widget->isTouchEnabled()); setTouchEnabled(widget->isTouchEnabled());
_touchPassedEnabled = false; _touchPassedEnabled = false;
setZOrder(widget->getZOrder()); setLocalZOrder(widget->getLocalZOrder());
setTag(widget->getTag()); setTag(widget->getTag());
setName(widget->getName()); setName(widget->getName());
setActionTag(widget->getActionTag()); setActionTag(widget->getActionTag());

View File

@ -212,7 +212,7 @@ public:
* If the child is added to a 'running' node, then 'onEnter' and 'onEnterTransitionDidFinish' will be called immediately. * If the child is added to a 'running' node, then 'onEnter' and 'onEnterTransitionDidFinish' will be called immediately.
* *
* @param child A child node * @param child A child node
* @param zOrder Z order for drawing priority. Please refer to setZOrder(int) * @param zOrder Z order for drawing priority. Please refer to setLocalZOrder(int)
*/ */
virtual void addChild(Node * child, int zOrder) override; virtual void addChild(Node * child, int zOrder) override;
/** /**
@ -221,7 +221,7 @@ public:
* If the child is added to a 'running' node, then 'onEnter' and 'onEnterTransitionDidFinish' will be called immediately. * If the child is added to a 'running' node, then 'onEnter' and 'onEnterTransitionDidFinish' will be called immediately.
* *
* @param child A child node * @param child A child node
* @param zOrder Z order for drawing priority. Please refer to setZOrder(int) * @param zOrder Z order for drawing priority. Please refer to setLocalZOrder(int)
* @param tag A interger to identify the node easily. Please refer to setTag(int) * @param tag A interger to identify the node easily. Please refer to setTag(int)
*/ */
virtual void addChild(Node* child, int zOrder, int tag) override; virtual void addChild(Node* child, int zOrder, int tag) override;

View File

@ -494,7 +494,7 @@ void ScrollView::addChild(Node * child, int zOrder, int tag)
void ScrollView::beforeDraw() void ScrollView::beforeDraw()
{ {
_beforeDrawCommand.init(_vertexZ); _beforeDrawCommand.init(_globalZOrder);
_beforeDrawCommand.func = CC_CALLBACK_0(ScrollView::onBeforeDraw, this); _beforeDrawCommand.func = CC_CALLBACK_0(ScrollView::onBeforeDraw, this);
Director::getInstance()->getRenderer()->addCommand(&_beforeDrawCommand); Director::getInstance()->getRenderer()->addCommand(&_beforeDrawCommand);
} }
@ -529,7 +529,7 @@ void ScrollView::onBeforeDraw()
void ScrollView::afterDraw() void ScrollView::afterDraw()
{ {
_afterDrawCommand.init(_vertexZ); _afterDrawCommand.init(_globalZOrder);
_afterDrawCommand.func = CC_CALLBACK_0(ScrollView::onAfterDraw, this); _afterDrawCommand.func = CC_CALLBACK_0(ScrollView::onAfterDraw, this);
Director::getInstance()->getRenderer()->addCommand(&_afterDrawCommand); Director::getInstance()->getRenderer()->addCommand(&_afterDrawCommand);
} }

View File

@ -1314,7 +1314,7 @@ void ActionFollow::onEnter()
void ActionFollow::draw() void ActionFollow::draw()
{ {
_customCommand.init(_vertexZ); _customCommand.init(_globalZOrder);
_customCommand.func = CC_CALLBACK_0(ActionFollow::onDraw, this); _customCommand.func = CC_CALLBACK_0(ActionFollow::onDraw, this);
Director::getInstance()->getRenderer()->addCommand(&_customCommand); Director::getInstance()->getRenderer()->addCommand(&_customCommand);
@ -1630,7 +1630,7 @@ void ActionCatmullRomStacked::draw()
kmGLPopMatrix(); kmGLPopMatrix();
kmGLGetMatrix(KM_GL_MODELVIEW, &_modelViewMV2); kmGLGetMatrix(KM_GL_MODELVIEW, &_modelViewMV2);
_customCommand.init(_vertexZ); _customCommand.init(_globalZOrder);
_customCommand.func = CC_CALLBACK_0(ActionCatmullRomStacked::onDraw, this); _customCommand.func = CC_CALLBACK_0(ActionCatmullRomStacked::onDraw, this);
Director::getInstance()->getRenderer()->addCommand(&_customCommand); Director::getInstance()->getRenderer()->addCommand(&_customCommand);
} }
@ -1745,7 +1745,7 @@ void ActionCardinalSplineStacked::draw()
kmGLGetMatrix(KM_GL_MODELVIEW, &_modelViewMV2); kmGLGetMatrix(KM_GL_MODELVIEW, &_modelViewMV2);
kmGLPopMatrix(); kmGLPopMatrix();
_customCommand.init(_vertexZ); _customCommand.init(_globalZOrder);
_customCommand.func = CC_CALLBACK_0(ActionCardinalSplineStacked::onDraw, this); _customCommand.func = CC_CALLBACK_0(ActionCardinalSplineStacked::onDraw, this);
Director::getInstance()->getRenderer()->addCommand(&_customCommand); Director::getInstance()->getRenderer()->addCommand(&_customCommand);
} }
@ -2107,7 +2107,7 @@ void ActionCatmullRom::draw()
kmGLPopMatrix(); kmGLPopMatrix();
kmGLGetMatrix(KM_GL_MODELVIEW, &_modelViewMV2); kmGLGetMatrix(KM_GL_MODELVIEW, &_modelViewMV2);
_customCommand.init(_vertexZ); _customCommand.init(_globalZOrder);
_customCommand.func = CC_CALLBACK_0(ActionCatmullRom::onDraw, this); _customCommand.func = CC_CALLBACK_0(ActionCatmullRom::onDraw, this);
Director::getInstance()->getRenderer()->addCommand(&_customCommand); Director::getInstance()->getRenderer()->addCommand(&_customCommand);
} }
@ -2207,7 +2207,7 @@ void ActionCardinalSpline::draw()
kmGLGetMatrix(KM_GL_MODELVIEW, &_modelViewMV2); kmGLGetMatrix(KM_GL_MODELVIEW, &_modelViewMV2);
kmGLPopMatrix(); kmGLPopMatrix();
_customCommand.init(_vertexZ); _customCommand.init(_globalZOrder);
_customCommand.func = CC_CALLBACK_0(ActionCardinalSpline::onDraw, this); _customCommand.func = CC_CALLBACK_0(ActionCardinalSpline::onDraw, this);
Director::getInstance()->getRenderer()->addCommand(&_customCommand); Director::getInstance()->getRenderer()->addCommand(&_customCommand);
} }

View File

@ -149,7 +149,7 @@ void Box2DTestLayer::draw()
kmGLPushMatrix(); kmGLPushMatrix();
kmGLGetMatrix(KM_GL_MODELVIEW, &_modelViewMV); kmGLGetMatrix(KM_GL_MODELVIEW, &_modelViewMV);
_customCommand.init(0, _vertexZ); _customCommand.init(_globalZOrder);
_customCommand.func = CC_CALLBACK_0(Box2DTestLayer::onDraw, this); _customCommand.func = CC_CALLBACK_0(Box2DTestLayer::onDraw, this);
Director::getInstance()->getRenderer()->addCommand(&_customCommand); Director::getInstance()->getRenderer()->addCommand(&_customCommand);

View File

@ -211,7 +211,7 @@ void Box2DView::draw()
{ {
Layer::draw(); Layer::draw();
_customCmd.init(_vertexZ); _customCmd.init(_globalZOrder);
_customCmd.func = CC_CALLBACK_0(Box2DView::onDraw, this); _customCmd.func = CC_CALLBACK_0(Box2DView::onDraw, this);
Director::getInstance()->getRenderer()->addCommand(&_customCmd); Director::getInstance()->getRenderer()->addCommand(&_customCmd);
} }

View File

@ -611,7 +611,7 @@ void RawStencilBufferTest::draw()
auto iter = _renderCmds.begin(); auto iter = _renderCmds.begin();
iter->init(_vertexZ); iter->init(_globalZOrder);
iter->func = CC_CALLBACK_0(RawStencilBufferTest::onEnableStencil, this); iter->func = CC_CALLBACK_0(RawStencilBufferTest::onEnableStencil, this);
renderer->addCommand(&(*iter)); renderer->addCommand(&(*iter));
++iter; ++iter;
@ -628,7 +628,7 @@ void RawStencilBufferTest::draw()
spritePoint.y = 0; spritePoint.y = 0;
_sprites.at(i)->setPosition( spritePoint ); _sprites.at(i)->setPosition( spritePoint );
iter->init(_vertexZ); iter->init(_globalZOrder);
iter->func = CC_CALLBACK_0(RawStencilBufferTest::onBeforeDrawClip, this, i, stencilPoint); iter->func = CC_CALLBACK_0(RawStencilBufferTest::onBeforeDrawClip, this, i, stencilPoint);
renderer->addCommand(&(*iter)); renderer->addCommand(&(*iter));
++iter; ++iter;
@ -638,7 +638,7 @@ void RawStencilBufferTest::draw()
_sprites.at(i)->visit(); _sprites.at(i)->visit();
kmGLPopMatrix(); kmGLPopMatrix();
iter->init(_vertexZ); iter->init(_globalZOrder);
iter->func = CC_CALLBACK_0(RawStencilBufferTest::onBeforeDrawSprite, this, i, winPoint); iter->func = CC_CALLBACK_0(RawStencilBufferTest::onBeforeDrawSprite, this, i, winPoint);
renderer->addCommand(&(*iter)); renderer->addCommand(&(*iter));
++iter; ++iter;
@ -649,7 +649,7 @@ void RawStencilBufferTest::draw()
kmGLPopMatrix(); kmGLPopMatrix();
} }
iter->init(_vertexZ); iter->init(_globalZOrder);
iter->func = CC_CALLBACK_0(RawStencilBufferTest::onDisableStencil, this); iter->func = CC_CALLBACK_0(RawStencilBufferTest::onDisableStencil, this);
renderer->addCommand(&(*iter)); renderer->addCommand(&(*iter));

View File

@ -116,7 +116,7 @@ DrawPrimitivesTest::DrawPrimitivesTest()
void DrawPrimitivesTest::draw() void DrawPrimitivesTest::draw()
{ {
_customCommand.init(_vertexZ); _customCommand.init(_globalZOrder);
_customCommand.func = CC_CALLBACK_0(DrawPrimitivesTest::onDraw, this); _customCommand.func = CC_CALLBACK_0(DrawPrimitivesTest::onDraw, this);
Director::getInstance()->getRenderer()->addCommand(&_customCommand); Director::getInstance()->getRenderer()->addCommand(&_customCommand);
} }

View File

@ -503,7 +503,7 @@ void TestChangeZorder::changeZorder(float dt)
Node *node = getChildByTag(currentTag); Node *node = getChildByTag(currentTag);
node->setZOrder(CCRANDOM_0_1() * 3); node->setLocalZOrder(CCRANDOM_0_1() * 3);
currentTag ++; currentTag ++;
currentTag = currentTag % 3; currentTag = currentTag % 3;
@ -637,7 +637,7 @@ void TestParticleDisplay::onEnter()
bone->addDisplay(p1, 0); bone->addDisplay(p1, 0);
bone->changeDisplayWithIndex(0, true); bone->changeDisplayWithIndex(0, true);
bone->setIgnoreMovementBoneData(true); bone->setIgnoreMovementBoneData(true);
bone->setZOrder(100); bone->setLocalZOrder(100);
bone->setScale(1.2f); bone->setScale(1.2f);
armature->addBone(bone, "bady-a3"); armature->addBone(bone, "bady-a3");
@ -645,7 +645,7 @@ void TestParticleDisplay::onEnter()
bone->addDisplay(p2, 0); bone->addDisplay(p2, 0);
bone->changeDisplayWithIndex(0, true); bone->changeDisplayWithIndex(0, true);
bone->setIgnoreMovementBoneData(true); bone->setIgnoreMovementBoneData(true);
bone->setZOrder(100); bone->setLocalZOrder(100);
bone->setScale(1.2f); bone->setScale(1.2f);
armature->addBone(bone, "bady-a30"); armature->addBone(bone, "bady-a30");
} }
@ -1067,7 +1067,7 @@ void TestColliderDetector::update(float delta)
} }
void TestColliderDetector::draw() void TestColliderDetector::draw()
{ {
_customCommand.init(_vertexZ); _customCommand.init(_globalZOrder);
_customCommand.func = CC_CALLBACK_0(TestColliderDetector::onDraw, this); _customCommand.func = CC_CALLBACK_0(TestColliderDetector::onDraw, this);
Director::getInstance()->getRenderer()->addCommand(&_customCommand); Director::getInstance()->getRenderer()->addCommand(&_customCommand);
} }
@ -1108,7 +1108,7 @@ std::string TestBoundingBox::title() const
} }
void TestBoundingBox::draw() void TestBoundingBox::draw()
{ {
_customCommand.init(_vertexZ); _customCommand.init(_globalZOrder);
_customCommand.func = CC_CALLBACK_0(TestBoundingBox::onDraw, this); _customCommand.func = CC_CALLBACK_0(TestBoundingBox::onDraw, this);
Director::getInstance()->getRenderer()->addCommand(&_customCommand); Director::getInstance()->getRenderer()->addCommand(&_customCommand);

View File

@ -56,7 +56,7 @@ bool UIImageViewTest::init()
_uiLayer->addChild(sprite); _uiLayer->addChild(sprite);
*/ */
// imageView->setZOrder(20); // imageView->setLocalZOrder(20);
return true; return true;
} }

View File

@ -210,7 +210,7 @@ void Atlas1::draw()
// GL_VERTEX_ARRAY, GL_COLOR_ARRAY, GL_TEXTURE_COORD_ARRAY // GL_VERTEX_ARRAY, GL_COLOR_ARRAY, GL_TEXTURE_COORD_ARRAY
// GL_TEXTURE_2D // GL_TEXTURE_2D
_customCommand.init(_vertexZ); _customCommand.init(_globalZOrder);
_customCommand.func = CC_CALLBACK_0(Atlas1::onDraw, this); _customCommand.func = CC_CALLBACK_0(Atlas1::onDraw, this);
Director::getInstance()->getRenderer()->addCommand(&_customCommand); Director::getInstance()->getRenderer()->addCommand(&_customCommand);
@ -526,7 +526,7 @@ Atlas4::Atlas4()
void Atlas4::draw() void Atlas4::draw()
{ {
_customCommand.init(_vertexZ); _customCommand.init(_globalZOrder);
_customCommand.func = CC_CALLBACK_0(Atlas4::onDraw, this); _customCommand.func = CC_CALLBACK_0(Atlas4::onDraw, this);
Director::getInstance()->getRenderer()->addCommand(&_customCommand); Director::getInstance()->getRenderer()->addCommand(&_customCommand);
} }
@ -1612,7 +1612,7 @@ std::string LabelBMFontBounds::subtitle() const
void LabelBMFontBounds::draw() void LabelBMFontBounds::draw()
{ {
_customCommand.init(_vertexZ); _customCommand.init(_globalZOrder);
_customCommand.func = CC_CALLBACK_0(LabelBMFontBounds::onDraw, this); _customCommand.func = CC_CALLBACK_0(LabelBMFontBounds::onDraw, this);
Director::getInstance()->getRenderer()->addCommand(&_customCommand); Director::getInstance()->getRenderer()->addCommand(&_customCommand);
} }

View File

@ -302,7 +302,7 @@ LabelFNTSpriteActions::LabelFNTSpriteActions()
void LabelFNTSpriteActions::draw() void LabelFNTSpriteActions::draw()
{ {
_renderCmd.init(_vertexZ); _renderCmd.init(_globalZOrder);
_renderCmd.func = CC_CALLBACK_0(LabelFNTSpriteActions::onDraw, this); _renderCmd.func = CC_CALLBACK_0(LabelFNTSpriteActions::onDraw, this);
Director::getInstance()->getRenderer()->addCommand(&_renderCmd); Director::getInstance()->getRenderer()->addCommand(&_renderCmd);
@ -912,7 +912,7 @@ std::string LabelFNTBounds::subtitle() const
void LabelFNTBounds::draw() void LabelFNTBounds::draw()
{ {
_renderCmd.init(_vertexZ); _renderCmd.init(_globalZOrder);
_renderCmd.func = CC_CALLBACK_0(LabelFNTBounds::onDraw, this); _renderCmd.func = CC_CALLBACK_0(LabelFNTBounds::onDraw, this);
Director::getInstance()->getRenderer()->addCommand(&_renderCmd); Director::getInstance()->getRenderer()->addCommand(&_renderCmd);
} }

View File

@ -166,11 +166,11 @@ void TouchableSpriteTest::onEnter()
target->setOpacity(255); target->setOpacity(255);
if (target == sprite2) if (target == sprite2)
{ {
sprite1->setZOrder(100); sprite1->setLocalZOrder(100);
} }
else if(target == sprite1) else if(target == sprite1)
{ {
sprite1->setZOrder(0); sprite1->setLocalZOrder(0);
} }
}; };

View File

@ -67,6 +67,7 @@ static std::function<Layer*()> createFunctions[] =
CL(ConvertToNode), CL(ConvertToNode),
CL(NodeOpaqueTest), CL(NodeOpaqueTest),
CL(NodeNonOpaqueTest), CL(NodeNonOpaqueTest),
CL(NodeGlobalZValueTest),
}; };
#define MAX_LAYER (sizeof(createFunctions) / sizeof(createFunctions[0])) #define MAX_LAYER (sizeof(createFunctions) / sizeof(createFunctions[0]))
@ -905,6 +906,55 @@ std::string NodeNonOpaqueTest::subtitle() const
return "Node rendered with GL_BLEND enabled"; return "Node rendered with GL_BLEND enabled";
} }
/// NodeGlobalZValueTest
NodeGlobalZValueTest::NodeGlobalZValueTest()
{
Size s = Director::getInstance()->getWinSize();
for (int i = 0; i < 9; i++)
{
Sprite *sprite;
auto parent = Node::create();
if(i==4) {
sprite = Sprite::create("Images/grossinis_sister2.png");
_sprite = sprite;
_sprite->setGlobalZOrder(-1);
}
else
sprite = Sprite::create("Images/grossinis_sister1.png");
parent->addChild(sprite);
this->addChild(parent);
float w = sprite->getContentSize().width;
sprite->setPosition(s.width/2 - w*0.7*(i-5), s.height/2);
}
this->scheduleUpdate();
}
void NodeGlobalZValueTest::update(float dt)
{
static float accum = 0;
accum += dt;
if( accum > 1) {
float z = _sprite->getGlobalZOrder();
_sprite->setGlobalZOrder(-z);
accum = 0;
}
}
std::string NodeGlobalZValueTest::title() const
{
return "Global Z Value";
}
std::string NodeGlobalZValueTest::subtitle() const
{
return "Center Sprite should change go from foreground to background";
}
// //
// MySprite: Used by CameraTest1 and CameraTest2 // MySprite: Used by CameraTest1 and CameraTest2
@ -932,7 +982,7 @@ protected:
void MySprite::draw() void MySprite::draw()
{ {
_customCommand.init(_vertexZ); _customCommand.init(_globalZOrder);
_customCommand.func = CC_CALLBACK_0(MySprite::onDraw, this); _customCommand.func = CC_CALLBACK_0(MySprite::onDraw, this);
Director::getInstance()->getRenderer()->addCommand(&_customCommand); Director::getInstance()->getRenderer()->addCommand(&_customCommand);
} }

View File

@ -249,6 +249,20 @@ protected:
NodeNonOpaqueTest(); NodeNonOpaqueTest();
}; };
class NodeGlobalZValueTest : public TestCocosNodeDemo
{
public:
CREATE_FUNC(NodeGlobalZValueTest);
virtual std::string title() const override;
virtual std::string subtitle() const override;
virtual void update(float dt) override;
protected:
NodeGlobalZValueTest();
Sprite *_sprite;
};
class CocosNodeTestScene : public TestScene class CocosNodeTestScene : public TestScene
{ {
public: public:

View File

@ -470,19 +470,19 @@ RenderTextureTestDepthStencil::~RenderTextureTestDepthStencil()
void RenderTextureTestDepthStencil::draw() void RenderTextureTestDepthStencil::draw()
{ {
_renderCmds[0].init(_vertexZ); _renderCmds[0].init(_globalZOrder);
_renderCmds[0].func = CC_CALLBACK_0(RenderTextureTestDepthStencil::onBeforeClear, this); _renderCmds[0].func = CC_CALLBACK_0(RenderTextureTestDepthStencil::onBeforeClear, this);
Director::getInstance()->getRenderer()->addCommand(&_renderCmds[0]); Director::getInstance()->getRenderer()->addCommand(&_renderCmds[0]);
_rend->beginWithClear(0, 0, 0, 0, 0, 0); _rend->beginWithClear(0, 0, 0, 0, 0, 0);
_renderCmds[1].init(_vertexZ); _renderCmds[1].init(_globalZOrder);
_renderCmds[1].func = CC_CALLBACK_0(RenderTextureTestDepthStencil::onBeforeStencil, this); _renderCmds[1].func = CC_CALLBACK_0(RenderTextureTestDepthStencil::onBeforeStencil, this);
Director::getInstance()->getRenderer()->addCommand(&_renderCmds[1]); Director::getInstance()->getRenderer()->addCommand(&_renderCmds[1]);
_spriteDS->visit(); _spriteDS->visit();
_renderCmds[2].init(_vertexZ); _renderCmds[2].init(_globalZOrder);
_renderCmds[2].func = CC_CALLBACK_0(RenderTextureTestDepthStencil::onBeforDraw, this); _renderCmds[2].func = CC_CALLBACK_0(RenderTextureTestDepthStencil::onBeforDraw, this);
Director::getInstance()->getRenderer()->addCommand(&_renderCmds[2]); Director::getInstance()->getRenderer()->addCommand(&_renderCmds[2]);
@ -490,7 +490,7 @@ void RenderTextureTestDepthStencil::draw()
_rend->end(); _rend->end();
_renderCmds[3].init(_vertexZ); _renderCmds[3].init(_globalZOrder);
_renderCmds[3].func = CC_CALLBACK_0(RenderTextureTestDepthStencil::onAfterDraw, this); _renderCmds[3].func = CC_CALLBACK_0(RenderTextureTestDepthStencil::onAfterDraw, this);
Director::getInstance()->getRenderer()->addCommand(&_renderCmds[3]); Director::getInstance()->getRenderer()->addCommand(&_renderCmds[3]);
@ -638,7 +638,7 @@ SpriteRenderTextureBug::SimpleSprite* SpriteRenderTextureBug::SimpleSprite::crea
void SpriteRenderTextureBug::SimpleSprite::draw() void SpriteRenderTextureBug::SimpleSprite::draw()
{ {
_customCommand.init(_vertexZ); _customCommand.init(_globalZOrder);
_customCommand.func = CC_CALLBACK_0(SpriteRenderTextureBug::SimpleSprite::onBeforeDraw, this); _customCommand.func = CC_CALLBACK_0(SpriteRenderTextureBug::SimpleSprite::onBeforeDraw, this);
Director::getInstance()->getRenderer()->addCommand(&_customCommand); Director::getInstance()->getRenderer()->addCommand(&_customCommand);

View File

@ -193,7 +193,7 @@ void ShaderNode::setPosition(const Point &newPosition)
void ShaderNode::draw() void ShaderNode::draw()
{ {
_customCommand.init(_vertexZ); _customCommand.init(_globalZOrder);
_customCommand.func = CC_CALLBACK_0(ShaderNode::onDraw, this); _customCommand.func = CC_CALLBACK_0(ShaderNode::onDraw, this);
Director::getInstance()->getRenderer()->addCommand(&_customCommand); Director::getInstance()->getRenderer()->addCommand(&_customCommand);
} }
@ -526,7 +526,7 @@ void SpriteBlur::initProgram()
void SpriteBlur::draw() void SpriteBlur::draw()
{ {
_customCommand.init(_vertexZ); _customCommand.init(_globalZOrder);
_customCommand.func = CC_CALLBACK_0(SpriteBlur::onDraw, this); _customCommand.func = CC_CALLBACK_0(SpriteBlur::onDraw, this);
Director::getInstance()->getRenderer()->addCommand(&_customCommand); Director::getInstance()->getRenderer()->addCommand(&_customCommand);
} }

View File

@ -178,7 +178,7 @@ void ShaderSprite::initShader()
void ShaderSprite::draw() void ShaderSprite::draw()
{ {
_renderCommand.init(_vertexZ); _renderCommand.init(_globalZOrder);
_renderCommand.func = CC_CALLBACK_0(ShaderSprite::onDraw, this); _renderCommand.func = CC_CALLBACK_0(ShaderSprite::onDraw, this);
Director::getInstance()->getRenderer()->addCommand(&_renderCommand); Director::getInstance()->getRenderer()->addCommand(&_renderCommand);

View File

@ -1794,7 +1794,7 @@ void TextureDrawAtPoint::draw()
{ {
TextureDemo::draw(); TextureDemo::draw();
_renderCmd.init(_vertexZ); _renderCmd.init(_globalZOrder);
_renderCmd.func = CC_CALLBACK_0(TextureDrawAtPoint::onDraw, this); _renderCmd.func = CC_CALLBACK_0(TextureDrawAtPoint::onDraw, this);
Director::getInstance()->getRenderer()->addCommand(&_renderCmd); Director::getInstance()->getRenderer()->addCommand(&_renderCmd);
@ -1835,7 +1835,7 @@ void TextureDrawInRect::draw()
{ {
TextureDemo::draw(); TextureDemo::draw();
_renderCmd.init(_vertexZ); _renderCmd.init(_globalZOrder);
_renderCmd.func = CC_CALLBACK_0(TextureDrawInRect::onDraw, this); _renderCmd.func = CC_CALLBACK_0(TextureDrawInRect::onDraw, this);
Director::getInstance()->getRenderer()->addCommand(&_renderCmd); Director::getInstance()->getRenderer()->addCommand(&_renderCmd);

View File

@ -599,7 +599,7 @@ TMXOrthoObjectsTest::TMXOrthoObjectsTest()
void TMXOrthoObjectsTest::draw() void TMXOrthoObjectsTest::draw()
{ {
_renderCmd.init(_vertexZ); _renderCmd.init(_globalZOrder);
_renderCmd.func = CC_CALLBACK_0(TMXOrthoObjectsTest::onDraw, this); _renderCmd.func = CC_CALLBACK_0(TMXOrthoObjectsTest::onDraw, this);
Director::getInstance()->getRenderer()->addCommand(&_renderCmd); Director::getInstance()->getRenderer()->addCommand(&_renderCmd);
} }
@ -672,7 +672,7 @@ TMXIsoObjectsTest::TMXIsoObjectsTest()
void TMXIsoObjectsTest::draw() void TMXIsoObjectsTest::draw()
{ {
_renderCmd.init(_vertexZ); _renderCmd.init(_globalZOrder);
_renderCmd.func = CC_CALLBACK_0(TMXIsoObjectsTest::onDraw, this); _renderCmd.func = CC_CALLBACK_0(TMXIsoObjectsTest::onDraw, this);
Director::getInstance()->getRenderer()->addCommand(&_renderCmd); Director::getInstance()->getRenderer()->addCommand(&_renderCmd);
} }
@ -1504,7 +1504,7 @@ TMXGIDObjectsTest::TMXGIDObjectsTest()
void TMXGIDObjectsTest::draw() void TMXGIDObjectsTest::draw()
{ {
_renderCmd.init(_vertexZ); _renderCmd.init(_globalZOrder);
_renderCmd.func = CC_CALLBACK_0(TMXGIDObjectsTest::onDraw, this); _renderCmd.func = CC_CALLBACK_0(TMXGIDObjectsTest::onDraw, this);
Director::getInstance()->getRenderer()->addCommand(&_renderCmd); Director::getInstance()->getRenderer()->addCommand(&_renderCmd);
} }