Source: objLoops.js

const PhSim = require(".");

/**
 * @namespace
 * @memberof PhSim
 */

const ObjLoops = {}

/**
 * Execute function on all members of a PhSim simulation or PhSim options.
 * @function
 * @param {PhSim|PhSimOptions} sim 
 * @param {Function} method 
 */

ObjLoops.global = function(sim,method) {

    if(sim instanceof PhSim) {
        for(let i = 0; i < sim.objUniverse.length; i++) {
            method(sim.objUniverse[i]);
        }
    }

    else {

        for(let i = 0; i < sim.simulations.length; i++) {
            for(let j = 0; j < sim.simulations[i].layers.length; j++) {
                for(let k = 0; k < sim.simulations[i].layers[j].objUniverse.length; k++) {
                    method(sim.simulations[i].layers[j].objUniverse[k]);
                }
            }
        }

    }

}

/**
 * Execute function on all members of a simulation object.
 * @function
 * @param {Object} simulation 
 * @param {Function} method 
 */

ObjLoops.simulation = function(simulation,method) {
    for(let j = 0; j < simulation.layers.length; j++) {
        for(let k = 0; k < simulation.layers[j].objUniverse.length; k++) {
            method(simulation.layers[j].objUniverse[k]);
        }
    }
}

/**
 * Execute function on all members of an layer
 * @function
 * @param {Object} layer
 * @param {Function} method
 */

ObjLoops.layer = function(layer,method) {
    for(let k = 0; k < layer.objUniverse.length; k++) {
        method(layer.objUniverse[k]);
    }
}

module.exports = ObjLoops;