void DisplayFactory::updateDisplay(Bone *bone, DecorativeDisplay *decoDisplay, float dt, bool dirty) { CS_RETURN_IF(!decoDisplay); #if ENABLE_PHYSICS_DETECT if (dirty) { ColliderDetector *detector = decoDisplay->getColliderDetector(); if (detector) { AffineTransform t = AffineTransformConcat(bone->nodeToArmatureTransform(), bone->getArmature()->getNodeToWorldTransform()); detector->updateTransform(t); } } #endif switch(decoDisplay->getDisplayData()->displayType) { case CS_DISPLAY_SPRITE: updateSpriteDisplay(bone, decoDisplay, dt, dirty); break; case CS_DISPLAY_PARTICLE: updateParticleDisplay(bone, decoDisplay, dt, dirty); break; case CS_DISPLAY_ARMATURE: updateArmatureDisplay(bone, decoDisplay, dt, dirty); break; default: break; } }
void CCDisplayFactory::updateDisplay(CCBone *bone, CCDecorativeDisplay *decoDisplay, float dt, bool dirty) { CS_RETURN_IF(!decoDisplay); #if ENABLE_PHYSICS_BOX2D_DETECT || ENABLE_PHYSICS_CHIPMUNK_DETECT if (dirty) { CCColliderDetector *detector = decoDisplay->getColliderDetector(); if (detector) { do { #if ENABLE_PHYSICS_BOX2D_DETECT CC_BREAK_IF(!detector->getBody()); #elif ENABLE_PHYSICS_CHIPMUNK_DETECT CC_BREAK_IF(!detector->getBody()); #endif CCNode *node = decoDisplay->getDisplay(); CCAffineTransform displayTransform = node->nodeToParentTransform(); CCPoint anchorPoint = node->getAnchorPointInPoints(); anchorPoint = CCPointApplyAffineTransform(anchorPoint, displayTransform); displayTransform.tx = anchorPoint.x; displayTransform.ty = anchorPoint.y; CCAffineTransform t = CCAffineTransformConcat(displayTransform, bone->getArmature()->nodeToParentTransform()); detector->updateTransform(t); } while (0); } } #endif CCNode *display = decoDisplay->getDisplay(); switch(decoDisplay->getDisplayData()->displayType) { case CS_DISPLAY_SPRITE: updateSpriteDisplay(bone, display, dt, dirty); break; case CS_DISPLAY_PARTICLE: updateParticleDisplay(bone, display, dt, dirty); break; case CS_DISPLAY_ARMATURE: updateArmatureDisplay(bone, display, dt, dirty); break; default: { display->setAdditionalTransform(bone->nodeToArmatureTransform()); } break; } }