//private Vector3 MinVertex; //private Vector3 MaxVertex; public QuadTreeNode(QuadTreeNode parent, TerrainTile tile, int tileSize, int depth, bool checkFrustum, Vector2 offset, params Vector4[] v) { this.tile = tile; this.checkFrustum = checkFrustum; this.depth = depth; this.tileSize = tileSize; this.Offset = offset; //if (parent != null) //{ // //TileOffset = parent.TileOffset; //} //else //{ // // get tile offset in world space // TileOffset = Vector4.Transform(new Vector4(0f,0f,0f,1f), tile.InverseModelMatrix); //} for (int i = 0; i < 8; i++) { vertex[i] = v[i]; } BottomCentre = (vertex[(int)Corner.BottomNearLeft] + vertex[(int)Corner.BottomFarRight]) * 0.5f; TopCentre = (vertex[(int)Corner.TopNearLeft] + vertex[(int)Corner.TopFarRight]) * 0.5f; }
public IEnumerable<PatchDescriptor> GetPatches(TerrainTile tile, Frustum f, Vector3 eyeWorld) { // create root node var root = new QuadTreeNode(tile); return root.GetPatches(eyeWorld,f); }