[LayaAir 2.0]开启CastShadow以后,模型会莫名其妙消失,物体渲染队列的_IndexInList会被破坏

没有开启castShadow,渲染都正常,开启CastShadow后会有部分物体会消失,具体Bug原因如下:
有六个物体,其中后面三个开启castShadow
_renders队列有6个物体,_castShadowRenders队列有三个
 
首先从_renders队列中移除这个render:
 
e6633920c631760a424b636d801e5e76.png


这个过程都正常

下面是从_castShadowRenders队列中移除一个render
 
73fcd266225856fd20dff251fa861dff.png


7ad921c3d2ba1b81e2262ca71c0f371d.png


09dc1e6269526e424fc18091a6ca90bf.png


导致_render队列的数组被破坏
已邀请:

Joey

赞同来自: 林城明

是CastShadowList的_remove写坏了_indexInList
在CastShadowList中要重写_remove
    __proto._remove=function(index){
        this.length--;
        if (index!==this.length){
            var end=this.elements[this.length];
            this.elements[index]=end;
            end._indexInCastShadowList=index;
        }
    }

Aar0n

赞同来自:

这个有demo可以提供吗? 引擎部需要demo来排查问题

林城明

赞同来自:

示例工程已经上传,已经跟踪了引擎底层代码,从CastShadow队列移除bug

Aar0n

赞同来自:

demo正在下载查看

Aar0n

赞同来自:

正在移交引擎部处理,请耐心等待结果

林城明

赞同来自:

哦,不用等待结果,我们没有使用阴影,只是顺手提一下,相信这个Bug对其他项目影响会比较大

林城明

赞同来自:

是的

要回复问题请先

商务合作
商务合作