public void BuildTree(ref IndexedVector3 bvhAabbMin, ref IndexedVector3 bvhAabbMax)
        {
            m_optimizedAabbTree = new QuantizedBvh();
            m_optimizedAabbTree.SetQuantizationValues(ref bvhAabbMin, ref bvhAabbMax);
            IList <QuantizedBvhNode> nodes = m_optimizedAabbTree.GetLeafNodeArray();

            for (int i = 0; i < m_sapBroadphases.Count; i++)
            {
                QuantizedBvhNode node = new QuantizedBvhNode();
                IndexedVector3   aabbMin;
                IndexedVector3   aabbMax;
                m_sapBroadphases[i].GetBroadphaseAabb(out aabbMin, out aabbMax);
                m_optimizedAabbTree.Quantize(out node.m_quantizedAabbMin, ref aabbMin, false);
                m_optimizedAabbTree.Quantize(out node.m_quantizedAabbMax, ref aabbMax, true);
                int partId = 0;
                node.m_escapeIndexOrTriangleIndex = (partId << (31 - QuantizedBvh.MAX_NUM_PARTS_IN_BITS)) | i;
                nodes.Add(node);
            }
            m_optimizedAabbTree.BuildInternal();
        }
예제 #2
0
        QuantizedBvh m_optimizedTree;         // for quantization

        public QuantizedNodeTriangleCallback(ObjectArray <QuantizedBvhNode> triangleNodes, QuantizedBvh tree)
        {
            m_triangleNodes = triangleNodes;
            m_optimizedTree = tree;
        }