@openglobus/og 1.0.0-rc19 → 1.0.0-rc20
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/Globe.d.ts +4 -2
- package/lib/assets/TerrainWorker.worker-BwueoQpg.js.map +1 -0
- package/lib/control/LayerSwitcher.d.ts +18 -0
- package/lib/control/depthCamera/DepthCamera.d.ts +10 -5
- package/lib/control/entityEditor/CameraEditorView.d.ts +0 -2
- package/lib/control/timeline/TimelineControl.d.ts +6 -1
- package/lib/control/timeline/TimelineModel.d.ts +10 -0
- package/lib/control/timeline/TimelineView.d.ts +41 -4
- package/lib/index.d.ts +4 -0
- package/lib/input/KeyboardHandler.d.ts +3 -0
- package/lib/og.css +1 -1
- package/lib/og.es.js +1 -1
- package/lib/og.es.js.map +1 -1
- package/lib/quadTree/QuadTreeStrategy.d.ts +8 -0
- package/lib/renderer/Renderer.d.ts +9 -0
- package/lib/renderer/RendererEvents.d.ts +1 -0
- package/lib/renderer/cascadeShadows/CascadeShadowMap.d.ts +2 -4
- package/lib/renderer/projectors/ProjectorManager.d.ts +2 -1
- package/lib/renderer/shadows/ShadowManager.d.ts +1 -0
- package/lib/scene/Planet.d.ts +53 -2
- package/lib/segment/Segment.d.ts +8 -0
- package/lib/shaders/common/uniforms.d.ts +2 -0
- package/lib/terrain/EmptyTerrain.d.ts +42 -1
- package/lib/terrain/GlobusRgbTerrain.d.ts +1 -0
- package/lib/terrain/MapterhornTerrain.d.ts +1 -0
- package/lib/ui/Dialog.d.ts +34 -0
- package/lib/ui/Dock.d.ts +151 -0
- package/lib/ui/Input.d.ts +1 -0
- package/lib/ui/index.d.ts +1 -0
- package/lib/utils/TerrainWorker.d.ts +1 -0
- package/lib/utils/cameraFootprint.d.ts +72 -0
- package/lib/utils/shadowCameraFit.d.ts +175 -0
- package/package.json +1 -1
- package/lib/assets/TerrainWorker.worker-B4Gp0jCy.js.map +0 -1
- package/lib/tsconfig.tsbuildinfo +0 -1
package/lib/Globe.d.ts
CHANGED
|
@@ -16,6 +16,7 @@ import { QuadTreeStrategy } from "./quadTree";
|
|
|
16
16
|
import type { ShadeModeInput } from "./shadeModeConstants";
|
|
17
17
|
export interface IGlobeParams {
|
|
18
18
|
attributionContainer?: HTMLElement;
|
|
19
|
+
uiContainer?: HTMLElement;
|
|
19
20
|
target?: string | HTMLElement;
|
|
20
21
|
skybox?: Scene;
|
|
21
22
|
pixelRatio?: number;
|
|
@@ -36,7 +37,7 @@ export interface IGlobeParams {
|
|
|
36
37
|
maxLoadingRequests?: number;
|
|
37
38
|
atmosphereEnabled?: boolean;
|
|
38
39
|
transitionOpacityEnabled?: boolean;
|
|
39
|
-
terrain?: EmptyTerrain;
|
|
40
|
+
terrain?: EmptyTerrain | EmptyTerrain[];
|
|
40
41
|
controls?: Control[];
|
|
41
42
|
minSlope?: number;
|
|
42
43
|
sun?: {
|
|
@@ -105,13 +106,14 @@ export interface IGlobeParams {
|
|
|
105
106
|
* @param {IGlobeParams} options - Options:
|
|
106
107
|
* @param {string|HTMLElement} options.target - HTML element id where planet canvas have to be created.
|
|
107
108
|
* @param {string} [options.name] - Planet name. Default is uniq identifier.
|
|
108
|
-
* @param {EmptyTerrain} [options.terrain] - Terrain provider. Default no terrain - og.terrain.EmptyTerrain.
|
|
109
|
+
* @param {EmptyTerrain | Array.<EmptyTerrain>} [options.terrain] - Terrain provider or providers array, where the first one becomes active. Default no terrain - og.terrain.EmptyTerrain.
|
|
109
110
|
* @param {Array.<Control>} [options.controls] - Controls.
|
|
110
111
|
* @param {Array.<Layer>} [options.layers] - Planet layers.
|
|
111
112
|
* @param {Extent | ExtentBoundingBox} [options.viewExtent] [options.viewExtent] - Viewable starting extent.
|
|
112
113
|
* @param {boolean} [options.autoActivate=true] - Globe rendering auto activation flag. True is default.
|
|
113
114
|
* @param {boolean} [options.idleMode=false] - Skips a frame rendering when nothing has been changed. False is default.
|
|
114
115
|
* @param {HTMLElement} [options.attributionContainer] - Container for attribution list.
|
|
116
|
+
* @param {HTMLElement} [options.uiContainer] - Container for dialogs, the render container by default.
|
|
115
117
|
* @param {number} [options.maxGridSize=128] = Maximal segment grid size. 128 is default
|
|
116
118
|
* @param {string} [options.fontsSrc] - Fonts collection url.
|
|
117
119
|
* @param {string} [options.resourcesSrc] - Resources root src.
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TerrainWorker.worker-BwueoQpg.js","names":[],"sources":["../../src/utils/TerrainWorker.worker.js"],"sourcesContent":["\"use strict\";\n//\n//Terrain worker\n//\n\nfunction binarySearchFast(arr, x) {\n let start = 0,\n end = arr.length - 1;\n while (start <= end) {\n let k = Math.floor((start + end) * 0.5);\n if (Math.abs(arr[k] - x) < 1e-3) return k;\n else if (arr[k] < x) start = k + 1;\n else end = k - 1;\n }\n return -1;\n}\n\nfunction checkNoDataValue(noDataValues, value) {\n return binarySearchFast(noDataValues, value) !== -1;\n}\n\nvar Vec3 = function (x, y, z) {\n this.x = x;\n this.y = y;\n this.z = z;\n};\n\nvar doubleToTwoFloats = function (v, high, low) {\n let x = v.x,\n y = v.y,\n z = v.z;\n\n var doubleHigh;\n\n if (x >= 0.0) {\n doubleHigh = Math.floor(x / 65536.0) * 65536.0;\n high.x = Math.fround(doubleHigh);\n low.x = Math.fround(x - doubleHigh);\n } else {\n doubleHigh = Math.floor(-x / 65536.0) * 65536.0;\n high.x = Math.fround(-doubleHigh);\n low.x = Math.fround(x + doubleHigh);\n }\n\n if (y >= 0.0) {\n doubleHigh = Math.floor(y / 65536.0) * 65536.0;\n high.y = Math.fround(doubleHigh);\n low.y = Math.fround(y - doubleHigh);\n } else {\n doubleHigh = Math.floor(-y / 65536.0) * 65536.0;\n high.y = Math.fround(-doubleHigh);\n low.y = Math.fround(y + doubleHigh);\n }\n\n if (z >= 0.0) {\n doubleHigh = Math.floor(z / 65536.0) * 65536.0;\n high.z = Math.fround(doubleHigh);\n low.z = Math.fround(z - doubleHigh);\n } else {\n doubleHigh = Math.floor(-z / 65536.0) * 65536.0;\n high.z = Math.fround(-doubleHigh);\n low.z = Math.fround(z + doubleHigh);\n }\n};\n\nVec3.prototype.sub = function (v) {\n return new Vec3(this.x - v.x, this.y - v.y, this.z - v.z);\n};\n\nVec3.prototype.add = function (v) {\n return new Vec3(this.x + v.x, this.y + v.y, this.z + v.z);\n};\n\nVec3.prototype.cross = function (v) {\n return new Vec3(this.y * v.z - this.z * v.y, this.z * v.x - this.x * v.z, this.x * v.y - this.y * v.x);\n};\n\nVec3.prototype.normalize = function () {\n var x = this.x,\n y = this.y,\n z = this.z;\n var length = 1.0 / Math.sqrt(x * x + y * y + z * z);\n this.x = x * length;\n this.y = y * length;\n this.z = z * length;\n return this;\n};\n\nVec3.prototype.distance = function (v) {\n return this.sub(v).length();\n};\n\nVec3.prototype.length = function () {\n return Math.sqrt(this.x * this.x + this.y * this.y + this.z * this.z);\n};\n\nvar blerp = function (x, y, fQ11, fQ21, fQ12, fQ22) {\n return fQ11 * (1.0 - x) * (1.0 - y) + fQ21 * x * (1.0 - y) + fQ12 * (1.0 - x) * y + fQ22 * x * y;\n};\n\nvar _tempVec = new Vec3(0.0, 0.0, 0.0);\nvar _rtcTempVec = new Vec3(0.0, 0.0, 0.0);\n\nvar _tempHigh = new Vec3(0.0, 0.0, 0.0),\n _tempLow = new Vec3(0.0, 0.0, 0.0);\n\nself.onmessage = function (e) {\n var elevations = e.data.elevations,\n this_plainVertices = e.data.this_plainVertices,\n this_plainNormals = e.data.this_plainNormals,\n this_normalMapVertices = e.data.this_normalMapVertices,\n this_normalMapNormals = e.data.this_normalMapNormals,\n heightFactor = e.data.heightFactor,\n gridSize = e.data.gridSize,\n noDataValues = e.data.noDataValues,\n id = e.data.id;\n\n let rtc_x = e.data.relativeCenter[0],\n rtc_y = e.data.relativeCenter[1],\n rtc_z = e.data.relativeCenter[2];\n\n var xmin = 549755748352.0,\n xmax = -549755748352.0,\n ymin = 549755748352.0,\n ymax = -549755748352.0,\n zmin = 549755748352.0,\n zmax = -549755748352.0;\n\n // Squared geocentric distance of the same vertices. The axis aligned bounds above cannot tell\n // relief from segment size, because the box of a tilted patch is far larger than the patch, so\n // the radius range is accumulated here instead. Kept squared to avoid a root per vertex.\n var r2min = Infinity,\n r2max = -Infinity;\n\n const fileGridSize = Math.sqrt(elevations.length) - 1;\n\n const fileGridSize_one = fileGridSize + 1;\n const fileGridSize_one_x2 = fileGridSize_one * fileGridSize_one;\n const tgs = gridSize;\n const dg = fileGridSize / tgs;\n const gs = tgs + 1;\n const hf = heightFactor;\n\n var vInd = 0,\n noDataInd = 0;\n\n var gsgs3 = gs * gs * 3;\n\n var terrainVertices = new Float64Array(gsgs3),\n terrainVerticesHigh = new Float32Array(gsgs3),\n terrainVerticesLow = new Float32Array(gsgs3),\n noDataVertices = new Uint8Array(gs * gs);\n\n var normalMapNormals, normalMapVertices;\n\n var nv = this_normalMapVertices,\n nn = this_normalMapNormals;\n\n if (fileGridSize >= tgs) {\n normalMapNormals = new Float32Array(fileGridSize_one_x2 * 3);\n normalMapVertices = new Float64Array(fileGridSize_one_x2 * 3);\n\n for (let k = 0; k < fileGridSize_one_x2; k++) {\n var j = k % fileGridSize_one,\n i = ~~(k / fileGridSize_one);\n\n //\n // V0\n //\n var hInd0 = k;\n var vInd0 = hInd0 * 3;\n var currElv = elevations[hInd0];\n if (checkNoDataValue(noDataValues, currElv)) {\n currElv = 0.0;\n }\n var h0 = hf * currElv;\n var v0 = new Vec3(\n rtc_x + nv[vInd0] + h0 * nn[vInd0],\n rtc_y + nv[vInd0 + 1] + h0 * nn[vInd0 + 1],\n rtc_z + nv[vInd0 + 2] + h0 * nn[vInd0 + 2]\n );\n\n normalMapVertices[vInd0] = v0.x - rtc_x;\n normalMapVertices[vInd0 + 1] = v0.y - rtc_y;\n normalMapVertices[vInd0 + 2] = v0.z - rtc_z;\n\n //\n // The vertex goes into screen buffer\n if (i % dg === 0 && j % dg === 0) {\n let currVert = new Vec3(rtc_x + nv[vInd0], rtc_y + nv[vInd0 + 1], rtc_z + nv[vInd0 + 2]);\n let nextVert = new Vec3(rtc_x + nv[vInd0 + 3], rtc_y + nv[vInd0 + 4], rtc_z + nv[vInd0 + 5]);\n\n let nextElv = elevations[hInd0 + 1];\n if (checkNoDataValue(noDataValues, nextElv)) {\n nextElv = 0.0;\n }\n\n let eps = false;\n if (noDataValues.length === 0) {\n let step = currVert.distance(nextVert);\n let deltaElv = Math.abs(currElv - nextElv);\n eps = deltaElv / step > 10.0 || currElv < -5000;\n }\n\n if (eps) {\n noDataVertices[noDataInd] = 1;\n } else {\n noDataVertices[noDataInd] = 0;\n if (v0.x < xmin) xmin = v0.x;\n if (v0.x > xmax) xmax = v0.x;\n if (v0.y < ymin) ymin = v0.y;\n if (v0.y > ymax) ymax = v0.y;\n if (v0.z < zmin) zmin = v0.z;\n if (v0.z > zmax) zmax = v0.z;\n\n let r2_v0 = v0.x * v0.x + v0.y * v0.y + v0.z * v0.z;\n if (r2_v0 < r2min) r2min = r2_v0;\n if (r2_v0 > r2max) r2max = r2_v0;\n }\n\n let rtc_v0 = new Vec3(v0.x - rtc_x, v0.y - rtc_y, v0.z - rtc_z);\n doubleToTwoFloats(rtc_v0, _tempHigh, _tempLow);\n\n terrainVerticesHigh[vInd] = _tempHigh.x;\n terrainVerticesLow[vInd] = _tempLow.x;\n terrainVertices[vInd++] = rtc_v0.x;\n\n terrainVerticesHigh[vInd] = _tempHigh.y;\n terrainVerticesLow[vInd] = _tempLow.y;\n terrainVertices[vInd++] = rtc_v0.y;\n\n terrainVerticesHigh[vInd] = _tempHigh.z;\n terrainVerticesLow[vInd] = _tempLow.z;\n terrainVertices[vInd++] = rtc_v0.z;\n\n noDataInd++;\n }\n\n if (i !== fileGridSize && j !== fileGridSize) {\n //\n // V1\n //\n var hInd1 = k + 1;\n var vInd1 = hInd1 * 3;\n var elv = elevations[hInd1];\n if (checkNoDataValue(noDataValues, elv)) {\n elv = 0.0;\n }\n var h1 = hf * elv;\n var v1 = new Vec3(\n rtc_x + nv[vInd1] + h1 * nn[vInd1],\n rtc_y + nv[vInd1 + 1] + h1 * nn[vInd1 + 1],\n rtc_z + nv[vInd1 + 2] + h1 * nn[vInd1 + 2]\n );\n\n normalMapVertices[vInd1] = v1.x - rtc_x;\n normalMapVertices[vInd1 + 1] = v1.y - rtc_y;\n normalMapVertices[vInd1 + 2] = v1.z - rtc_z;\n\n //\n // V2\n //\n var hInd2 = k + fileGridSize_one;\n var vInd2 = hInd2 * 3;\n elv = elevations[hInd2];\n if (checkNoDataValue(noDataValues, elv)) {\n elv = 0.0;\n }\n var h2 = hf * elv;\n var v2 = new Vec3(\n rtc_x + nv[vInd2] + h2 * nn[vInd2],\n rtc_y + nv[vInd2 + 1] + h2 * nn[vInd2 + 1],\n rtc_z + nv[vInd2 + 2] + h2 * nn[vInd2 + 2]\n );\n\n normalMapVertices[vInd2] = v2.x - rtc_x;\n normalMapVertices[vInd2 + 1] = v2.y - rtc_y;\n normalMapVertices[vInd2 + 2] = v2.z - rtc_z;\n\n //\n // V3\n //\n var hInd3 = k + fileGridSize_one + 1;\n var vInd3 = hInd3 * 3;\n elv = elevations[hInd3];\n if (checkNoDataValue(noDataValues, elv)) {\n elv = 0.0;\n }\n var h3 = hf * elv;\n var v3 = new Vec3(\n rtc_x + nv[vInd3] + h3 * nn[vInd3],\n rtc_y + nv[vInd3 + 1] + h3 * nn[vInd3 + 1],\n rtc_z + nv[vInd3 + 2] + h3 * nn[vInd3 + 2]\n );\n\n normalMapVertices[vInd3] = v3.x - rtc_x;\n normalMapVertices[vInd3 + 1] = v3.y - rtc_y;\n normalMapVertices[vInd3 + 2] = v3.z - rtc_z;\n\n //\n // Normal\n //\n var e10 = v1.sub(v0),\n e20 = v2.sub(v0),\n e30 = v3.sub(v0);\n\n var sw = e20.cross(e30).normalize();\n var ne = e30.cross(e10).normalize();\n var n0 = ne.add(sw).normalize();\n\n normalMapNormals[vInd0] += n0.x;\n normalMapNormals[vInd0 + 1] += n0.y;\n normalMapNormals[vInd0 + 2] += n0.z;\n\n normalMapNormals[vInd1] += ne.x;\n normalMapNormals[vInd1 + 1] += ne.y;\n normalMapNormals[vInd1 + 2] += ne.z;\n\n normalMapNormals[vInd2] += sw.x;\n normalMapNormals[vInd2 + 1] += sw.y;\n normalMapNormals[vInd2 + 2] += sw.z;\n\n normalMapNormals[vInd3] += n0.x;\n normalMapNormals[vInd3 + 1] += n0.y;\n normalMapNormals[vInd3 + 2] += n0.z;\n }\n }\n } else {\n normalMapNormals = new Float32Array(gsgs3);\n normalMapVertices = new Float64Array(gsgs3);\n\n var oneSize = tgs / fileGridSize;\n var gsgs = gsgs3 / 3;\n var fgsOne = fileGridSize + 1;\n\n for (let i = 0; i < gsgs; i++) {\n let ii = Math.floor(i / gs),\n ij = i % gs;\n\n let qii = ii % oneSize,\n qij = ij % oneSize;\n\n let hlt_ind = Math.floor(ii / oneSize) * fgsOne + Math.floor(ij / oneSize);\n\n if (ij === tgs) {\n hlt_ind -= 1;\n qij = oneSize;\n }\n\n if (ii === tgs) {\n hlt_ind -= fgsOne;\n qii = oneSize;\n }\n\n let hrt_ind = hlt_ind + 1,\n hlb_ind = hlt_ind + fgsOne,\n hrb_ind = hlb_ind + 1;\n\n let h_lt = elevations[hlt_ind],\n h_rt = elevations[hrt_ind],\n h_lb = elevations[hlb_ind],\n h_rb = elevations[hrb_ind];\n\n if (checkNoDataValue(noDataValues, h_lt)) {\n h_lt = 0.0;\n }\n\n if (checkNoDataValue(noDataValues, h_rt)) {\n h_rt = 0.0;\n }\n\n if (checkNoDataValue(noDataValues, h_lb)) {\n h_lb = 0.0;\n }\n\n if (checkNoDataValue(noDataValues, h_rb)) {\n h_rb = 0.0;\n }\n\n let hi = blerp(qij / oneSize, qii / oneSize, h_lt, h_rt, h_lb, h_rb);\n\n let i3 = i * 3;\n\n _rtcTempVec.x = this_plainVertices[i3] + hi * this_plainNormals[i3];\n _rtcTempVec.y = this_plainVertices[i3 + 1] + hi * this_plainNormals[i3 + 1];\n _rtcTempVec.z = this_plainVertices[i3 + 2] + hi * this_plainNormals[i3 + 2];\n\n doubleToTwoFloats(_rtcTempVec, _tempHigh, _tempLow);\n\n terrainVertices[i3] = _rtcTempVec.x;\n terrainVertices[i3 + 1] = _rtcTempVec.y;\n terrainVertices[i3 + 2] = _rtcTempVec.z;\n\n terrainVerticesHigh[i3] = _tempHigh.x;\n terrainVerticesHigh[i3 + 1] = _tempHigh.y;\n terrainVerticesHigh[i3 + 2] = _tempHigh.z;\n\n terrainVerticesLow[i3] = _tempLow.x;\n terrainVerticesLow[i3 + 1] = _tempLow.y;\n terrainVerticesLow[i3 + 2] = _tempLow.z;\n\n _tempVec.x = _rtcTempVec.x + rtc_x;\n _tempVec.y = _rtcTempVec.y + rtc_y;\n _tempVec.z = _rtcTempVec.z + rtc_z;\n\n if (_tempVec.x < xmin) xmin = _tempVec.x;\n if (_tempVec.x > xmax) xmax = _tempVec.x;\n if (_tempVec.y < ymin) ymin = _tempVec.y;\n if (_tempVec.y > ymax) ymax = _tempVec.y;\n if (_tempVec.z < zmin) zmin = _tempVec.z;\n if (_tempVec.z > zmax) zmax = _tempVec.z;\n\n let r2_tmp = _tempVec.x * _tempVec.x + _tempVec.y * _tempVec.y + _tempVec.z * _tempVec.z;\n if (r2_tmp < r2min) r2min = r2_tmp;\n if (r2_tmp > r2max) r2max = r2_tmp;\n }\n\n normalMapVertices.set(terrainVertices);\n\n for (let k = 0; k < gsgs; k++) {\n let j = k % gs,\n i = ~~(k / gs);\n\n if (i !== tgs && j !== tgs) {\n let v0ind = k * 3,\n v1ind = v0ind + 3,\n v2ind = v0ind + gs * 3,\n v3ind = v2ind + 3;\n\n let v0 = new Vec3(\n terrainVertices[v0ind] + rtc_x,\n terrainVertices[v0ind + 1] + rtc_y,\n terrainVertices[v0ind + 2] + rtc_z\n ),\n v1 = new Vec3(\n terrainVertices[v1ind] + rtc_x,\n terrainVertices[v1ind + 1] + rtc_y,\n terrainVertices[v1ind + 2] + rtc_z\n ),\n v2 = new Vec3(\n terrainVertices[v2ind] + rtc_x,\n terrainVertices[v2ind + 1] + rtc_y,\n terrainVertices[v2ind + 2] + rtc_z\n ),\n v3 = new Vec3(\n terrainVertices[v3ind] + rtc_x,\n terrainVertices[v3ind + 1] + rtc_y,\n terrainVertices[v3ind + 2] + rtc_z\n );\n\n let e10 = v1.sub(v0).normalize(),\n e20 = v2.sub(v0).normalize(),\n e30 = v3.sub(v0).normalize();\n\n let sw = e20.cross(e30).normalize();\n let ne = e30.cross(e10).normalize();\n let n0 = ne.add(sw).normalize();\n\n normalMapNormals[v0ind] += n0.x;\n normalMapNormals[v0ind + 1] += n0.y;\n normalMapNormals[v0ind + 2] += n0.z;\n\n normalMapNormals[v1ind] += ne.x;\n normalMapNormals[v1ind + 1] += ne.y;\n normalMapNormals[v1ind + 2] += ne.z;\n\n normalMapNormals[v2ind] += sw.x;\n normalMapNormals[v2ind + 1] += sw.y;\n normalMapNormals[v2ind + 2] += sw.z;\n\n normalMapNormals[v3ind] += n0.x;\n normalMapNormals[v3ind + 1] += n0.y;\n normalMapNormals[v3ind + 2] += n0.z;\n }\n }\n }\n\n self.postMessage(\n {\n id: id,\n normalMapNormals: normalMapNormals,\n normalMapVertices: normalMapVertices,\n terrainVertices: terrainVertices,\n terrainVerticesHigh: terrainVerticesHigh,\n terrainVerticesLow: terrainVerticesLow,\n noDataVertices: noDataVertices,\n bounds: [xmin, ymin, zmin, xmax, ymax, zmax],\n radiusRange: r2max >= r2min ? [Math.sqrt(r2min), Math.sqrt(r2max)] : null,\n relativeCenter: e.data.relativeCenter\n },\n [\n normalMapNormals.buffer,\n normalMapVertices.buffer,\n terrainVertices.buffer,\n terrainVerticesHigh.buffer,\n terrainVerticesLow.buffer,\n noDataVertices.buffer\n ]\n );\n};\n"],"mappings":"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"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { Control } from "./Control";
|
|
2
2
|
import type { IControlParams } from "./Control";
|
|
3
3
|
import { Dialog } from "../ui/Dialog";
|
|
4
|
+
import { EmptyTerrain } from "../terrain/EmptyTerrain";
|
|
4
5
|
import { Layer } from "../layer/Layer";
|
|
5
6
|
import { ToggleButton } from "../ui/ToggleButton";
|
|
6
7
|
import { View } from "../ui/View";
|
|
@@ -15,6 +16,17 @@ declare class LayerButtonView extends View<Layer> {
|
|
|
15
16
|
protected _onDblClick: () => void;
|
|
16
17
|
remove(): void;
|
|
17
18
|
}
|
|
19
|
+
interface ITerrainButtonParams extends IViewParams {
|
|
20
|
+
model: EmptyTerrain;
|
|
21
|
+
onClick: (terrain: EmptyTerrain) => void;
|
|
22
|
+
}
|
|
23
|
+
declare class TerrainButtonView extends View<EmptyTerrain> {
|
|
24
|
+
protected _onClickCallback: (terrain: EmptyTerrain) => void;
|
|
25
|
+
constructor(params: ITerrainButtonParams);
|
|
26
|
+
render(params?: any): this;
|
|
27
|
+
setActive(isActive: boolean): void;
|
|
28
|
+
protected _onClick: () => void;
|
|
29
|
+
}
|
|
18
30
|
/**
|
|
19
31
|
* Advanced :) layer switcher, includes base layers, overlays, geo images etc. groups.
|
|
20
32
|
* Double click for zoom, drag-and-drop to change zIndex
|
|
@@ -23,11 +35,17 @@ export declare class LayerSwitcher extends Control {
|
|
|
23
35
|
protected _dialog: Dialog<null>;
|
|
24
36
|
protected _toggleBtn: ToggleButton;
|
|
25
37
|
protected _panel: View<null>;
|
|
38
|
+
$terrains: HTMLElement | null;
|
|
26
39
|
$baseLayers: HTMLElement | null;
|
|
27
40
|
$overlays: HTMLElement | null;
|
|
28
41
|
_layerViews: LayerButtonView[];
|
|
42
|
+
_terrainViews: TerrainButtonView[];
|
|
29
43
|
constructor(options?: ILayerSwitcherParams);
|
|
30
44
|
oninit(): void;
|
|
45
|
+
protected _initTerrains(): void;
|
|
46
|
+
protected _onTerrainChange: () => void;
|
|
47
|
+
addTerrain: (terrain: EmptyTerrain) => void;
|
|
48
|
+
removeTerrain: (terrain: EmptyTerrain) => void;
|
|
31
49
|
protected _initLayers(): void;
|
|
32
50
|
protected _createLayerButton(layer: Layer): LayerButtonView;
|
|
33
51
|
protected _findLayerView(layer: Layer): LayerButtonView | null;
|
|
@@ -32,9 +32,8 @@ export interface IDepthCameraParams {
|
|
|
32
32
|
enableSegmentSkirts?: boolean;
|
|
33
33
|
enableSegmentFaceCulling?: boolean;
|
|
34
34
|
excludeLayers?: Vector[];
|
|
35
|
-
|
|
35
|
+
depthBiasWorld?: number;
|
|
36
36
|
normalBias?: number;
|
|
37
|
-
depthEpsilon?: number;
|
|
38
37
|
}
|
|
39
38
|
export declare class DepthCamera {
|
|
40
39
|
protected static __counter__: number;
|
|
@@ -46,9 +45,8 @@ export declare class DepthCamera {
|
|
|
46
45
|
readonly verticalViewAngle: number;
|
|
47
46
|
readonly horizontalViewAngle?: number;
|
|
48
47
|
readonly excludeLayers: Vector[];
|
|
49
|
-
|
|
48
|
+
depthBiasWorld: number;
|
|
50
49
|
normalBias: number;
|
|
51
|
-
depthEpsilon: number;
|
|
52
50
|
enabled: boolean;
|
|
53
51
|
enableSegmentSkirts: boolean;
|
|
54
52
|
enableSegmentFaceCulling: boolean;
|
|
@@ -61,12 +59,14 @@ export declare class DepthCamera {
|
|
|
61
59
|
protected _planet: Planet | null;
|
|
62
60
|
protected _renderer: Renderer | null;
|
|
63
61
|
protected _initialized: boolean;
|
|
64
|
-
|
|
62
|
+
_forceOwnQuadTreeStrategyPass: boolean;
|
|
65
63
|
protected _showFrustum: boolean;
|
|
66
64
|
protected _showFootprint: boolean;
|
|
67
65
|
protected _isOrthographic: boolean;
|
|
68
66
|
protected _focusDistance: number;
|
|
69
67
|
protected _lastPlanetHeightFactor: number;
|
|
68
|
+
protected _orthoTexelSizeX: number;
|
|
69
|
+
protected _orthoTexelSizeY: number;
|
|
70
70
|
protected _frustumLength: number;
|
|
71
71
|
protected _frustumColor: Vec4 | NumberArray4 | string;
|
|
72
72
|
protected _cameraFrustumEntity: Entity | null;
|
|
@@ -87,6 +87,7 @@ export declare class DepthCamera {
|
|
|
87
87
|
set showFrustum(showFrustum: boolean);
|
|
88
88
|
get showFootprint(): boolean;
|
|
89
89
|
set showFootprint(showFootprint: boolean);
|
|
90
|
+
get texelScale(): number;
|
|
90
91
|
get isOrthographic(): boolean;
|
|
91
92
|
set isOrthographic(isOrthographic: boolean);
|
|
92
93
|
get focusDistance(): number;
|
|
@@ -111,6 +112,10 @@ export declare class DepthCamera {
|
|
|
111
112
|
getDepthTexture(): WebGLTexture;
|
|
112
113
|
protected _syncPlanetHeightFactor(): void;
|
|
113
114
|
protected _prepareOrthographicProjection(): void;
|
|
115
|
+
/**
|
|
116
|
+
* Quantizes the orthographic extent and keeps the previous size while it still fits to prevent jitter.
|
|
117
|
+
*/
|
|
118
|
+
protected _quantizeOrthoTexelSize(extent: number, resolution: number, prevTexelSize: number): number;
|
|
114
119
|
protected _snapOrthographicProjectionToTexelGrid(): boolean;
|
|
115
120
|
getCartesianFromPixelTerrain(x: number, y: number): Vec3 | undefined;
|
|
116
121
|
getLonLatFromPixelTerrain(x: number, y: number): LonLat | undefined;
|
|
@@ -26,7 +26,6 @@ export declare class CameraEditorView extends View<Entity> {
|
|
|
26
26
|
protected _showFootprintView: Checkbox;
|
|
27
27
|
protected _biasView: Input;
|
|
28
28
|
protected _normalBiasView: Input;
|
|
29
|
-
protected _depthEpsilonView: Input;
|
|
30
29
|
protected _titleBarView: TitleBarView;
|
|
31
30
|
protected _bodyEl: HTMLElement | null;
|
|
32
31
|
protected _depthCamera: DepthCamera | null;
|
|
@@ -57,6 +56,5 @@ export declare class CameraEditorView extends View<Entity> {
|
|
|
57
56
|
protected _onChangeShowFootprint: (showFootprint: boolean) => void;
|
|
58
57
|
protected _onChangeBias: (value: string) => void;
|
|
59
58
|
protected _onChangeNormalBias: (value: string) => void;
|
|
60
|
-
protected _onChangeDepthEpsilon: (value: string) => void;
|
|
61
59
|
}
|
|
62
60
|
export {};
|
|
@@ -17,7 +17,9 @@ type TimelineControlEventsList = [
|
|
|
17
17
|
"stopdrag",
|
|
18
18
|
"startdragcurrent",
|
|
19
19
|
"stopdragcurrent",
|
|
20
|
-
"localtime"
|
|
20
|
+
"localtime",
|
|
21
|
+
"suntime",
|
|
22
|
+
"sundate"
|
|
21
23
|
];
|
|
22
24
|
interface ITimelineControlParams extends IControlParams {
|
|
23
25
|
name?: string;
|
|
@@ -37,6 +39,9 @@ declare class TimelineControl extends Control {
|
|
|
37
39
|
* @public
|
|
38
40
|
*/
|
|
39
41
|
get model(): TimelineModel;
|
|
42
|
+
/** Date the Sun marker stands on. Setting it moves the marker without dispatching. */
|
|
43
|
+
get sunDate(): Date;
|
|
44
|
+
set sunDate(date: Date);
|
|
40
45
|
/**
|
|
41
46
|
* Adds a colored time interval drawn on the scale, e.g. one per telemetry track.
|
|
42
47
|
* Spans that overlap in time are placed on separate rows automatically, and the
|
|
@@ -40,6 +40,16 @@ declare class TimelineModel {
|
|
|
40
40
|
protected _laneCount: number;
|
|
41
41
|
multiplier: number;
|
|
42
42
|
dt: number;
|
|
43
|
+
/**
|
|
44
|
+
* While set, playing does not advance
|
|
45
|
+
* the time: something else sets `current` instead.
|
|
46
|
+
*/
|
|
47
|
+
driven: boolean;
|
|
48
|
+
/**
|
|
49
|
+
* While set, playing takes the current time
|
|
50
|
+
* from this source instead of the frame delta.
|
|
51
|
+
*/
|
|
52
|
+
clock: (() => number) | null;
|
|
43
53
|
constructor(options?: ITimelineParams);
|
|
44
54
|
addSpan(params: ITimelineSpanParams): ITimelineSpan;
|
|
45
55
|
addSpans(params: ITimelineSpanParams[]): ITimelineSpan[];
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import type { EventsHandler } from "../../Events";
|
|
2
2
|
import { ButtonGroup } from "../../ui/ButtonGroup";
|
|
3
|
-
import { Checkbox } from "../../ui/Checkbox";
|
|
4
3
|
import { View } from "../../ui/View";
|
|
5
4
|
import type { IViewParams, ViewEventsList } from "../../ui/View";
|
|
6
5
|
import { ToggleButton } from "../../ui/ToggleButton";
|
|
@@ -18,6 +17,7 @@ declare const TOUCH_MODE_NONE = 0;
|
|
|
18
17
|
declare const TOUCH_MODE_CURRENT = 1;
|
|
19
18
|
declare const TOUCH_MODE_PINCH = 2;
|
|
20
19
|
declare const TOUCH_MODE_SCALE = 3;
|
|
20
|
+
declare const TOUCH_MODE_SUN = 4;
|
|
21
21
|
type TimelineViewEventsList = [
|
|
22
22
|
"startdrag",
|
|
23
23
|
"stopdrag",
|
|
@@ -29,9 +29,11 @@ type TimelineViewEventsList = [
|
|
|
29
29
|
"playback",
|
|
30
30
|
"pause",
|
|
31
31
|
"visibility",
|
|
32
|
-
"localtime"
|
|
32
|
+
"localtime",
|
|
33
|
+
"suntime",
|
|
34
|
+
"sundate"
|
|
33
35
|
];
|
|
34
|
-
type TimelineTouchMode = typeof TOUCH_MODE_NONE | typeof TOUCH_MODE_CURRENT | typeof TOUCH_MODE_PINCH | typeof TOUCH_MODE_SCALE;
|
|
36
|
+
type TimelineTouchMode = typeof TOUCH_MODE_NONE | typeof TOUCH_MODE_CURRENT | typeof TOUCH_MODE_PINCH | typeof TOUCH_MODE_SCALE | typeof TOUCH_MODE_SUN;
|
|
35
37
|
interface ITimelineTouchPointer {
|
|
36
38
|
pointerId: number;
|
|
37
39
|
clientX: number;
|
|
@@ -43,6 +45,7 @@ declare class TimelineView extends View<TimelineModel> {
|
|
|
43
45
|
$controls: HTMLElement | null;
|
|
44
46
|
protected _frameEl: HTMLElement | null;
|
|
45
47
|
protected _currentEl: HTMLElement | null;
|
|
48
|
+
protected _sunEl: HTMLElement | null;
|
|
46
49
|
protected _canvasEl: HTMLCanvasElement;
|
|
47
50
|
protected _ctx: CanvasRenderingContext2D;
|
|
48
51
|
protected _spansCanvasEl: HTMLCanvasElement;
|
|
@@ -52,6 +55,10 @@ declare class TimelineView extends View<TimelineModel> {
|
|
|
52
55
|
protected _isDragging: boolean;
|
|
53
56
|
protected _isCurrentDragging: boolean;
|
|
54
57
|
protected _isCurrentMouseOver: boolean;
|
|
58
|
+
protected _isSunDragging: boolean;
|
|
59
|
+
protected _isSunMouseOver: boolean;
|
|
60
|
+
protected _sunDate: Date;
|
|
61
|
+
protected _sunTime: boolean;
|
|
55
62
|
protected _minWidth: number;
|
|
56
63
|
protected _canvasScale: number;
|
|
57
64
|
protected _millisecondsInPixel: number;
|
|
@@ -59,6 +66,7 @@ declare class TimelineView extends View<TimelineModel> {
|
|
|
59
66
|
protected _clickRangeStart: Date;
|
|
60
67
|
protected _clickRangeEnd: Date;
|
|
61
68
|
protected _clickCurrentDate: Date;
|
|
69
|
+
protected _clickSunDate: Date;
|
|
62
70
|
protected _clickTime: number;
|
|
63
71
|
protected _clickDelay: number;
|
|
64
72
|
protected _clickMoveTolerance: number;
|
|
@@ -67,12 +75,16 @@ declare class TimelineView extends View<TimelineModel> {
|
|
|
67
75
|
protected _touchPointers: Map<number, ITimelineTouchPointer>;
|
|
68
76
|
protected _touchScalePointerId: number | null;
|
|
69
77
|
protected _touchCurrentPointerId: number | null;
|
|
78
|
+
protected _touchSunPointerId: number | null;
|
|
70
79
|
protected _onResizeObserver_: () => void;
|
|
71
80
|
protected _resizeObserver: ResizeObserver;
|
|
72
81
|
protected _pauseBtn: ToggleButton;
|
|
73
82
|
protected _playBtn: ToggleButton;
|
|
83
|
+
protected _playBackBtn: ToggleButton;
|
|
84
|
+
protected _multiplierEl: HTMLSelectElement | null;
|
|
74
85
|
protected _buttons: ButtonGroup;
|
|
75
|
-
protected
|
|
86
|
+
protected _localTimeBtn: ToggleButton;
|
|
87
|
+
protected _sunTimeBtn: ToggleButton;
|
|
76
88
|
protected _visibility: boolean;
|
|
77
89
|
constructor(options?: ITimelineViewParams);
|
|
78
90
|
protected _onResizeObserver(): void;
|
|
@@ -88,7 +100,23 @@ declare class TimelineView extends View<TimelineModel> {
|
|
|
88
100
|
*/
|
|
89
101
|
get localTime(): boolean;
|
|
90
102
|
set localTime(localTime: boolean);
|
|
103
|
+
/**
|
|
104
|
+
* True while the Sun is set from its own marker instead of the timeline.
|
|
105
|
+
* @public
|
|
106
|
+
* @type {boolean}
|
|
107
|
+
*/
|
|
108
|
+
get sunTime(): boolean;
|
|
109
|
+
set sunTime(sunTime: boolean);
|
|
110
|
+
/**
|
|
111
|
+
* Date the Sun marker stands on.
|
|
112
|
+
* @public
|
|
113
|
+
* @type {Date}
|
|
114
|
+
*/
|
|
115
|
+
get sunDate(): Date;
|
|
116
|
+
set sunDate(date: Date);
|
|
91
117
|
setVisibility(visibility: boolean): void;
|
|
118
|
+
protected _createMultiplier(): HTMLSelectElement;
|
|
119
|
+
protected _syncMultiplier(): void;
|
|
92
120
|
protected _syncPlayButtons: () => void;
|
|
93
121
|
reset(): void;
|
|
94
122
|
play(): void;
|
|
@@ -104,7 +132,12 @@ declare class TimelineView extends View<TimelineModel> {
|
|
|
104
132
|
protected _startCurrentDrag(clientX: number, sourceEvent: Event, pointerId?: number | null): void;
|
|
105
133
|
protected _moveCurrentDrag(clientX: number): void;
|
|
106
134
|
protected _stopCurrentDrag(): void;
|
|
135
|
+
protected _startSunDrag(clientX: number, pointerId?: number | null): void;
|
|
136
|
+
/** The Sun marker carries its own date: the model, and everything reading it, stay put. */
|
|
137
|
+
protected _moveSunDrag(clientX: number): void;
|
|
138
|
+
protected _stopSunDrag(): void;
|
|
107
139
|
protected _isClickGesture(clientX: number): boolean;
|
|
140
|
+
protected _setSunByClientX(clientX: number): Date;
|
|
108
141
|
protected _setCurrentByClientX(clientX: number): Date;
|
|
109
142
|
protected _captureTouchPointer(e: PointerEvent): void;
|
|
110
143
|
protected _updateTouchPointer(e: PointerEvent): void;
|
|
@@ -121,8 +154,11 @@ declare class TimelineView extends View<TimelineModel> {
|
|
|
121
154
|
protected _onMouseOut: () => void;
|
|
122
155
|
protected _onCurrentMouseEnter: () => void;
|
|
123
156
|
protected _onCurrentMouseOut: () => void;
|
|
157
|
+
protected _onSunMouseEnter: () => void;
|
|
158
|
+
protected _onSunMouseOut: () => void;
|
|
124
159
|
protected _onScalePointerDown: (e: PointerEvent) => void;
|
|
125
160
|
protected _onCurrentPointerDown: (e: PointerEvent) => void;
|
|
161
|
+
protected _onSunPointerDown: (e: PointerEvent) => void;
|
|
126
162
|
protected _onPointerMove: (e: PointerEvent) => void;
|
|
127
163
|
protected _onPointerUp: (e: PointerEvent) => void;
|
|
128
164
|
protected _onMouseMove: (e: MouseEvent) => void;
|
|
@@ -136,6 +172,7 @@ declare class TimelineView extends View<TimelineModel> {
|
|
|
136
172
|
protected _applyScaleBackground(): void;
|
|
137
173
|
protected _drawSpans: () => void;
|
|
138
174
|
protected _drawCurrent(): void;
|
|
175
|
+
protected _drawSun(): void;
|
|
139
176
|
draw(): void;
|
|
140
177
|
}
|
|
141
178
|
export { TimelineView };
|
package/lib/index.d.ts
CHANGED
|
@@ -34,6 +34,10 @@ export { ProjectorsPass } from "./renderer/projectors/ProjectorsPass";
|
|
|
34
34
|
export { ProjectorManager } from "./renderer/projectors/ProjectorManager";
|
|
35
35
|
export { ShadowManager } from "./renderer/shadows/ShadowManager";
|
|
36
36
|
export { SHADE_UNLIT, SHADE_PHONG, SHADE_PBR, type ShadeMode, type ShadeModeInput } from "./shadeModeConstants";
|
|
37
|
+
export type { CameraFootprintCorners, ICameraFootprintParams } from "./utils/cameraFootprint";
|
|
38
|
+
export { CameraFootprint, getCameraFootprint } from "./utils/cameraFootprint";
|
|
39
|
+
export type { ILightSpaceBounds, IOrthoBounds, IShadowCameraFitParams, IShadowCameraFitStats } from "./utils/shadowCameraFit";
|
|
40
|
+
export { ShadowCameraFit } from "./utils/shadowCameraFit";
|
|
37
41
|
export declare const version: string;
|
|
38
42
|
import { Geoid } from "./terrain/Geoid";
|
|
39
43
|
import { input } from "./input/input";
|
|
@@ -15,6 +15,9 @@ declare class KeyboardHandler {
|
|
|
15
15
|
protected _stampCache: Record<string, number>;
|
|
16
16
|
onKeyEvent: ((event: KeyboardEvent) => void) | null;
|
|
17
17
|
constructor();
|
|
18
|
+
protected _onDocumentKeyDown: (event: KeyboardEvent) => void;
|
|
19
|
+
protected _onDocumentKeyUp: (event: KeyboardEvent) => void;
|
|
20
|
+
destroy(): void;
|
|
18
21
|
getcurrentlyPressedKeys(): Record<number, boolean>;
|
|
19
22
|
getPressedKeysCallbacks(): Record<number, ICallbackHandler[]>;
|
|
20
23
|
getUnpressedKeysCallbacks(): Record<number, ICallbackHandler[]>;
|
package/lib/og.css
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
:root{--grey0:#242424;--grey1:#434244;--grey2:#3f3f46;--grey3:#bbb;--grey4:#5e5e5e;--grey5:#323232;--grey6:#b6b6b6;--grey7:#707070;--grey8:#e2e2e2;--grey9:#9f9f9f;--blue0:#1700a9ee}.og-map-button{cursor:pointer;z-index:1;background-color:var(--grey5);outline:none;width:40px;height:40px;position:absolute}.og-control-container{z-index:2;box-sizing:border-box;pointer-events:none;flex-flow:wrap;align-content:flex-start;gap:8px;width:min(136px,100% - 24px);display:flex;position:absolute;top:12px}.og-control-container>*{pointer-events:auto}.og-control-container .og-map-button{flex:none;margin:0;position:relative;inset:auto!important}.og-fps-button .og-button-text{font-variant-numeric:tabular-nums;-webkit-user-select:none;user-select:none;font-family:monospace;font-size:15px}.og-fps-button:hover{background-color:var(--grey5)}.og-control-container__top-left{justify-content:flex-start;left:10px}.og-control-container__top-right{justify-content:flex-end;right:12px}.og-control-container__bottom-right{flex-direction:column;justify-content:flex-end;align-items:flex-end;width:auto;max-width:calc(100% - 24px);top:auto;bottom:12px;right:12px}.og-control-container .og-scale-container,.og-control-container .og-coordinates{margin:0;position:relative;inset:auto!important}.og-control-container__bottom-right .og-scale-container{order:0}.og-control-container__bottom-right .og-coordinates{order:1}.ogCenterIcon{width:12px;height:12px;margin-bottom:-3.5px;margin-right:-7.5px;position:absolute;bottom:50%;right:50%}.ogHandPoiner{cursor:pointer}.defaultText{color:#fff;position:absolute;top:0;left:0}.ogGrabbingPoiner{cursor:grabbing!important}.og-inner{float:left;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;-khtml-user-select:none;width:100%;height:100%;position:relative;overflow:hidden}.og-attribution{text-align:right;background:#cecece;flex-direction:row;padding:1px 0;font-family:Segoe UI,Frutiger,Frutiger Linotype,Dejavu Sans,Helvetica Neue,Arial,sans-serif;font-size:.7rem;line-height:1.375em;display:flex;position:absolute;bottom:0;left:0}.og-attribution .og-attribution__layer{text-overflow:ellipsis;white-space:nowrap;color:#1f1f1f;align-items:center;margin-left:5px;margin-right:5px;display:inline;overflow:hidden}.og-attribution img{max-height:1.3em}input{accent-color:var(--blue0);cursor:pointer}.og-menu-bar-vertical{z-index:0;background-color:#403b3bd9;border-radius:2px;width:40px;height:40px;position:absolute;top:12px;right:12px;box-shadow:0 1px 4px #0f0f0f2b}.og-hide{display:none!important}.og-not-visible{visibility:hidden!important}.og-options-container{color:#b6b6b6;height:calc(100% - 30px);padding:12px;position:relative}.og-option{text-overflow:ellipsis;flex-direction:row;justify-content:left;align-items:center;width:100%;padding-bottom:7px;display:inline-block;position:relative}.og-option .og-slider{width:100%}.og-option .og-slider .og-slider-label,.og-option .og-color-label{width:100px;font-size:12px}.og-ddialog{background-color:var(--grey0);border:1px solid;border-color:var(--grey1);border-radius:4px;flex-direction:column;display:flex;position:absolute;overflow:auto;box-shadow:3px 3px 4px #0f0f0f2b}.og-ddialog .og-ddialog-header{z-index:1;background-color:var(--grey2);color:#fff;flex-direction:row;justify-content:space-between;align-items:center;width:100%;height:27px;padding:0;display:flex;position:relative}.og-ddialog .og-ddialog-header .og-ddialog-header__title{color:var(--grey3);pointer-events:none;padding-left:5px;font-family:Segoe UI,Tahoma,Geneva,Verdana,sans-serif;font-size:14px;font-weight:400}.og-ddialog .og-ddialog-header .og-ddialog-header__buttons{flex-direction:row;justify-content:flex-end;display:flex}.og-ddialog .og-ddialog-header .og-ddialog-header__buttons .og-button{border-radius:0}.og-ddialog .og-ddialog-container{width:100%;height:100%;font-family:Segoe UI,Frutiger,Frutiger Linotype,Dejavu Sans,Helvetica Neue,Arial,sans-serif;font-size:14px;position:relative;overflow:auto}.og-ddialog.dragging{-webkit-user-select:none;user-select:none}.og-ddialog .og-ddialog-resize-handle{cursor:nwse-resize;touch-action:none;z-index:2;width:20px;height:20px;display:block;position:absolute;bottom:0;right:0}.og-button{cursor:default;color:var(--grey6);border-radius:6px;flex-direction:row;place-content:center;align-items:center;padding:2px;display:flex}.og-button .og-button-icon{justify-content:center;align-items:center;line-height:0;display:flex}.og-button svg{width:24px;height:24px;display:block}.og-button svg path{fill:var(--grey6)}.og-button__active.og-button svg,.og-button__active.og-button svg path{fill:#fff}.og-button .og-button-text{font-family:Segoe UI,Tahoma,Geneva,Verdana,sans-serif;font-size:14px;font-weight:400}.og-button:hover{background-color:var(--grey4)}.og-button-size__20{width:20px;height:20px}.og-button__active{background-color:var(--grey2)}.og-layerSwitcher{color:#b6b6b6;width:100%;height:100%;position:relative;overflow:hidden auto}.og-layerSwitcher__title{color:#b6b6b6;width:100%;padding:5px;font-size:14px;position:relative}.og-layerSwitcher__list{flex-wrap:wrap;align-items:flex-start;width:100%;padding:2px;display:flex;position:relative}.og-layerSwitcher__layerButton{cursor:pointer;background-color:#7a7a7a;border:2px solid #0000;border-radius:7px;flex-direction:column-reverse;width:70px;height:70px;margin:3px;padding:0;display:flex;position:relative}.og-layerSwitcher__layerButton.og-layerSwitcher__visible{border:2px solid #56ff64}.og-layerSwitcher__layerButton.og-layerSwitcher__visible img{opacity:1}.og-layerSwitcher__layerButton img{opacity:1;border-radius:7px;width:100%;height:100%;position:absolute;top:0;left:0}.og-layerSwitcher__layerButton img:hover{opacity:1}.og-layerSwitcher__name{color:var(--grey8);text-overflow:ellipsis;z-index:10;background-color:#00000080;border-bottom-right-radius:7px;border-bottom-left-radius:7px;padding:3px;font-size:12px;bottom:0;overflow:hidden}.og-entityTree{width:100%}.og-entityTree__node{box-sizing:border-box;width:100%}.og-entityTree__row{align-items:center;min-height:22px;display:flex}.og-entityTree__toggleBtn{width:20px;height:20px;color:var(--grey3);cursor:pointer;background:0 0;border:none;border-radius:4px;padding:0;font-size:14px}.og-entityTree__toggleBtn_hasChildren:hover{background-color:var(--grey1)}.og-entityTree__toggleBtn_empty{visibility:hidden;pointer-events:none}.og-entityTree__entityBtn{min-width:0;color:var(--grey6);text-align:left;cursor:pointer;background:0 0;border:none;border-radius:4px;flex:1;justify-content:space-between;align-items:center;gap:8px;padding:3px 6px 3px 4px;font-size:12px;display:flex}.og-entityTree__entityBtn:hover,.og-entityTree__entityBtn:focus-visible{background-color:var(--grey1)}.og-entityTree__name{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.og-entityTree__type{color:var(--grey9);white-space:nowrap;font-size:11px}.og-entityTree__children_hidden{display:none}.og-entityTree__children{padding-left:17px}.og-entityTreeControl{width:100%;height:100%;color:var(--grey4);position:relative;overflow:hidden auto}.og-entityTreeControl__tree{box-sizing:border-box;width:100%;padding:4px}.og-entityTreeControl__empty{color:var(--grey3);padding:10px 8px;font-size:13px}.displayNone{display:none}.displayBlock{display:block}.og-drawing-default_button .og-button-icon{transform:scale(.73)}.ogConsole{color:#fff;z-index:100000000;background-color:#8282827d;width:100%;max-height:70%;font-family:Arial;font-size:14px;position:absolute;top:0;left:0;overflow:auto}.ogConsole-text{padding:7px;overflow:hidden}.ogConsole-error{color:red}.ogConsole-warning{color:#ff0}.ogViewExtentBtn{cursor:pointer;background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYEAQAAAAa7ikwAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAACXBIWXMAAABgAAAAYADwa0LPAAAAB3RJTUUH5ggMBTM4rM25AwAAAAJiS0dEAACqjSMyAAABsUlEQVRIx81WWYrCQBAVg4Iwbp8ud5DoYRRBxPMoouiPegQVPYp6Azdc/ly++01XKkmPksQ4ZmAKAr3V0u9VVScU8ikQkQhwuRifHIeCFiAWgy2xWHCGRSIBVKtAt6scdDrGmtz7IOJUyjAk7ne4Ce2JdhsimXzTeKkE7PfK0vEIjMdqTuPTSc23W6BY9G/cjvpwgKjVmOBHDnitXmfnJLcboOs+YNntWGGxADIZtRcOQ4xGEMMhjdV6Ngssl6yz2XjywuSZkf8w/vrW5MS8iWi13LPFgkbC8n5SEFwmVOLry+EApaJJ6C8KCSIaVcRXKk8FlE4D/T5vzmY81zT/0Wsa68znbKPX47ksSC5/JxkM/EdPxDvJ5RKMA3nWw8EfQxQsyecz2yiXvdNUptz7adposO716pim7EQ2Lrv3ZLP+o8/n7RQVzabHwWSSGxcJlb9y4t4qcjlgtWKd9RoiHn9x1WKRG5d1E1mhBr7PzY7WCBaruAiaQsEnnrpuNC5biLzJRL0D06ki1Ircp/FH0lstdRsnoaibzZeweDuKx6m3qE5rPZnlsmu2/KtH/9Pflm+sYR/yIsaCAQAAACV0RVh0ZGF0ZTpjcmVhdGUAMjAyMi0wOC0xMlQwNTo1MTo1NiswMDowMIPhE+YAAAAldEVYdGRhdGU6bW9kaWZ5ADIwMjItMDgtMTJUMDU6NTE6NTYrMDA6MDDyvKtaAAAAKHRFWHRkYXRlOnRpbWVzdGFtcAAyMDIyLTA4LTEyVDA1OjUxOjU2KzAwOjAwpamKhQAAAABJRU5ErkJggg==) 50% no-repeat;width:24px;height:24px;margin-left:12px;scale:.7}.ogViewExtentBtn:hover{background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYEAQAAAAa7ikwAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAACXBIWXMAAABgAAAAYADwa0LPAAAAB3RJTUUH5ggMBTM4rM25AwAAAAJiS0dEAACqjSMyAAABsUlEQVRIx81WWYrCQBAVg4Iwbp8ud5DoYRRBxPMoouiPegQVPYp6Azdc/ly++01XKkmPksQ4ZmAKAr3V0u9VVScU8ikQkQhwuRifHIeCFiAWgy2xWHCGRSIBVKtAt6scdDrGmtz7IOJUyjAk7ne4Ce2JdhsimXzTeKkE7PfK0vEIjMdqTuPTSc23W6BY9G/cjvpwgKjVmOBHDnitXmfnJLcboOs+YNntWGGxADIZtRcOQ4xGEMMhjdV6Ngssl6yz2XjywuSZkf8w/vrW5MS8iWi13LPFgkbC8n5SEFwmVOLry+EApaJJ6C8KCSIaVcRXKk8FlE4D/T5vzmY81zT/0Wsa68znbKPX47ksSC5/JxkM/EdPxDvJ5RKMA3nWw8EfQxQsyecz2yiXvdNUptz7adposO716pim7EQ2Lrv3ZLP+o8/n7RQVzabHwWSSGxcJlb9y4t4qcjlgtWKd9RoiHn9x1WKRG5d1E1mhBr7PzY7WCBaruAiaQsEnnrpuNC5biLzJRL0D06ki1Ircp/FH0lstdRsnoaibzZeweDuKx6m3qE5rPZnlsmu2/KtH/9Pflm+sYR/yIsaCAQAAACV0RVh0ZGF0ZTpjcmVhdGUAMjAyMi0wOC0xMlQwNTo1MTo1NiswMDowMIPhE+YAAAAldEVYdGRhdGU6bW9kaWZ5ADIwMjItMDgtMTJUMDU6NTE6NTYrMDA6MDDyvKtaAAAAKHRFWHRkYXRlOnRpbWVzdGFtcAAyMDIyLTA4LTEyVDA1OjUxOjU2KzAwOjAwpamKhQAAAABJRU5ErkJggg==) center center no-repeat, var(--blue0);border-radius:10px}.og-debuginfo_controls{padding-bottom:8px;display:flex}.og-debuginfo_controls-button{float:left;width:25px;height:25px;margin:3px}.og-debug-info{color:#fff;padding:10px;font-size:12px}.og-debug-info .og-watch-line{flex-direction:row;width:100%;padding-bottom:5px;display:flex}.og-watch-line .og-watch-label{color:#cecece;width:200px}.og-watch-line .og-watch-value{margin-left:15px}.og-popup{text-align:center;position:absolute;bottom:-2px}.og-popup-content-wrapper,.og-popup-tip{color:#333;background:#fff;box-shadow:0 3px 14px #0006}.og-popup-content-wrapper{color:#333;text-align:left;background:#fff;border-radius:8px;min-width:30px;min-height:17px;padding:1px;box-shadow:0 3px 14px #0006}.og-popup-content{margin:20px 5px 5px;line-height:1.4}.og-popup-tip-container{pointer-events:none;width:40px;height:20px;margin-left:-20px;position:absolute;bottom:-19px;left:50%;overflow:hidden}.og-popup-tip{width:17px;height:17px;margin:-10px auto 0;padding:1px;transform:rotate(45deg)}.og-popup-toolbar{display:inline-block;position:absolute;top:3px;right:2px}.og-popup-btn{cursor:pointer;float:right;width:15px;height:15px}.og-popup-btn:hover{color:#2e9be7}.og-popup-title{font-size:14px;position:absolute;top:3px;left:5px}.og-scale-container{position:absolute;bottom:30px;right:320px}.og-scale-label{color:#fff;text-align:center;font-family:Segoe UI,Frutiger,Frutiger Linotype,Dejavu Sans,Helvetica Neue,Arial,sans-serif;font-size:12px;position:relative}.og-scale-ruler{border-bottom:2px solid #fff;border-left:1px solid #fff;border-right:1px solid #fff;height:7px;position:relative}.og-compass-button .og-button-icon{transform-origin:50%;justify-content:center;align-items:center;display:flex}.og-compass-button .og-button-icon svg{display:block;width:48px!important;height:48px!important}.og-orthoswitcher_button .og-button-icon svg{display:block;transform:translateY(3px);width:45px!important;height:45px!important}.og-suncontrol-button{float:left;width:25px;height:25px;margin:3px}.og-lighing{color:#b6b6b6;height:calc(100% - 30px);padding:12px;position:relative}.og-lighing .og-layers{flex-direction:row;align-items:center;display:flex}.og-lighing .og-caption{position:relative}.og-emptyline,.og-lighing .og-lighting-emptyline{width:100%;padding:3px}.og-emptyline-2{width:100%;padding:5px}.og-lighing .og-slider{width:100%}.og-lighing .og-slider .og-slider-label,.og-lighing .og-color-label{width:100px;font-size:12px}.og-lighing .og-color{padding-right:10px}.og-lighing #layers,.og-lighing #toneMapping{width:200px;margin-left:21px;padding:2px;font-family:monospace}.og-free-navigation-info{background-color:var(--grey5);color:var(--grey8);pointer-events:none;border-radius:4px;padding:5px 10px;font-family:monospace;font-size:.85em;position:absolute;bottom:25px;left:10px}.og-coordinates{text-align:right;cursor:pointer;float:left;background-color:var(--grey5);color:var(--grey8);border-radius:4px;padding:5px;font-family:monospace;font-size:1em;position:absolute;bottom:25px;right:12px;overflow:hidden}.og-coordinates div{float:left}.og-coordinates .og-coordinates-copy-btn{float:left;color:var(--grey8);opacity:.8;cursor:pointer;background:0 0;border:0;margin-right:6px;padding:0}.og-coordinates .og-coordinates-copy-btn:hover{opacity:1}.og-coordinates .og-coordinates-copy-btn svg{display:block;transform:translateY(1px)}.og-coordinates .og-coordinates-copy-btn svg path{fill:currentColor}.og-lat-side,.og-lon-side{width:10px;padding-right:3px}.og-lat-val,.og-lon-val{text-align:left;width:90px;text-overflow:unset;padding-right:3px;overflow:hidden}.og-height{text-align:right;text-overflow:ellipsis;width:50px;padding-left:3px;overflow:hidden}.og-units-height{text-align:left;width:15px;padding-left:3px}.og-center-icon{pointer-events:none;width:12px;height:12px;margin-bottom:-3.5px;margin-right:-7.5px;position:absolute;bottom:50%;right:50%}.og-atmosphere.og-options-container .og-slider-label{width:300px;height:20px;overflow:hidden}.og-atmosphere.og-options-container .og-slider input{width:87px}.og-timeline-control_button{background:var(--grey7);border-radius:1px;width:25px;height:20px;margin-left:3px;margin-right:3px}.og-timeline-control_button.og-button__active{background:var(--grey3)}.og-timeline{background:#2d2d2d;width:100%;height:100%;position:relative;bottom:0;left:0;overflow:hidden}.og-timeline-frame{width:calc(100% - 20px);height:30px;margin:0 0 0 10px;position:relative}.og-timeline-scale{z-index:1;touch-action:none;width:100%;height:100%;position:relative;overflow:hidden}.og-timeline-spans{z-index:0;pointer-events:none;position:absolute;top:0;left:0}.og-timeline-current{z-index:2;cursor:pointer;touch-action:none;width:11px;height:100%;margin-top:-7px;margin-left:-5px;position:absolute;left:0}.og-timeline-current-spin{pointer-events:none;background-color:#ff3434;width:1px;height:100%;margin:0 auto}.og-timeline-current-arrow{border-top:7px solid #ff3434;border-left:7px solid #0000;border-right:7px solid #0000;width:0;height:0;margin-left:-6px}.og-timeline-bottom{justify-content:center;width:100%;margin-top:3px;display:flex;position:relative}.og-timeline-controls{border-radius:10px;flex-direction:row;justify-content:center;align-items:center;padding:8px;display:flex;position:relative}.og-timeline-localtime{align-items:center;display:flex;position:absolute;top:0;bottom:0;right:10px}.og-timeline-localtime .og-checkbox{align-items:center;margin:0}.og-timeline-localtime .og-input-label{white-space:nowrap;width:auto;margin-right:5px}.og-timeline-localtime .og-checkbox-input{align-items:center;width:auto;display:flex}.og-timeline-unselectable{-webkit-user-select:none;user-select:none;-khtml-user-select:none}.og-timeline-top{width:100%;height:15px;display:block}.og-slider{flex-direction:row;gap:5px;margin:5px;display:flex}.og-slider .og-slider-label{width:100%;height:100%;color:var(--grey6);text-align:left;align-items:center;margin-right:5px;font-family:Segoe UI,Frutiger,Frutiger Linotype,Dejavu Sans,Helvetica Neue,Arial,sans-serif;font-size:14px;display:flex}.og-slider .og-slider-panel{background-color:var(--grey1);z-index:1;border-radius:2px;width:100%;height:20px;position:relative}.og-slider .og-slider-panel .og-slider-progress{background-color:var(--grey7);pointer-events:none;border-top-left-radius:2px;border-bottom-left-radius:2px;height:100%;position:absolute}.og-slider .og-slider-panel .og-slider-pointer{background-color:var(--grey3);pointer-events:none;width:3px;height:100%;position:absolute;top:0;left:0}.og-slider input{background:var(--grey5);border:1px solid var(--grey1);z-index:0;width:100%;height:100%;color:var(--grey3);border-radius:2px;width:60px;padding-left:5px;position:relative}.og-slider input:focus-visible{outline:none}.og-slider input::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.og-slider input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}.og-slider input[type=number]{-moz-appearance:textfield}.og-checkbox,.og-input,.og-color{flex-direction:row;margin:5px;display:flex}.og-checkbox .og-input-label,.og-input .og-input-label,.og-color .og-color-label{width:100%;height:100%;color:var(--grey6);text-align:left;align-items:center;margin-right:5px;font-family:Segoe UI,Frutiger,Frutiger Linotype,Dejavu Sans,Helvetica Neue,Arial,sans-serif;font-size:14px}.og-checkbox input,.og-input input,.og-color input{background:var(--grey5);border:1px solid var(--grey1);z-index:0;width:100%;height:100%;color:var(--grey3);border-radius:5px;padding-left:5px;position:relative}.og-checkbox input:focus-visible,.og-input input:focus-visible,.og-color input:focus-visible{outline:none}.og-color input[type=color]{cursor:pointer;flex:0 0 20px;width:20px;min-width:20px;height:20px;min-height:20px;padding:0}.og-color .og-color-label,.og-color .og-color-controls{width:50%}.og-color .og-color-controls{align-items:center;gap:4px;display:flex}.og-color .og-color-value{min-width:0}.og-color input[type=color]::-webkit-color-swatch-wrapper{padding:2px}.og-color input[type=color]::-webkit-color-swatch{border:none;border-radius:2px}.og-color input[type=color]::-moz-color-swatch{border:none;border-radius:2px}.og-checkbox input[type=checkbox]{appearance:none;border:1px solid var(--grey1);background:var(--grey8);cursor:pointer;border-radius:3px;place-content:center;width:14px;height:14px;padding:0;display:flex;position:relative}.og-checkbox input[type=checkbox]:before{content:"";opacity:0;border:2px solid #000;border-width:0 2px 2px 0;width:3px;height:6px;transition:opacity .2s ease-in-out;position:absolute;top:2px;left:3.5px;transform:rotate(45deg)}.og-checkbox input[type=checkbox]:checked:before{opacity:1}.og-checkbox input[type=checkbox]:hover{border-color:var(--grey2)}.og-checkbox .og-input-label{margin-right:0}.og-checkbox-input{width:100%}.og-input-disabled{pointer-events:none;opacity:.7}.og-input-disabled input[type=checkbox]{background:var(--grey9)}.og-input input[type=number]{-moz-appearance:textfield}.og-elevationprofile{width:100%;height:100%;position:absolute;overflow:hidden}.og-elevationprofile__container{flex-direction:column;align-content:center;align-items:center;width:100%;height:100%;display:flex;position:relative}.og-elevationprofile__menu{width:100%;height:43px;position:relative}.og-elevationprofile__graph{width:100%;height:100%;position:relative}.og-elevationprofile-legend{color:var(--grey8);z-index:1;margin:5px;font-family:Segoe UI,Tahoma,Geneva,Verdana,sans-serif;font-size:12px;display:flex;position:absolute;top:0;right:0}.og-elevationprofile-legend__row{width:70px;padding:5px;position:relative}.og-elevationprofile-square{float:left;width:6px;height:6px;margin:5px;position:relative}.og-elevationprofile-legend__track .og-elevationprofile-square{background-color:#00ff32}.og-elevationprofile-legend__ground .og-elevationprofile-square{background-color:#c6c6c6}.og-elevationprofile-legend__warning .og-elevationprofile-square{background-color:#ff0}.og-elevationprofile-legend__collision .og-elevationprofile-square{background-color:red}.og-elevationprofile-units{float:left;padding-left:5px;display:inline-block;position:relative}.og-elevationprofile-value{float:left;text-align:right;white-space:nowrap;text-overflow:ellipsis;width:30px;display:inline-block;position:relative;overflow:hidden}.og-elevationprofile-buttons{display:inline-block;position:absolute;top:0;left:0}.og-elevationprofile-button{float:left;width:25px;height:25px;margin:3px}.og-elevationprofile-list{flex-direction:column;width:100%;height:100%;display:flex;position:relative}.og-elevationprofile-list textarea{resize:none;background:var(--grey8);width:100%;height:100%;padding:5px;position:relative}.og-elevationprofile-list-buttons{flex-direction:row;justify-content:right;align-items:center;height:60px;display:flex;position:relative}.og-elevationprofile-list-apply{float:right;background-color:var(--grey2);margin-right:15px;padding:4px 10px 7px}.og-elevationprofile_pointer{height:100%;position:absolute;top:0;left:0}.og-elevationprofile-line{background-color:#fff;width:3px;height:30px;margin-left:-1.5px;position:absolute}.og-elevationprofile-label{color:#fff;position:absolute;top:0;left:0}.og-elevationprofile-button__location svg{width:17px;height:17px}.og-elevationprofile-loading{opacity:.3;z-index:2;background-color:#000;flex-direction:row;justify-content:center;align-items:center;width:100%;height:100%;display:flex;position:absolute}.og-simpleskybackground{display:flex}.og-color-label{color:var(--grey6);font-family:Segoe UI,Frutiger,Frutiger Linotype,Dejavu Sans,Helvetica Neue,Arial,sans-serif;font-size:14px}@keyframes ldio-p0v5a1f6oz{0%{opacity:1}50%{opacity:.5}to{opacity:1}}.ldio-p0v5a1f6oz div{width:11px;height:40px;animation:.934579s cubic-bezier(.5,0,.5,1) infinite ldio-p0v5a1f6oz;position:absolute;top:30px}.ldio-p0v5a1f6oz div:first-child{background:#353535;animation-delay:-.560748s;transform:translate(14.5px)}.ldio-p0v5a1f6oz div:nth-child(2){background:#666;animation-delay:-.373832s;transform:translate(34.5px)}.ldio-p0v5a1f6oz div:nth-child(3){background:#9b9b9b;animation-delay:-.186916s;transform:translate(54.5px)}.ldio-p0v5a1f6oz div:nth-child(4){background:#d4d4d4;animation-delay:-.934579s;transform:translate(74.5px)}.loadingio-spinner-bars-r354qqyl5v{background:0 0;width:88px;height:88px;display:inline-block;overflow:hidden}.ldio-p0v5a1f6oz{backface-visibility:hidden;transform-origin:0 0;width:100%;height:100%;position:relative;transform:translateZ(0)scale(.88)}.ldio-p0v5a1f6oz div{box-sizing:content-box}.og-editor-ground_button{background:var(--grey1);width:fit-content;margin-top:15px;margin-left:5px;padding:4px 6px 8px}.og-editor_toolbar{display:flex}.og-editor_toolbar-button{float:left;width:25px;height:25px;margin:3px}.og-titlebar{background:var(--grey2);box-sizing:border-box;border-bottom:1px solid var(--grey5);justify-content:space-between;align-items:center;width:100%;min-height:20px;padding:0 0 0 8px;display:flex}.og-titlebar__title{color:var(--grey3);margin:0;font-family:Segoe UI,Tahoma,Geneva,Verdana,sans-serif;font-size:14px;font-weight:400}.og-titlebar__toggle{cursor:pointer;background:0 0;border:none;border-radius:0;justify-content:center;align-items:center;width:20px;height:20px;padding:0;display:flex}.og-titlebar__toggle:hover{background-color:var(--grey4)}.og-titlebar__toggle svg{width:18px;height:18px}.og-titlebar__toggle svg path{fill:var(--grey6)}.og-editor-panel__body_collapsed{display:none}.og-select{flex-direction:row;margin:5px;display:flex}.og-select .og-input-label{width:100%;height:100%;color:var(--grey6);text-align:left;margin-right:5px;font-family:Segoe UI,Frutiger,Frutiger Linotype,Dejavu Sans,Helvetica Neue,Arial,sans-serif;font-size:14px}.og-select select{background:var(--grey5);border:1px solid var(--grey1);width:100%;height:100%;color:var(--grey6);border-radius:5px;padding-left:5px;position:relative}.og-select select:focus-visible{outline:none}.og-object3d-manager .og-ddialog-container{flex-direction:column;display:flex}.og-object3d-collection{width:100%;height:100%}.og-object3d-collection__item{cursor:pointer;background-color:#7a7a7a;border:2px solid #0000;border-radius:5px;width:75px;height:75px;margin:3px;position:relative}.og-object3d-collection__item.active{border:2px solid #00e0be}.og-object3d-collection__item_name{color:#fff;background:#3d3d3da3;border-bottom-right-radius:5px;border-bottom-left-radius:5px;width:100%;height:20px;padding-top:3px;position:absolute;bottom:0;left:0}
|
|
1
|
+
:root{--grey0:#242424;--grey1:#434244;--grey2:#3f3f46;--grey3:#bbb;--grey4:#5e5e5e;--grey5:#323232;--grey6:#b6b6b6;--grey7:#707070;--grey8:#e2e2e2;--grey9:#9f9f9f;--blue0:#1700a9ee}.og-map-button{cursor:pointer;z-index:1;background-color:var(--grey5);outline:none;width:40px;height:40px;position:absolute}.og-control-container{z-index:2;box-sizing:border-box;pointer-events:none;flex-flow:wrap;align-content:flex-start;gap:8px;width:min(136px,100% - 24px);display:flex;position:absolute;top:12px}.og-control-container>*{pointer-events:auto}.og-control-container .og-map-button{flex:none;margin:0;position:relative;inset:auto!important}.og-fps-button .og-button-text{font-variant-numeric:tabular-nums;-webkit-user-select:none;user-select:none;font-family:monospace;font-size:15px}.og-fps-button:hover{background-color:var(--grey5)}.og-control-container__top-left{justify-content:flex-start;left:10px}.og-control-container__top-right{justify-content:flex-end;right:12px}.og-control-container__bottom-right{flex-direction:column;justify-content:flex-end;align-items:flex-end;width:auto;max-width:calc(100% - 24px);top:auto;bottom:12px;right:12px}.og-control-container .og-scale-container,.og-control-container .og-coordinates{margin:0;position:relative;inset:auto!important}.og-control-container__bottom-right .og-scale-container{order:0}.og-control-container__bottom-right .og-coordinates{order:1}.ogCenterIcon{width:12px;height:12px;margin-bottom:-3.5px;margin-right:-7.5px;position:absolute;bottom:50%;right:50%}.ogHandPoiner{cursor:pointer}.defaultText{color:#fff;position:absolute;top:0;left:0}.ogGrabbingPoiner{cursor:grabbing!important}.og-inner{float:left;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;-khtml-user-select:none;width:100%;height:100%;position:relative;overflow:hidden}.og-attribution{text-align:right;background:#cecece;flex-direction:row;padding:1px 0;font-family:Segoe UI,Frutiger,Frutiger Linotype,Dejavu Sans,Helvetica Neue,Arial,sans-serif;font-size:.7rem;line-height:1.375em;display:flex;position:absolute;bottom:0;left:0}.og-attribution .og-attribution__layer{text-overflow:ellipsis;white-space:nowrap;color:#1f1f1f;align-items:center;margin-left:5px;margin-right:5px;display:inline;overflow:hidden}.og-attribution img{max-height:1.3em}input{accent-color:var(--blue0);cursor:pointer}.og-menu-bar-vertical{z-index:0;background-color:#403b3bd9;border-radius:2px;width:40px;height:40px;position:absolute;top:12px;right:12px;box-shadow:0 1px 4px #0f0f0f2b}.og-hide{display:none!important}.og-not-visible{visibility:hidden!important}.og-options-container{color:#b6b6b6;height:calc(100% - 30px);padding:12px;position:relative}.og-option{text-overflow:ellipsis;flex-direction:row;justify-content:left;align-items:center;width:100%;padding-bottom:7px;display:inline-block;position:relative}.og-option .og-slider{width:100%}.og-option .og-slider .og-slider-label,.og-option .og-color-label{width:100px;font-size:12px}.og-ddialog{background-color:var(--grey0);border:1px solid;border-color:var(--grey1);border-radius:4px;flex-direction:column;display:flex;position:absolute;overflow:auto;box-shadow:3px 3px 4px #0f0f0f2b}.og-ddialog .og-ddialog-header{z-index:1;background-color:var(--grey2);color:#fff;flex-direction:row;justify-content:space-between;align-items:center;width:100%;height:27px;padding:0;display:flex;position:relative}.og-ddialog .og-ddialog-header .og-ddialog-header__title{color:var(--grey3);pointer-events:none;padding-left:5px;font-family:Segoe UI,Tahoma,Geneva,Verdana,sans-serif;font-size:14px;font-weight:400}.og-ddialog .og-ddialog-header .og-ddialog-header__buttons{flex-direction:row;justify-content:flex-end;display:flex}.og-ddialog .og-ddialog-header .og-ddialog-header__buttons .og-button{border-radius:0}.og-ddialog .og-ddialog-container{width:100%;height:100%;font-family:Segoe UI,Frutiger,Frutiger Linotype,Dejavu Sans,Helvetica Neue,Arial,sans-serif;font-size:14px;position:relative;overflow:auto}.og-ddialog.dragging{-webkit-user-select:none;user-select:none}.og-ddialog .og-ddialog-resize-handle{cursor:nwse-resize;touch-action:none;z-index:2;width:20px;height:20px;display:block;position:absolute;bottom:0;right:0}.og-button{cursor:default;color:var(--grey6);border-radius:6px;flex-direction:row;place-content:center;align-items:center;padding:2px;display:flex}.og-button .og-button-icon{justify-content:center;align-items:center;line-height:0;display:flex}.og-button svg{width:24px;height:24px;display:block}.og-button svg path{fill:var(--grey6)}.og-button__active.og-button svg,.og-button__active.og-button svg path{fill:#fff}.og-button .og-button-text{font-family:Segoe UI,Tahoma,Geneva,Verdana,sans-serif;font-size:14px;font-weight:400}.og-button:hover{background-color:var(--grey4)}.og-button-size__20{width:20px;height:20px}.og-button__active{background-color:var(--grey2)}.og-layerSwitcher{color:#b6b6b6;width:100%;height:100%;position:relative;overflow:hidden auto}.og-layerSwitcher__title{color:#b6b6b6;width:100%;padding:5px;font-size:14px;position:relative}.og-layerSwitcher__list{flex-wrap:wrap;align-items:flex-start;width:100%;padding:2px;display:flex;position:relative}.og-layerSwitcher__layerButton{cursor:pointer;background-color:#7a7a7a;border:2px solid #0000;border-radius:7px;flex-direction:column-reverse;width:70px;height:70px;margin:3px;padding:0;display:flex;position:relative}.og-layerSwitcher__layerButton.og-layerSwitcher__visible{border:2px solid #56ff64}.og-layerSwitcher__layerButton.og-layerSwitcher__visible img{opacity:1}.og-layerSwitcher__layerButton img{opacity:1;border-radius:7px;width:100%;height:100%;position:absolute;top:0;left:0}.og-layerSwitcher__layerButton img:hover{opacity:1}.og-layerSwitcher__name{color:var(--grey8);text-overflow:ellipsis;z-index:10;background-color:#00000080;border-bottom-right-radius:7px;border-bottom-left-radius:7px;padding:3px;font-size:12px;bottom:0;overflow:hidden}.og-entityTree{width:100%}.og-entityTree__node{box-sizing:border-box;width:100%}.og-entityTree__row{align-items:center;min-height:22px;display:flex}.og-entityTree__toggleBtn{width:20px;height:20px;color:var(--grey3);cursor:pointer;background:0 0;border:none;border-radius:4px;padding:0;font-size:14px}.og-entityTree__toggleBtn_hasChildren:hover{background-color:var(--grey1)}.og-entityTree__toggleBtn_empty{visibility:hidden;pointer-events:none}.og-entityTree__entityBtn{min-width:0;color:var(--grey6);text-align:left;cursor:pointer;background:0 0;border:none;border-radius:4px;flex:1;justify-content:space-between;align-items:center;gap:8px;padding:3px 6px 3px 4px;font-size:12px;display:flex}.og-entityTree__entityBtn:hover,.og-entityTree__entityBtn:focus-visible{background-color:var(--grey1)}.og-entityTree__name{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.og-entityTree__type{color:var(--grey9);white-space:nowrap;font-size:11px}.og-entityTree__children_hidden{display:none}.og-entityTree__children{padding-left:17px}.og-entityTreeControl{width:100%;height:100%;color:var(--grey4);position:relative;overflow:hidden auto}.og-entityTreeControl__tree{box-sizing:border-box;width:100%;padding:4px}.og-entityTreeControl__empty{color:var(--grey3);padding:10px 8px;font-size:13px}.displayNone{display:none}.displayBlock{display:block}.og-drawing-default_button .og-button-icon{transform:scale(.73)}.ogConsole{color:#fff;z-index:100000000;background-color:#8282827d;width:100%;max-height:70%;font-family:Arial;font-size:14px;position:absolute;top:0;left:0;overflow:auto}.ogConsole-text{padding:7px;overflow:hidden}.ogConsole-error{color:red}.ogConsole-warning{color:#ff0}.ogViewExtentBtn{cursor:pointer;background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYEAQAAAAa7ikwAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAACXBIWXMAAABgAAAAYADwa0LPAAAAB3RJTUUH5ggMBTM4rM25AwAAAAJiS0dEAACqjSMyAAABsUlEQVRIx81WWYrCQBAVg4Iwbp8ud5DoYRRBxPMoouiPegQVPYp6Azdc/ly++01XKkmPksQ4ZmAKAr3V0u9VVScU8ikQkQhwuRifHIeCFiAWgy2xWHCGRSIBVKtAt6scdDrGmtz7IOJUyjAk7ne4Ce2JdhsimXzTeKkE7PfK0vEIjMdqTuPTSc23W6BY9G/cjvpwgKjVmOBHDnitXmfnJLcboOs+YNntWGGxADIZtRcOQ4xGEMMhjdV6Ngssl6yz2XjywuSZkf8w/vrW5MS8iWi13LPFgkbC8n5SEFwmVOLry+EApaJJ6C8KCSIaVcRXKk8FlE4D/T5vzmY81zT/0Wsa68znbKPX47ksSC5/JxkM/EdPxDvJ5RKMA3nWw8EfQxQsyecz2yiXvdNUptz7adposO716pim7EQ2Lrv3ZLP+o8/n7RQVzabHwWSSGxcJlb9y4t4qcjlgtWKd9RoiHn9x1WKRG5d1E1mhBr7PzY7WCBaruAiaQsEnnrpuNC5biLzJRL0D06ki1Ircp/FH0lstdRsnoaibzZeweDuKx6m3qE5rPZnlsmu2/KtH/9Pflm+sYR/yIsaCAQAAACV0RVh0ZGF0ZTpjcmVhdGUAMjAyMi0wOC0xMlQwNTo1MTo1NiswMDowMIPhE+YAAAAldEVYdGRhdGU6bW9kaWZ5ADIwMjItMDgtMTJUMDU6NTE6NTYrMDA6MDDyvKtaAAAAKHRFWHRkYXRlOnRpbWVzdGFtcAAyMDIyLTA4LTEyVDA1OjUxOjU2KzAwOjAwpamKhQAAAABJRU5ErkJggg==) 50% no-repeat;width:24px;height:24px;margin-left:12px;scale:.7}.ogViewExtentBtn:hover{background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYEAQAAAAa7ikwAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAACXBIWXMAAABgAAAAYADwa0LPAAAAB3RJTUUH5ggMBTM4rM25AwAAAAJiS0dEAACqjSMyAAABsUlEQVRIx81WWYrCQBAVg4Iwbp8ud5DoYRRBxPMoouiPegQVPYp6Azdc/ly++01XKkmPksQ4ZmAKAr3V0u9VVScU8ikQkQhwuRifHIeCFiAWgy2xWHCGRSIBVKtAt6scdDrGmtz7IOJUyjAk7ne4Ce2JdhsimXzTeKkE7PfK0vEIjMdqTuPTSc23W6BY9G/cjvpwgKjVmOBHDnitXmfnJLcboOs+YNntWGGxADIZtRcOQ4xGEMMhjdV6Ngssl6yz2XjywuSZkf8w/vrW5MS8iWi13LPFgkbC8n5SEFwmVOLry+EApaJJ6C8KCSIaVcRXKk8FlE4D/T5vzmY81zT/0Wsa68znbKPX47ksSC5/JxkM/EdPxDvJ5RKMA3nWw8EfQxQsyecz2yiXvdNUptz7adposO716pim7EQ2Lrv3ZLP+o8/n7RQVzabHwWSSGxcJlb9y4t4qcjlgtWKd9RoiHn9x1WKRG5d1E1mhBr7PzY7WCBaruAiaQsEnnrpuNC5biLzJRL0D06ki1Ircp/FH0lstdRsnoaibzZeweDuKx6m3qE5rPZnlsmu2/KtH/9Pflm+sYR/yIsaCAQAAACV0RVh0ZGF0ZTpjcmVhdGUAMjAyMi0wOC0xMlQwNTo1MTo1NiswMDowMIPhE+YAAAAldEVYdGRhdGU6bW9kaWZ5ADIwMjItMDgtMTJUMDU6NTE6NTYrMDA6MDDyvKtaAAAAKHRFWHRkYXRlOnRpbWVzdGFtcAAyMDIyLTA4LTEyVDA1OjUxOjU2KzAwOjAwpamKhQAAAABJRU5ErkJggg==) center center no-repeat, var(--blue0);border-radius:10px}.og-debuginfo_controls{padding-bottom:8px;display:flex}.og-debuginfo_controls-button{float:left;width:25px;height:25px;margin:3px}.og-debug-info{color:#fff;padding:10px;font-size:12px}.og-debug-info .og-watch-line{flex-direction:row;width:100%;padding-bottom:5px;display:flex}.og-watch-line .og-watch-label{color:#cecece;width:200px}.og-watch-line .og-watch-value{margin-left:15px}.og-popup{text-align:center;position:absolute;bottom:-2px}.og-popup-content-wrapper,.og-popup-tip{color:#333;background:#fff;box-shadow:0 3px 14px #0006}.og-popup-content-wrapper{color:#333;text-align:left;background:#fff;border-radius:8px;min-width:30px;min-height:17px;padding:1px;box-shadow:0 3px 14px #0006}.og-popup-content{margin:20px 5px 5px;line-height:1.4}.og-popup-tip-container{pointer-events:none;width:40px;height:20px;margin-left:-20px;position:absolute;bottom:-19px;left:50%;overflow:hidden}.og-popup-tip{width:17px;height:17px;margin:-10px auto 0;padding:1px;transform:rotate(45deg)}.og-popup-toolbar{display:inline-block;position:absolute;top:3px;right:2px}.og-popup-btn{cursor:pointer;float:right;width:15px;height:15px}.og-popup-btn:hover{color:#2e9be7}.og-popup-title{font-size:14px;position:absolute;top:3px;left:5px}.og-scale-container{position:absolute;bottom:30px;right:320px}.og-scale-label{color:#fff;text-align:center;font-family:Segoe UI,Frutiger,Frutiger Linotype,Dejavu Sans,Helvetica Neue,Arial,sans-serif;font-size:12px;position:relative}.og-scale-ruler{border-bottom:2px solid #fff;border-left:1px solid #fff;border-right:1px solid #fff;height:7px;position:relative}.og-compass-button .og-button-icon{transform-origin:50%;justify-content:center;align-items:center;display:flex}.og-compass-button .og-button-icon svg{display:block;width:48px!important;height:48px!important}.og-orthoswitcher_button .og-button-icon svg{display:block;transform:translateY(3px);width:45px!important;height:45px!important}.og-suncontrol-button{float:left;width:25px;height:25px;margin:3px}.og-lighing{color:#b6b6b6;height:calc(100% - 30px);padding:12px;position:relative}.og-lighing .og-layers{flex-direction:row;align-items:center;display:flex}.og-lighing .og-caption{position:relative}.og-emptyline,.og-lighing .og-lighting-emptyline{width:100%;padding:3px}.og-emptyline-2{width:100%;padding:5px}.og-lighing .og-slider{width:100%}.og-lighing .og-slider .og-slider-label,.og-lighing .og-color-label{width:100px;font-size:12px}.og-lighing .og-color{padding-right:10px}.og-lighing #layers,.og-lighing #toneMapping{width:200px;margin-left:21px;padding:2px;font-family:monospace}.og-free-navigation-info{background-color:var(--grey5);color:var(--grey8);pointer-events:none;border-radius:4px;padding:5px 10px;font-family:monospace;font-size:.85em;position:absolute;bottom:25px;left:10px}.og-coordinates{text-align:right;cursor:pointer;float:left;background-color:var(--grey5);color:var(--grey8);border-radius:4px;padding:5px;font-family:monospace;font-size:1em;position:absolute;bottom:25px;right:12px;overflow:hidden}.og-coordinates div{float:left}.og-coordinates .og-coordinates-copy-btn{float:left;color:var(--grey8);opacity:.8;cursor:pointer;background:0 0;border:0;margin-right:6px;padding:0}.og-coordinates .og-coordinates-copy-btn:hover{opacity:1}.og-coordinates .og-coordinates-copy-btn svg{display:block;transform:translateY(1px)}.og-coordinates .og-coordinates-copy-btn svg path{fill:currentColor}.og-lat-side,.og-lon-side{width:10px;padding-right:3px}.og-lat-val,.og-lon-val{text-align:left;width:90px;text-overflow:unset;padding-right:3px;overflow:hidden}.og-height{text-align:right;text-overflow:ellipsis;width:50px;padding-left:3px;overflow:hidden}.og-units-height{text-align:left;width:15px;padding-left:3px}.og-center-icon{pointer-events:none;width:12px;height:12px;margin-bottom:-3.5px;margin-right:-7.5px;position:absolute;bottom:50%;right:50%}.og-atmosphere.og-options-container .og-slider-label{width:300px;height:20px;overflow:hidden}.og-atmosphere.og-options-container .og-slider input{width:87px}.og-timeline-control_button{background:var(--grey7);border-radius:1px;width:25px;height:20px;margin-left:3px;margin-right:3px}.og-timeline-control_button.og-button__active{background:var(--grey3)}.og-timeline-multiplier{background:var(--grey7);color:#000;cursor:pointer;border:none;border-radius:1px;height:20px;margin-left:8px;padding:0 2px;font-size:11px}.og-timeline{background:#2d2d2d;width:100%;height:100%;position:relative;bottom:0;left:0;overflow:hidden}.og-timeline-frame{width:calc(100% - 20px);height:30px;margin:0 0 0 10px;position:relative}.og-timeline-scale{z-index:1;touch-action:none;width:100%;height:100%;position:relative;overflow:hidden}.og-timeline-spans{z-index:0;pointer-events:none;position:absolute;top:0;left:0}.og-timeline-current{z-index:2;cursor:pointer;touch-action:none;width:11px;height:100%;margin-top:-7px;margin-left:-5px;position:absolute;left:0}.og-timeline-current-spin{pointer-events:none;background-color:#ff3434;width:1px;height:100%;margin:0 auto}.og-timeline-current-arrow{border-top:7px solid #ff3434;border-left:7px solid #0000;border-right:7px solid #0000;width:0;height:0;margin-left:-6px}.og-timeline-sun{z-index:3;cursor:pointer;touch-action:none;width:11px;height:100%;margin-top:-7px;margin-left:-5px;display:none;position:absolute;left:0}.og-timeline-sun-spin{pointer-events:none;background-color:#fc0;width:1px;height:100%;margin:0 auto}.og-timeline-sun-arrow{border-top:7px solid #fc0;border-left:7px solid #0000;border-right:7px solid #0000;width:0;height:0;margin-left:-6px}.og-timeline-bottom{justify-content:center;width:100%;margin-top:3px;display:flex;position:relative}.og-timeline-controls{border-radius:10px;flex-direction:row;justify-content:center;align-items:center;padding:8px;display:flex;position:relative}.og-timeline-localtime{align-items:center;display:flex;position:absolute;top:0;bottom:0;right:10px}.og-timeline-localtime_button .og-button-icon{transform:scale(.8)}.og-timeline-unselectable{-webkit-user-select:none;user-select:none;-khtml-user-select:none}.og-timeline-top{width:100%;height:15px;display:block}.og-slider{flex-direction:row;gap:5px;margin:5px;display:flex}.og-slider .og-slider-label{width:100%;height:100%;color:var(--grey6);text-align:left;align-items:center;margin-right:5px;font-family:Segoe UI,Frutiger,Frutiger Linotype,Dejavu Sans,Helvetica Neue,Arial,sans-serif;font-size:14px;display:flex}.og-slider .og-slider-panel{background-color:var(--grey1);z-index:1;border-radius:2px;width:100%;height:20px;position:relative}.og-slider .og-slider-panel .og-slider-progress{background-color:var(--grey7);pointer-events:none;border-top-left-radius:2px;border-bottom-left-radius:2px;height:100%;position:absolute}.og-slider .og-slider-panel .og-slider-pointer{background-color:var(--grey3);pointer-events:none;width:3px;height:100%;position:absolute;top:0;left:0}.og-slider input{background:var(--grey5);border:1px solid var(--grey1);z-index:0;width:100%;height:100%;color:var(--grey3);border-radius:2px;width:60px;padding-left:5px;position:relative}.og-slider input:focus-visible{outline:none}.og-slider input::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.og-slider input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}.og-slider input[type=number]{-moz-appearance:textfield}.og-checkbox,.og-input,.og-color{flex-direction:row;margin:5px;display:flex}.og-checkbox .og-input-label,.og-input .og-input-label,.og-color .og-color-label{width:100%;height:100%;color:var(--grey6);text-align:left;align-items:center;margin-right:5px;font-family:Segoe UI,Frutiger,Frutiger Linotype,Dejavu Sans,Helvetica Neue,Arial,sans-serif;font-size:14px}.og-checkbox input,.og-input input,.og-color input{background:var(--grey5);border:1px solid var(--grey1);z-index:0;width:100%;height:100%;color:var(--grey3);border-radius:5px;padding-left:5px;position:relative}.og-checkbox input:focus-visible,.og-input input:focus-visible,.og-color input:focus-visible{outline:none}.og-color input[type=color]{cursor:pointer;flex:0 0 20px;width:20px;min-width:20px;height:20px;min-height:20px;padding:0}.og-color .og-color-label,.og-color .og-color-controls{width:50%}.og-color .og-color-controls{align-items:center;gap:4px;display:flex}.og-color .og-color-value{min-width:0}.og-color input[type=color]::-webkit-color-swatch-wrapper{padding:2px}.og-color input[type=color]::-webkit-color-swatch{border:none;border-radius:2px}.og-color input[type=color]::-moz-color-swatch{border:none;border-radius:2px}.og-checkbox input[type=checkbox]{appearance:none;border:1px solid var(--grey1);background:var(--grey8);cursor:pointer;border-radius:3px;place-content:center;width:14px;height:14px;padding:0;display:flex;position:relative}.og-checkbox input[type=checkbox]:before{content:"";opacity:0;border:2px solid #000;border-width:0 2px 2px 0;width:3px;height:6px;transition:opacity .2s ease-in-out;position:absolute;top:2px;left:3.5px;transform:rotate(45deg)}.og-checkbox input[type=checkbox]:checked:before{opacity:1}.og-checkbox input[type=checkbox]:hover{border-color:var(--grey2)}.og-checkbox .og-input-label{margin-right:0}.og-checkbox-input{width:100%}.og-input-disabled{pointer-events:none;opacity:.7}.og-input-disabled input[type=checkbox]{background:var(--grey9)}.og-input input[type=number]{-moz-appearance:textfield}.og-elevationprofile{width:100%;height:100%;position:absolute;overflow:hidden}.og-elevationprofile__container{flex-direction:column;align-content:center;align-items:center;width:100%;height:100%;display:flex;position:relative}.og-elevationprofile__menu{width:100%;height:43px;position:relative}.og-elevationprofile__graph{width:100%;height:100%;position:relative}.og-elevationprofile-legend{color:var(--grey8);z-index:1;margin:5px;font-family:Segoe UI,Tahoma,Geneva,Verdana,sans-serif;font-size:12px;display:flex;position:absolute;top:0;right:0}.og-elevationprofile-legend__row{width:70px;padding:5px;position:relative}.og-elevationprofile-square{float:left;width:6px;height:6px;margin:5px;position:relative}.og-elevationprofile-legend__track .og-elevationprofile-square{background-color:#00ff32}.og-elevationprofile-legend__ground .og-elevationprofile-square{background-color:#c6c6c6}.og-elevationprofile-legend__warning .og-elevationprofile-square{background-color:#ff0}.og-elevationprofile-legend__collision .og-elevationprofile-square{background-color:red}.og-elevationprofile-units{float:left;padding-left:5px;display:inline-block;position:relative}.og-elevationprofile-value{float:left;text-align:right;white-space:nowrap;text-overflow:ellipsis;width:30px;display:inline-block;position:relative;overflow:hidden}.og-elevationprofile-buttons{display:inline-block;position:absolute;top:0;left:0}.og-elevationprofile-button{float:left;width:25px;height:25px;margin:3px}.og-elevationprofile-list{flex-direction:column;width:100%;height:100%;display:flex;position:relative}.og-elevationprofile-list textarea{resize:none;background:var(--grey8);width:100%;height:100%;padding:5px;position:relative}.og-elevationprofile-list-buttons{flex-direction:row;justify-content:right;align-items:center;height:60px;display:flex;position:relative}.og-elevationprofile-list-apply{float:right;background-color:var(--grey2);margin-right:15px;padding:4px 10px 7px}.og-elevationprofile_pointer{height:100%;position:absolute;top:0;left:0}.og-elevationprofile-line{background-color:#fff;width:3px;height:30px;margin-left:-1.5px;position:absolute}.og-elevationprofile-label{color:#fff;position:absolute;top:0;left:0}.og-elevationprofile-button__location svg{width:17px;height:17px}.og-elevationprofile-loading{opacity:.3;z-index:2;background-color:#000;flex-direction:row;justify-content:center;align-items:center;width:100%;height:100%;display:flex;position:absolute}.og-simpleskybackground{display:flex}.og-color-label{color:var(--grey6);font-family:Segoe UI,Frutiger,Frutiger Linotype,Dejavu Sans,Helvetica Neue,Arial,sans-serif;font-size:14px}@keyframes ldio-p0v5a1f6oz{0%{opacity:1}50%{opacity:.5}to{opacity:1}}.ldio-p0v5a1f6oz div{width:11px;height:40px;animation:.934579s cubic-bezier(.5,0,.5,1) infinite ldio-p0v5a1f6oz;position:absolute;top:30px}.ldio-p0v5a1f6oz div:first-child{background:#353535;animation-delay:-.560748s;transform:translate(14.5px)}.ldio-p0v5a1f6oz div:nth-child(2){background:#666;animation-delay:-.373832s;transform:translate(34.5px)}.ldio-p0v5a1f6oz div:nth-child(3){background:#9b9b9b;animation-delay:-.186916s;transform:translate(54.5px)}.ldio-p0v5a1f6oz div:nth-child(4){background:#d4d4d4;animation-delay:-.934579s;transform:translate(74.5px)}.loadingio-spinner-bars-r354qqyl5v{background:0 0;width:88px;height:88px;display:inline-block;overflow:hidden}.ldio-p0v5a1f6oz{backface-visibility:hidden;transform-origin:0 0;width:100%;height:100%;position:relative;transform:translateZ(0)scale(.88)}.ldio-p0v5a1f6oz div{box-sizing:content-box}.og-editor-ground_button{background:var(--grey1);width:fit-content;margin-top:15px;margin-left:5px;padding:4px 6px 8px}.og-editor_toolbar{display:flex}.og-editor_toolbar-button{float:left;width:25px;height:25px;margin:3px}.og-titlebar{background:var(--grey2);box-sizing:border-box;border-bottom:1px solid var(--grey5);justify-content:space-between;align-items:center;width:100%;min-height:20px;padding:0 0 0 8px;display:flex}.og-titlebar__title{color:var(--grey3);margin:0;font-family:Segoe UI,Tahoma,Geneva,Verdana,sans-serif;font-size:14px;font-weight:400}.og-titlebar__toggle{cursor:pointer;background:0 0;border:none;border-radius:0;justify-content:center;align-items:center;width:20px;height:20px;padding:0;display:flex}.og-titlebar__toggle:hover{background-color:var(--grey4)}.og-titlebar__toggle svg{width:18px;height:18px}.og-titlebar__toggle svg path{fill:var(--grey6)}.og-editor-panel__body_collapsed{display:none}.og-select{flex-direction:row;margin:5px;display:flex}.og-select .og-input-label{width:100%;height:100%;color:var(--grey6);text-align:left;margin-right:5px;font-family:Segoe UI,Frutiger,Frutiger Linotype,Dejavu Sans,Helvetica Neue,Arial,sans-serif;font-size:14px}.og-select select{background:var(--grey5);border:1px solid var(--grey1);width:100%;height:100%;color:var(--grey6);border-radius:5px;padding-left:5px;position:relative}.og-select select:focus-visible{outline:none}.og-object3d-manager .og-ddialog-container{flex-direction:column;display:flex}.og-object3d-collection{width:100%;height:100%}.og-object3d-collection__item{cursor:pointer;background-color:#7a7a7a;border:2px solid #0000;border-radius:5px;width:75px;height:75px;margin:3px;position:relative}.og-object3d-collection__item.active{border:2px solid #00e0be}.og-object3d-collection__item_name{color:#fff;background:#3d3d3da3;border-bottom-right-radius:5px;border-bottom-left-radius:5px;width:100%;height:20px;padding-top:3px;position:absolute;bottom:0;left:0}.og-ui{position:absolute;inset:0;overflow:hidden}.og-dock{z-index:10;box-sizing:border-box;background:var(--grey0);display:flex;position:absolute;overflow:hidden}.og-ddialog__docked{box-shadow:none;border-radius:0;overflow:hidden;width:auto!important;min-width:0!important;max-width:none!important;height:auto!important;min-height:0!important;max-height:none!important;position:static!important;top:auto!important;left:auto!important;right:auto!important}.og-ddialog__docked .og-ddialog-resize-handle{display:none!important}.og-dock-splitters{z-index:11;pointer-events:none;position:absolute;inset:0}.og-dock-splitter{pointer-events:auto;touch-action:none;justify-content:center;align-items:center;display:flex;position:absolute}.og-dock-splitter:before{content:"";background:var(--grey1);transition:background .1s ease-out,width .1s ease-out,height .1s ease-out;display:block}.og-dock-splitter__v{cursor:ew-resize}.og-dock-splitter__v:before{width:1px;height:100%}.og-dock-splitter__h{cursor:ns-resize}.og-dock-splitter__h:before{width:100%;height:1px}.og-dock-splitter:hover:before,.og-dock-splitter__active:before{background:var(--grey6)}.og-dock-splitter__v:hover:before,.og-dock-splitter__v.og-dock-splitter__active:before{width:3px}.og-dock-splitter__h:hover:before,.og-dock-splitter__h.og-dock-splitter__active:before{height:3px}.og-dock-hint{z-index:1000;box-sizing:border-box;border:2px solid var(--grey6);pointer-events:none;background:#b6b6b62e;position:absolute}
|
|
2
2
|
/*$vite$:1*/
|