How to create a new object with javaScript and add it to the object list

how to create an object and add it to the object list
i tried to register an object but i can’t add it to the scene someone should please help me

1 Like

Here is an example with 3D cubes.

if(runtimeScene.getTimeManager().isFirstFrame()){

console.log("3D Pyramid Script Started...");

const scene = runtimeScene;
const cubeSize = 50; // Size of each 3D Box
const baseSize = 5; // Pyramid base size (5x5)

// Starting position (adjust as needed)
const startX = 300; // Adjust to center
const startY = 300; // Adjust for visibility
const startZ = 0; 

// Loop to create the pyramid
for (let row = 0; row < baseSize; row++) {
    let cubesInRow = baseSize - row; // Reduce cubes per row
    let offsetX = (cubeSize * row) / 2; // Center alignment for X
    let offsetY = (cubeSize * row) / 2; // Center alignment for X



    console.log(`Generating row ${row + 1} with ${cubesInRow}x${cubesInRow} cubes...`);

    for (let i = 0; i < cubesInRow; i++) {
        for (let j = 0; j < cubesInRow; j++) {
            let newCube = scene.createObject("RedCube");

            if (!newCube) {
                console.error(`Failed to create 'RedCube' at row ${row}, column ${i}, depth ${j}`);
                continue;
            }

            // Calculate 2D Position
            let posX = startX - (i * cubeSize) - offsetX;
            // let posY = startY - row * cubeSize; // Higher for each row
            // let posZ = startY + (row * cubeSize); // Higher for each row
            let posZ = startZ + (row * cubeSize);
            // Use Z Order for layering depth
            // let zOrder = 100 - ((row * 10 + j)*cubeSize); // Higher rows appear on top
            // let posY = 100 - ((row * 10 + j) *cubeSize); // Higher rows appear on top
            let posY = startY - (j * cubeSize) - offsetY;

            // Apply positioning
            newCube.setPosition(posX, posY);
            newCube.setZ(posZ);

            // newCube.setColor(r + ";" + g + ";" + b);
            let r = Math.floor(Math.random() * 256);
            let g = Math.floor(Math.random() * 256);
            let b = Math.floor(Math.random() * 256);
            
            let mycolor = `${r}` +";" +`${g}` + ";" + `${b}` ;
            newCube.setColor(mycolor);
            // newCube.setZOrder(zOrder);
            // newCube.setZ(zOrder)
            // newCube.setVariableNumber(newCube.getVariables().get("Z"), zOrder);
            
            scene.addObject(newCube);
          
            let myz = newCube.getZ();


            console.log(`Placed cube at (X:${posX}, Y:${posY}) with Z-Order: ${posZ} / Z: ${myz}, Color
            : ${mycolor}`);
        }
    }
}

// Get all objects in the scene
const objects = runtimeScene.getObjects("RedCube");

objects.forEach((object) => {
    const posX = object.getX();
    const posY = object.getY();
    const posZ = object.getZ();

    console.log(`Object: ${object.getName()} - X: ${posX}, Y: ${posY}, Z: ${posZ}`);
});


console.log("3D Pyramid Generation Complete.");
}
1 Like

Thanks for the example!

1 Like