// Creates a grid of cubes. void PopulateCubeFieldScene(Scene* scene, Fill* fill, int cubeCountX, int cubeCountY, int cubeCountZ, Vector3f offset, float cubeSpacing = 0.5f, float cubeSize = 0.1f) { Vector3f corner(-(((cubeCountX-1) * cubeSpacing) + cubeSize) * 0.5f, -(((cubeCountY-1) * cubeSpacing) + cubeSize) * 0.5f, -(((cubeCountZ-1) * cubeSpacing) + cubeSize) * 0.5f); corner += offset; Vector3f pos = corner; for (int i = 0; i < cubeCountX; i++) { // Create a new model for each 'plane' of cubes so we don't exceed // the vert size limit. Ptr<Model> model = *new Model(); scene->World.Add(model); if (fill) model->Fill = fill; for (int j = 0; j < cubeCountY; j++) { for (int k = 0; k < cubeCountZ; k++) { model->AddBox(0xFFFFFFFF, pos, Vector3f(cubeSize, cubeSize, cubeSize)); pos.z += cubeSpacing; } pos.z = corner.z; pos.y += cubeSpacing; } pos.y = corner.y; pos.x += cubeSpacing; } }