zoukankan      html  css  js  c++  java
  • cocos2dx 3.3多相机下_transformUpdated bug

    uint32_t Node::processParentFlags(const Mat4& parentTransform, uint32_t parentFlags)

    {

        if(_usingNormalizedPosition) {

            CCASSERT(_parent, "setNormalizedPosition() doesn't work with orphan nodes");

            if ((parentFlags & FLAGS_CONTENT_SIZE_DIRTY) || _normalizedPositionDirty) {

                auto s = _parent->getContentSize();

                _position.x = _normalizedPosition.x * s.width;

                _position.y = _normalizedPosition.y * s.height;

                _transformUpdated = _transformDirty = _inverseDirty = true;

                _normalizedPositionDirty = false;

            }

        }

        

        uint32_t flags = parentFlags;

        flags |= (_transformUpdated ? FLAGS_TRANSFORM_DIRTY : 0);

        flags |= (_contentSizeDirty ? FLAGS_CONTENT_SIZE_DIRTY : 0);

        

        if(flags & FLAGS_DIRTY_MASK)

            _modelViewTransform = this->transform(parentTransform);

        _transformUpdated = false;

        _contentSizeDirty = false;

        return flags;

    }

     改成:

    uint32_t Node::processParentFlags(const Mat4& parentTransform, uint32_t parentFlags)

    {

        if(_usingNormalizedPosition) {

            CCASSERT(_parent, "setNormalizedPosition() doesn't work with orphan nodes");

            if ((parentFlags & FLAGS_CONTENT_SIZE_DIRTY) || _normalizedPositionDirty) {

                auto s = _parent->getContentSize();

                _position.x = _normalizedPosition.x * s.width;

                _position.y = _normalizedPosition.y * s.height;

                _transformUpdated = _transformDirty = _inverseDirty = true;

                _normalizedPositionDirty = false;

            }

        }

        

        uint32_t flags = parentFlags;

        flags |= (_transformUpdated ? FLAGS_TRANSFORM_DIRTY : 0);

        flags |= (_contentSizeDirty ? FLAGS_CONTENT_SIZE_DIRTY : 0);

        

        if(flags & FLAGS_DIRTY_MASK)

            _modelViewTransform = this->transform(parentTransform);

        if(isVisitableByVisitingCamera())//if the camera is not match this node, do not consume _transformUpdated.  [wantnon,  yuanotes]. see: https://github.com/cocos2d/cocos2d-x/issues/10063

        {

            _transformUpdated = false;

            _contentSizeDirty = false;

        }

        return flags;

    }

     

  • 相关阅读:
    排序系列 之 希尔排序算法 —— Java实现
    排序系列 之 快速排序算法 —— Java实现
    排序系列 之 冒泡排序及其改进算法 —— Java实现
    排序系列 之 折半插入排序算法 —— Java实现
    排序系列 之 直接插入排序算法 —— Java实现
    Three.js入门篇(一)创建一个场景
    THREE.JS(如何想场景中添加物体对象)
    Tween.js 动画效果
    js柯里化
    node path模块
  • 原文地址:https://www.cnblogs.com/wantnon/p/4341579.html
Copyright © 2011-2022 走看看