Code viewer for World: New World
const skycolor          = 'lightblue';
const boxcolor          = 'maroon';
 
const objectsize    = 300;                  // size of object   
const startRadius   = 1000;                 // distance from centre we start the camera at
const maxRadius     = startRadius * 10;     // maximum distance from camera we render things

const wallColor = 'maroon';

const gridSize = 20; // Size of the maze grid
const cellSize = 30; // Size of each cell in the grid

function createMaze() {
    const maze = [];

    for (let i = 0; i < gridSize; i++) {
        maze.push([]);
        for (let j = 0; j < gridSize; j++) {
            // Create walls at the edges and an empty space in the middle
            if (i === 0 || i === gridSize - 1 || j === 0 || j === gridSize - 1) {
                maze[i].push(1); // 1 represents a wall
            } else {
                maze[i].push(0); // 0 represents an empty space
            }
        }
    }

    return maze;
}

const mazeStructure = createMaze();

// Create maze objects based on the maze structure
const mazeObjects = [];

for (let i = 0; i < gridSize; i++) {
    for (let j = 0; j < gridSize; j++) {
        if (mazeStructure[i][j] === 1) {
            const wallGeometry = new THREE.BoxGeometry(cellSize, cellSize, cellSize);
            const wallMaterial = new THREE.MeshBasicMaterial({ color: wallColor.toLowerCase() });
            const wall = new THREE.Mesh(wallGeometry, wallMaterial);
            wall.position.set(i * cellSize, cellSize / 2, j * cellSize);
            mazeObjects.push(wall);
        }
    }
}

AB.world.newRun = function() {
    ABWorld.init3d(startRadius, maxRadius, skycolor);
    
    // Add maze objects to the scene
    mazeObjects.forEach((object) => {
        ABWorld.scene.add(object);
    });
};

AB.world.nextStep = function() {
    // Code for Three.js re-drawing of objects.
};

AB.world.endRun = function() {
};