const scenes = {}; scenes["Example"] = () => { importScene({"entities":[{"name":"Fen","customName":"Fen","scale":5.436062065275549,"rotation":0,"view":"front","x":"4.665848709260061","y":"0","priority":1,"brightness":1},{"name":"Houses","customName":"Houses","scale":1,"rotation":0,"view":"Two-Story House (Front)","x":"5.288189964330951","y":"0","priority":0,"brightness":1},{"name":"Cars","customName":"Cars","scale":1,"rotation":0,"view":"Toyota Prius C (Front)","x":"9.852420385132847","y":"0","priority":0,"brightness":1},{"name":"Human","customName":"Human","scale":1,"rotation":0,"view":"female","x":"0.5047986924482672","y":"0","priority":0,"brightness":1},{"name":"Bus Stop","customName":"Bus Stop","scale":1,"rotation":0,"view":"building","x":"-6.340563816462594","y":"0","priority":0,"brightness":1},{"name":"Buses","customName":"Buses","scale":1,"rotation":0,"view":"City Bus (Front)","x":"-3.9150839992681856","y":"0","priority":0,"brightness":1}],"world":{"height":15.64105944367194,"unit":"meters","x":2.331469191670777,"y":-1.303421620305995},"version":4}) } scenes["Empty"] = () => { importScene({ "entities": [], "world": { "height": 3, "unit": "meters" }, "version": 0 }); } function makeSlice(min, max) { return () => { const characters = availableEntities["characters"].filter(x => { const entity = x.constructor(); return math.compare(entity.views[entity.view].height, min) == 1 && math.compare(entity.views[entity.view].height, max) != 1 }); characters.forEach(character => { const entity = character.constructor(); displayEntity(entity, entity.view, 0, 0); }); arrangeEntities(getSortedEntities()); fitWorld(true); } } scenes["<10m"] = makeSlice(math.unit(0, "meters"), math.unit(10, "meters")); scenes["10m-100m"] = makeSlice(math.unit(10, "meters"), math.unit(100, "meters")); scenes["100m-1km"] = makeSlice(math.unit(100, "meters"), math.unit(1000, "meters")); scenes["1km-10km"] = makeSlice(math.unit(1000, "meters"), math.unit(10000, "meters")); scenes["10km-100km"] = makeSlice(math.unit(10000, "meters"), math.unit(100000, "meters")); scenes["100km-1000km"] = makeSlice(math.unit(100000, "meters"), math.unit(1000000, "meters")); scenes["Everyone"] = () => { config.height = math.unit(11, "meters"); let entities = availableEntities.characters.map(maker => { return maker.constructor(); }) if (confirm("This scene will load " + entities.length + " entities -- are you sure?")) { entities.reduce((counter, entity) => { entity.views[entity.view].height = math.unit(1, "meter"); const count = availableEntities.characters.length; const x = 0.05 + math.floor(counter / 10) / math.ceil(count / 10); const y = (counter % 10) / 10 + 0.1; displayEntity(entity, entity.view, x, y); return counter + 1; }, 0); updateSizes(true); } } scenes["EVERYTHING"] = () => { config.height = math.unit(11, "meters"); let entities = Object.values(availableEntitiesByName).map(maker => { return maker.constructor(); }) if (confirm("This scene will load " + entities.length + " entities -- are you sure?")) { entities.reduce((counter, entity) => { entity.views[entity.view].height = math.unit(1, "meter"); const count = Object.values(availableEntitiesByName).length; const x = 0.05 + math.floor(counter / 10) / math.ceil(count / 10); const y = (counter % 10) / 10 + 0.1; displayEntity(entity, entity.view, x, y); return counter + 1; }, 0); updateSizes(true); } } scenes["EVERY VIEW AAAAA"] = () => { config.height = math.unit(11, "meters"); let entities = Object.values(availableEntitiesByName).map(maker => { return maker.constructor(); }).flatMap(entity => { return Object.keys(entity.views).map(view => { const newEntity = availableEntitiesByName[entity.identifier].constructor(); newEntity.view = view; return newEntity; }); }) if (confirm("This scene will load " + entities.length + " entities -- are you sure?")) { entities.reduce((counter, entity) => { entity.views[entity.view].height = math.unit(1, "meter"); const count = Object.values(availableEntitiesByName).length; const x = 0.05 + math.floor(counter / 10) / math.ceil(count / 10); const y = (counter % 10) / 10 + 0.1; displayEntity(entity, entity.view, x, y); return counter + 1; }, 0); updateSizes(true); } } function makeViewsScene(constructor, viewChoice) { return () => { Object.keys(constructor.constructor().views).forEach(view => { if (viewChoice === undefined || view.indexOf(viewChoice) >= 0) { const entity = constructor.constructor() displayEntity(entity, view, 0, 1) } }) arrangeEntities(getSortedEntities()); } } function makeOwnerScene(owners) { return () => { owners.flatMap(owner => { return availableEntities["characters"].filter(x => { const entity = x.constructor(); const owners = ownersOf(entity.views[entity.view].image.source); if (owners) return owners.indexOf(owner) != -1; else return false; }) }).map(maker => { return maker.constructor(); }).sort((e1, e2) => { return e1.views[e1.view].height.toNumber() - e2.views[e2.view].height.toNumber() }).forEach(entity => { console.log(entity) displayEntity(entity, entity.view, 0, 1); }); arrangeEntities(getSortedEntities()); } } function makeOwnerSceneViews(owners) { return () => { owners.flatMap(owner => { return availableEntities["characters"].filter(x => { const entity = x.constructor(); const owners = ownersOf(entity.views[entity.view].image.source); if (owners) return owners.indexOf(owner) != -1; else return false; }) }).map(maker => { return maker.constructor(); }).flatMap(entity => { return Object.keys(entity.views).map(view => { const newEnt = availableEntitiesByName[entity.identifier].constructor(); newEnt.view = view; return newEnt; }); }).sort((e1, e2) => { return e1.views[e1.view].height.toNumber() - e2.views[e2.view].height.toNumber() }).forEach(entity => { console.log(entity) displayEntity(entity, entity.view, 0, 1); }); arrangeEntities(getSortedEntities()); fitWorld(true); } }