public QuadTree(NiTriShapeData data, int quadLevel) { this.sampleSize = Game.sampleSize; // water if (data.GetBSNumUVSets() == 0) { this.sampleSize = 1; this.isLand = false; } else { isLand = true; } this.vertices = data.GetVertices(); this.boundingBox = new BBox(); this.boundingBox.Set(float.MaxValue, float.MinValue, float.MaxValue, float.MinValue, float.MaxValue, float.MinValue); this.segments = new QuadTreeLeaf[(int)(this.sampleSize * quadLevel * this.sampleSize * quadLevel)]; for (int index = 0; index < (this.sampleSize * quadLevel) * (this.sampleSize * quadLevel); index++) { this.segments[index] = this.CreateSegment(index, quadLevel, data.GetTriangles(), data.GetVertices()); boundingBox.GrowByBox(this.segments[index].boundingBox); } QuadTreeLeaf quadTreeLeaf = new QuadTreeLeaf(); List<Triangle> triangles = data.GetTriangles(); quadTreeLeaf.boundingBox.GrowByBox(boundingBox); quadTreeLeaf.triangles = triangles; this.entirequad = quadTreeLeaf; }