public void LoadRegion(GeoRegion region, ProgressEvent ev) { vis_tree.ClearTree(); models.Clear(); // setTreeBounds(region); // int x, y, i = 0; int max = REGION_SIZE * REGION_SIZE; GeoBlock block; Vector3 min = new Vector3(); for (y = 0; y < REGION_SIZE; y++) { for (x = 0; x < REGION_SIZE; x++) { block = region.getBlockByBlockXY(x, y); foreach (GeoModel m in createBlock(block)) { if (i == 0) { min = m.Position; } else { if (m.Position.X < min.X) { min.X = m.Position.X; } if (m.Position.Y > min.Y) { min.Y = m.Position.Y; } if (m.Position.Z < min.Z) { min.Z = m.Position.Z; } } // i++; } // if (ev != null) { float p = (y * REGION_SIZE + x) / (float)max; ev((int)(p * 100f)); } } } // Camera.Rotation.X = 45f; Camera.Position.X = min.X - 20f; Camera.Position.Z = min.Z - 20f; Camera.Position.Y = min.Y + 20f; Camera.UpdateWorldView(); }