2024-11-05 16:28:45 +04:00

173 lines
4.1 KiB
JavaScript
Executable File

import {
Globe,
control,
GlobusRgbTerrain,
Vector,
OpenStreetMap,
Entity,
Bing,
Object3d
} from "../../lib/@openglobus/og.esm.js";
let dockLayer = new Vector("dock", {
scaleByDistance: [1, 1, 1]
});
let cranesLayer = new Vector("crane", {
scaleByDistance: [1, 1, 1]
});
function setPitch(a) {
cranesLayer.each((e) => {
e.geoObject.setPitch(a)
});
}
function setYaw(a) {
cranesLayer.each((e) => {
e.geoObject.setYaw(a);
});
}
function setRoll(a) {
cranesLayer.each((e) => {
e.geoObject.setRoll(a);
});
}
async function main() {
let sat = new Bing();
let osm = new OpenStreetMap();
const dock = await Object3d.loadObj('./dock.obj');
const crane = await Object3d.loadObj('./crane2.obj');
for (let i = 0; i < dock.length; i++) {
dockLayer.add(new Entity({
lonlat: [33.2017379, 69.0821338, 19],
geoObject: {
color: "white",
scale: 3.0,
instanced: true,
tag: `dock-${i}`,
object3d: dock[i],
yaw: -52,
pitch: 0
}
}));
}
for (let i = 0; i < crane.length; i++) {
let c1 = new Entity({
lonlat: [33.2017379, 69.0821338, 19],
geoObject: {
color: "white",
scale: 4.0,
instanced: true,
tag: `crane-${i}`,
object3d: crane[i],
yaw: 87,
pitch: 0
}
});
let c2 = new Entity({
lonlat: [33.2037625, 69.0814592, 24],
geoObject: {
color: "white",
scale: 4.0,
instanced: true,
tag: `crane-${i}`,
object3d: crane[i],
yaw: 24,
pitch: 0
}
});
let c3 = new Entity({
lonlat: [33.2045480, 69.0818760, 20],
geoObject: {
color: "white",
scale: 4.0,
instanced: true,
tag: `crane-${i}`,
object3d: crane[i],
yaw: -95,
pitch: 0
}
});
let c4 = new Entity({
lonlat: [33.2024654, 69.0824443, 21],
geoObject: {
color: "white",
scale: 4.0,
instanced: true,
tag: `crane-${i}`,
object3d: crane[i],
yaw: -160,
pitch: 0
}
});
let c5 = new Entity({
lonlat: [33.2027773, 69.0817816, 21],
geoObject: {
color: "white",
scale: 4.0,
instanced: true,
tag: `crane-${i}`,
object3d: crane[i],
yaw: 42,
pitch: 0
}
});
let c6 = new Entity({
lonlat: [33.2035357, 69.0821616, 21],
geoObject: {
color: "white",
scale: 4.0,
instanced: true,
tag: `crane-${i}`,
object3d: crane[i],
yaw: -229,
pitch: 0
}
});
cranesLayer.add(c1);
cranesLayer.add(c2);
cranesLayer.add(c3);
cranesLayer.add(c4);
cranesLayer.add(c5);
cranesLayer.add(c6);
}
const globus = new Globe({
target: "earth",
name: "Earth",
terrain: new GlobusRgbTerrain(),
layers: [sat, dockLayer, cranesLayer],
atmosphereEnabled: true,
fontsSrc: "../../res/fonts",
sun: {
stopped: false
},
viewExtent: [33.1758537, 69.0755299, 33.2251571, 69.08960050]
});
globus.planet.addControl(new control.DebugInfo());
globus.planet.addControl(new control.KeyboardNavigation());
globus.planet.addControl(new control.ToggleWireframe());
globus.planet.addControl(new control.LayerSwitcher());
globus.planet.addControl(new control.RulerSwitcher());
globus.planet.addControl(new control.TimelineControl());
}
main()