コード例 #1
0
            public byte[] GetData()
            {
                var bytes = new byte[Data.Size];

                for (int i = 0; i < Data.Size; i++)
                {
                    bytes[i] = Data.GetArrayData().Elements[i].data;
                }
                return(bytes);
            }
コード例 #2
0
            // Recursively builds the BVH tree from the compressed packed array
            private BVHNode buildTree(Vector3 parentBBMin, Vector3 parentBBMax, uint nodeIndex)
            {
                BVHNode        node  = new BVHNode();
                StaticAABBNode cnode = CompressedTree.GetArrayData().Elements[(int)nodeIndex];

                node.Min = cnode.DecompressMin(parentBBMin, parentBBMax);
                node.Max = cnode.DecompressMax(parentBBMin, parentBBMax);

                if ((cnode.IDX0 & 0x80) > 0)
                {
                    node.Left  = buildTree(node.Min, node.Max, nodeIndex + 1);
                    node.Right = buildTree(node.Min, node.Max, nodeIndex + ((((uint)cnode.IDX0 & 0x7F) << 8) | (uint)cnode.IDX1) * 2);
                }
                else
                {
                    node.IsTerminal = true;
                    node.Index      = (((uint)cnode.IDX0 & 0x7F) << 8) | (uint)cnode.IDX1;
                }
                return(node);
            }
コード例 #3
0
ファイル: Collision.cs プロジェクト: swordworld/dstools
            // Recursively builds the BVH tree from the compressed packed array
            private BVHNode buildBVHTree(Vector3 parentBBMin, Vector3 parentBBMax, uint nodeIndex)
            {
                BVHNode node = new BVHNode();
                CompressedChunkBVHNode cnode = CompressedBVH.GetArrayData().Elements[(int)nodeIndex];

                node.Min = cnode.DecompressMin(parentBBMin, parentBBMax);
                node.Max = cnode.DecompressMax(parentBBMin, parentBBMax);

                if ((cnode.IDX & 0x01) > 0)
                {
                    node.Left  = buildBVHTree(node.Min, node.Max, nodeIndex + 1);
                    node.Right = buildBVHTree(node.Min, node.Max, nodeIndex + ((uint)cnode.IDX & 0xFE));
                }
                else
                {
                    node.IsTerminal = true;
                    node.Index      = (uint)cnode.IDX / 2;
                }
                return(node);
            }