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;

    }

     

  • 相关阅读:
    算法图解之散列表
    算法图解之快速排序
    算法图解之分而治之
    __setitem__,__getitem,__delitem__的作用
    算法图解之递归
    Python开发不可不知的虚拟环境
    静态属性property的本质和应用
    SQLmap详解
    windows提权备忘录
    linux提权备忘录
  • 原文地址:https://www.cnblogs.com/wantnon/p/4341579.html
Copyright © 2011-2022 走看看