@@ -32,7 +32,7 @@ cc.CustomRenderCmd = function (target, func) {
32
32
if ( ! this . _callback )
33
33
return ;
34
34
this . _callback . call ( this . _target , ctx , scaleX , scaleY ) ;
35
- }
35
+ } ;
36
36
} ;
37
37
38
38
cc . Node . _dirtyFlags = { transformDirty : 1 << 0 , visibleDirty : 1 << 1 , colorDirty : 1 << 2 , opacityDirty : 1 << 3 , cacheDirty : 1 << 4 ,
@@ -56,6 +56,9 @@ cc.Node.RenderCmd = function(renderable){
56
56
this . _cascadeOpacityEnabledDirty = false ;
57
57
58
58
this . _curLevel = - 1 ;
59
+
60
+ this . _minZ = 0 ;
61
+ this . _maxZ = 0 ;
59
62
} ;
60
63
61
64
cc . Node . RenderCmd . prototype = {
@@ -368,24 +371,50 @@ cc.Node.RenderCmd.prototype = {
368
371
} ,
369
372
370
373
visitChildren : function ( ) {
374
+ var renderer = cc . renderer ;
371
375
var node = this . _node ;
372
- var i , children = node . _children , child ;
376
+ var i , children = node . _children , child , cmd ;
373
377
var len = children . length ;
378
+ var minZ = Number . MAX_VALUE ;
379
+ var maxZ = - Number . MAX_VALUE ;
374
380
if ( len > 0 ) {
375
381
node . sortAllChildren ( ) ;
376
382
// draw children zOrder < 0
377
383
for ( i = 0 ; i < len ; i ++ ) {
378
384
child = children [ i ] ;
379
- if ( child . _localZOrder < 0 )
380
- child . _renderCmd . visit ( this ) ;
381
- else
385
+ if ( child . _localZOrder < 0 ) {
386
+ cmd = child . _renderCmd ;
387
+ cmd . visit ( this ) ;
388
+ // minZ = Math.min(minZ, child._minZ);
389
+ // maxZ = Math.max(maxZ, child._maxZ);
390
+ }
391
+ else {
382
392
break ;
393
+ }
383
394
}
384
- cc . renderer . pushRenderCommand ( this ) ;
385
- for ( ; i < len ; i ++ )
386
- children [ i ] . _renderCmd . visit ( this ) ;
395
+
396
+ var z = renderer . assignedZ ;
397
+ node . _vertexZ = z ;
398
+ renderer . assignedZ += renderer . assignedZStep ;
399
+
400
+ // minZ = Math.min(minZ,z);
401
+ // maxZ = Math.max(maxZ,z);
402
+
403
+ renderer . pushRenderCommand ( this ) ;
404
+ for ( ; i < len ; i ++ ) {
405
+ child = children [ i ] ;
406
+ child . _renderCmd . visit ( this ) ;
407
+ // minZ = Math.min(minZ, child._minZ);
408
+ // maxZ = Math.max(maxZ, child._maxZ);
409
+ }
410
+
411
+ // node._minZ = minZ;
412
+ // node._maxZ = maxZ;
387
413
} else {
388
- cc . renderer . pushRenderCommand ( this ) ;
414
+ node . _vertexZ = renderer . assignedZ ;
415
+ renderer . assignedZ += renderer . assignedZStep ;
416
+
417
+ renderer . pushRenderCommand ( this ) ;
389
418
}
390
419
this . _dirtyFlag = 0 ;
391
420
}
@@ -399,7 +428,6 @@ cc.Node.RenderCmd.prototype = {
399
428
cc . Node . RenderCmd . call ( this , renderable ) ;
400
429
this . _cachedParent = null ;
401
430
this . _cacheDirty = false ;
402
-
403
431
} ;
404
432
405
433
var proto = cc . Node . CanvasRenderCmd . prototype = Object . create ( cc . Node . RenderCmd . prototype ) ;
0 commit comments