@openglobus/og 1.0.0-rc2 → 1.0.0-rc5
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/camera/Camera.d.ts +18 -5
- package/lib/camera/PlanetCamera.d.ts +7 -0
- package/lib/control/CameraFrameComposer.d.ts +1 -1
- package/lib/control/FramebufferPreview.d.ts +16 -2
- package/lib/control/Navigation.d.ts +2 -1
- package/lib/control/cameraDepthHandler/CameraDepthHandler.d.ts +7 -0
- package/lib/entity/EntityCollection.d.ts +16 -2
- package/lib/entity/geoObject/GeoObjectHandler.d.ts +3 -0
- package/lib/index.d.ts +6 -2
- package/lib/layer/BaseTileMaterialLayer.d.ts +36 -0
- package/lib/layer/CanvasTiles.d.ts +8 -12
- package/lib/layer/Vector.d.ts +28 -7
- package/lib/layer/XYZ.d.ts +5 -21
- package/lib/og.css +1 -1
- package/lib/og.es.js +1 -1
- package/lib/og.es.js.map +1 -1
- package/lib/quadTree/EntityCollectionsTreeStrategy.d.ts +1 -0
- package/lib/quadTree/QuadTreeStrategy.d.ts +1 -0
- package/lib/quadTree/earth/EarthEntityCollectionsTreeStrategy.d.ts +1 -0
- package/lib/quadTree/equi/EquiEntityCollectionsTreeStrategy.d.ts +1 -0
- package/lib/renderer/PhongDeferredShading.d.ts +2 -0
- package/lib/renderer/Renderer.d.ts +5 -2
- package/lib/renderer/RendererEvents.d.ts +1 -0
- package/lib/renderer/projectors/Projector.d.ts +69 -0
- package/lib/renderer/projectors/ProjectorManager.d.ts +83 -0
- package/lib/renderer/projectors/ProjectorsPass.d.ts +37 -0
- package/lib/scene/Planet.d.ts +6 -3
- package/lib/scene/Scene.d.ts +1 -8
- package/lib/scene/SkyBox.d.ts +2 -1
- package/lib/shaders/geo_object/geo_object.d.ts +1 -0
- package/lib/shaders/projectorsPass/projectorsPass.d.ts +2 -0
- package/lib/terrain/EmptyTerrain.d.ts +1 -1
- package/lib/terrain/MapterhornTerrain.d.ts +10 -0
- package/lib/terrain/RgbTerrain.d.ts +11 -0
- package/lib/terrain/index.d.ts +6 -2
- package/lib/tsconfig.tsbuildinfo +1 -1
- package/lib/utils/FontAtlas.d.ts +5 -3
- package/lib/webgl/BaseFramebuffer.d.ts +14 -0
- package/lib/webgl/Framebuffer.d.ts +5 -0
- package/lib/webgl/Handler.d.ts +13 -0
- package/package.json +1 -1
package/lib/camera/Camera.d.ts
CHANGED
|
@@ -37,7 +37,7 @@ export interface IFlyBaseParams {
|
|
|
37
37
|
startCallback?: Function;
|
|
38
38
|
frameCallback?: Function;
|
|
39
39
|
}
|
|
40
|
-
export declare const DEFAULT_FLIGHT_DURATION =
|
|
40
|
+
export declare const DEFAULT_FLIGHT_DURATION = 1000;
|
|
41
41
|
export declare const DEFAULT_EASING: EasingFunction;
|
|
42
42
|
type CameraFrame = {
|
|
43
43
|
eye: Vec3;
|
|
@@ -367,6 +367,12 @@ declare class Camera {
|
|
|
367
367
|
* @param {number} angle - View angle
|
|
368
368
|
*/
|
|
369
369
|
setViewAngle(angle: number): void;
|
|
370
|
+
/**
|
|
371
|
+
* Sets camera horizontal view angle in degrees.
|
|
372
|
+
* @public
|
|
373
|
+
* @param {number} angle - Horizontal view angle.
|
|
374
|
+
*/
|
|
375
|
+
setHorizontalViewAngle(angle: number): void;
|
|
370
376
|
/**
|
|
371
377
|
* Returns camera vertical view angle in degrees.
|
|
372
378
|
* @public
|
|
@@ -562,7 +568,7 @@ declare class Camera {
|
|
|
562
568
|
*/
|
|
563
569
|
rotateAround(angle: number, isArc?: boolean, center?: Vec3, up?: Vec3): void;
|
|
564
570
|
/**
|
|
565
|
-
* Rotates camera around center point by horizontal.
|
|
571
|
+
* Rotates camera around the center point by horizontal.
|
|
566
572
|
* @public
|
|
567
573
|
* @param {number} angle - Rotation angle in radians.
|
|
568
574
|
* @param {boolean} [isArc] - If true camera up vector gets from current up vector every frame,
|
|
@@ -572,14 +578,14 @@ declare class Camera {
|
|
|
572
578
|
*/
|
|
573
579
|
rotateHorizontal(angle: number, isArc?: boolean, center?: Vec3, up?: Vec3): void;
|
|
574
580
|
/**
|
|
575
|
-
* Rotates camera around center point by vertical.
|
|
581
|
+
* Rotates camera around the center point by vertical.
|
|
576
582
|
* @param {number} angle - Rotation angle in radians.
|
|
577
583
|
* @param {Vec3} [center] - Point that the camera rotates around.
|
|
578
584
|
*/
|
|
579
585
|
rotateVertical(angle: number, center?: Vec3): void;
|
|
580
586
|
/**
|
|
581
587
|
* Gets 3d size factor. Uses in LOD distance calculation.
|
|
582
|
-
* It is very important function used in Node.ts
|
|
588
|
+
* It is a very important function used in Node.ts
|
|
583
589
|
* @public
|
|
584
590
|
* @param {Vec3} p - Point in 3d.
|
|
585
591
|
* @param {Vec3} r - size.
|
|
@@ -611,12 +617,19 @@ declare class Camera {
|
|
|
611
617
|
*/
|
|
612
618
|
getCurrentFrustum(): number;
|
|
613
619
|
/**
|
|
614
|
-
* Checks whether sphere intersects any camera frustum.
|
|
620
|
+
* Checks whether the sphere intersects any camera frustum.
|
|
615
621
|
* @public
|
|
616
622
|
* @param {Sphere} sphere - Bounding sphere.
|
|
617
623
|
* @returns {boolean} `true` when visible in at least one frustum.
|
|
618
624
|
*/
|
|
619
625
|
containsSphere(sphere: Sphere): boolean;
|
|
626
|
+
/**
|
|
627
|
+
* Checks whether a point is inside any camera frustum.
|
|
628
|
+
* @public
|
|
629
|
+
* @param {Vec3} point - Cartesian point.
|
|
630
|
+
* @returns {boolean} `true` when visible in at least one frustum.
|
|
631
|
+
*/
|
|
632
|
+
containsPoint(point: Vec3): boolean;
|
|
620
633
|
/**
|
|
621
634
|
* Returns current active frustum.
|
|
622
635
|
* @public
|
|
@@ -91,6 +91,7 @@ declare class PlanetCamera extends Camera {
|
|
|
91
91
|
protected _keyLock: Key;
|
|
92
92
|
protected _checkTerrainCollision: boolean;
|
|
93
93
|
eyeNorm: Vec3;
|
|
94
|
+
protected _extentFitRequestId: number;
|
|
94
95
|
constructor(planet: Planet, options?: IPlanetCameraParams);
|
|
95
96
|
/**
|
|
96
97
|
* Enables or disables terrain collision checks.
|
|
@@ -148,6 +149,11 @@ declare class PlanetCamera extends Camera {
|
|
|
148
149
|
* @returns {Vec3}
|
|
149
150
|
*/
|
|
150
151
|
getExtentPosition(extent: Extent, height?: number | null): Vec3;
|
|
152
|
+
protected _getExtentCenterHeightInfo(extent: Extent): {
|
|
153
|
+
height: number;
|
|
154
|
+
segmentZoom: number;
|
|
155
|
+
};
|
|
156
|
+
protected _isSegmentHeightAccurate(extentHeight: number, segmentZoom: number): boolean;
|
|
151
157
|
/**
|
|
152
158
|
* View current extent.
|
|
153
159
|
* @public
|
|
@@ -227,6 +233,7 @@ declare class PlanetCamera extends Camera {
|
|
|
227
233
|
* @returns {Vec3 | undefined} Terrain point under camera when available.
|
|
228
234
|
*/
|
|
229
235
|
checkTerrainCollision(): Vec3 | undefined;
|
|
236
|
+
protected _getInsideCollisionSegment(): Segment | null;
|
|
230
237
|
/**
|
|
231
238
|
* Returns visible surface arc distance from current altitude.
|
|
232
239
|
* @public
|
|
@@ -4,6 +4,10 @@ import { Control, IControlParams } from "./Control";
|
|
|
4
4
|
import { ShaderProgram } from "../webgl/ShaderProgram";
|
|
5
5
|
export interface IFramebufferDialogParams extends IControlParams {
|
|
6
6
|
framebuffer?: Framebuffer;
|
|
7
|
+
arrayTexture?: WebGLTexture;
|
|
8
|
+
arrayLayer?: number;
|
|
9
|
+
width?: number;
|
|
10
|
+
height?: number;
|
|
7
11
|
title?: string;
|
|
8
12
|
common?: string;
|
|
9
13
|
image?: string;
|
|
@@ -11,15 +15,25 @@ export interface IFramebufferDialogParams extends IControlParams {
|
|
|
11
15
|
}
|
|
12
16
|
export declare class FramebufferPreview extends Control {
|
|
13
17
|
protected _dialog: Dialog<null>;
|
|
14
|
-
$canvas: HTMLCanvasElement;
|
|
15
18
|
protected _framebuffer: Framebuffer | null;
|
|
19
|
+
protected _arrayTexture: WebGLTexture | null;
|
|
20
|
+
protected _arrayLayer: number;
|
|
21
|
+
protected _width: number;
|
|
22
|
+
protected _height: number;
|
|
23
|
+
protected _isArrayMode: boolean;
|
|
16
24
|
protected _screenFramebuffer: Framebuffer | null;
|
|
17
|
-
framebufferCurrentTexture: number;
|
|
18
25
|
protected _program: ShaderProgram;
|
|
26
|
+
$canvas: HTMLCanvasElement;
|
|
27
|
+
framebufferCurrentTexture: number;
|
|
19
28
|
constructor(params: IFramebufferDialogParams);
|
|
20
29
|
bindFramebuffer(framebuffer: Framebuffer): void;
|
|
30
|
+
bindArrayTexture(texture: WebGLTexture, layer: number): void;
|
|
21
31
|
oninit(): void;
|
|
22
32
|
activate(): void;
|
|
23
33
|
deactivate(): void;
|
|
34
|
+
protected _isDrawSubscribed: boolean;
|
|
35
|
+
protected _subscribeDraw(): void;
|
|
36
|
+
protected _unsubscribeDraw(): void;
|
|
37
|
+
protected _onDialogVisibilityChange: (isVisible: boolean) => void;
|
|
24
38
|
protected _onDraw: () => void;
|
|
25
39
|
}
|
|
@@ -67,6 +67,7 @@ export declare class Navigation extends Control {
|
|
|
67
67
|
protected _grabbedSphere: Sphere;
|
|
68
68
|
protected _wheelDirection: number;
|
|
69
69
|
protected _currScreenPos: Vec2;
|
|
70
|
+
protected _grabbedScreenPoint: Vec2;
|
|
70
71
|
protected _tUp: Vec3;
|
|
71
72
|
protected _tRad: number;
|
|
72
73
|
protected _shiftBusy: boolean;
|
|
@@ -89,7 +90,7 @@ export declare class Navigation extends Control {
|
|
|
89
90
|
onremove(): void;
|
|
90
91
|
onactivate(): void;
|
|
91
92
|
ondeactivate(): void;
|
|
92
|
-
protected
|
|
93
|
+
protected onPreDraw(): void;
|
|
93
94
|
_onShiftFree: () => void;
|
|
94
95
|
private _onCameraFly;
|
|
95
96
|
protected _onMouseMove: (e: IMouseState) => void;
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { CameraFrameComposer } from "../CameraFrameComposer";
|
|
2
2
|
import { CameraFrameHandler } from "../CameraFrameHandler";
|
|
3
3
|
import { Camera } from "../../camera/Camera";
|
|
4
|
+
import { PlanetCamera } from "../../camera/PlanetCamera";
|
|
4
5
|
import { Framebuffer } from "../../webgl";
|
|
5
6
|
import { Control, IControlParams } from "../Control";
|
|
6
7
|
import { Vec3 } from "../../math/Vec3";
|
|
@@ -15,6 +16,7 @@ interface IPerimeterSegmentsData {
|
|
|
15
16
|
export interface ICameraDepthHandlerParams extends IControlParams {
|
|
16
17
|
showFrustum?: boolean;
|
|
17
18
|
showFootprint?: boolean;
|
|
19
|
+
excludeLayers?: Vector[];
|
|
18
20
|
}
|
|
19
21
|
export declare class CameraDepthHandler extends Control {
|
|
20
22
|
protected _frameHandler: CameraFrameHandler | null;
|
|
@@ -26,11 +28,16 @@ export declare class CameraDepthHandler extends Control {
|
|
|
26
28
|
protected _quadTreeStrategy: QuadTreeStrategy | null;
|
|
27
29
|
protected _showFrustum: boolean;
|
|
28
30
|
protected _showFootprint: boolean;
|
|
31
|
+
protected _excludeLayers: Vector[];
|
|
29
32
|
constructor(params: ICameraDepthHandlerParams);
|
|
30
33
|
protected _createCamera(): Camera;
|
|
31
34
|
get camera(): Camera | undefined;
|
|
32
35
|
oninit(): void;
|
|
33
36
|
get framebuffer(): Framebuffer | undefined;
|
|
37
|
+
getCamera(): Camera;
|
|
38
|
+
getDepthTexture(): WebGLTexture;
|
|
39
|
+
protected _segmentsPass(camera: PlanetCamera, quadTreeStrategy: QuadTreeStrategy): void;
|
|
40
|
+
protected _geoObjectsPass(camera: PlanetCamera): void;
|
|
34
41
|
protected _depthHandlerCallback: (frameHandler: CameraFrameHandler) => void;
|
|
35
42
|
protected _renderFootprint(frameHandler: CameraFrameHandler): void;
|
|
36
43
|
protected _collectPerimeterLonLats(width: number, height: number): IPerimeterSegmentsData;
|
|
@@ -22,6 +22,7 @@ interface IEntityCollectionParams {
|
|
|
22
22
|
visibility?: boolean;
|
|
23
23
|
labelMaxLetters?: number;
|
|
24
24
|
pickingEnabled?: boolean;
|
|
25
|
+
receiveProjectors?: boolean;
|
|
25
26
|
scaleByDistance?: NumberArray3;
|
|
26
27
|
pickingScale?: number | NumberArray3;
|
|
27
28
|
opacity?: number;
|
|
@@ -39,10 +40,11 @@ interface IEntityCollectionParams {
|
|
|
39
40
|
* @param {boolean} [options.visibility=true] - Entity visibility.
|
|
40
41
|
* @param {number} [options.labelMaxLetters] - Maximum label letters per line used by the label handler.
|
|
41
42
|
* @param {boolean} [options.pickingEnabled] - Enables/disables picking for all entity handlers.
|
|
43
|
+
* @param {boolean} [options.receiveProjectors=true] - Enables/disables projector effect reception for this collection.
|
|
42
44
|
* @param {Array.<number>} [options.scaleByDistance] - Entity scale by distance parameters. (exactly 3 entries)
|
|
43
45
|
* First index - near distance to the entity, after entity becomes full scale.
|
|
44
|
-
* Second index - far distance to the entity, when entity becomes zero scale.
|
|
45
|
-
* Third index - far distance to the entity, when entity becomes invisible.
|
|
46
|
+
* Second index - far distance to the entity, when the entity becomes zero scale.
|
|
47
|
+
* Third index - far distance to the entity, when the entity becomes invisible.
|
|
46
48
|
* @param {number|Array.<number>} [options.pickingScale] - Picking scale value or xyz scale array.
|
|
47
49
|
* @param {number} [options.opacity] - Entity global opacity.
|
|
48
50
|
* @param {number|string} [options.shadeMode=1] - Geo object shading mode: `0|none|unlit`, `0.5|phong`, `1|pbr`.
|
|
@@ -194,6 +196,12 @@ declare class EntityCollection {
|
|
|
194
196
|
_layer?: Vector;
|
|
195
197
|
_quadNode?: EntityCollectionNode;
|
|
196
198
|
_shadeMode: ShadeMode;
|
|
199
|
+
/**
|
|
200
|
+
* Enables/disables projector effect reception for this collection.
|
|
201
|
+
* @public
|
|
202
|
+
* @type {boolean}
|
|
203
|
+
*/
|
|
204
|
+
receiveProjectors: boolean;
|
|
197
205
|
/**
|
|
198
206
|
* Disables `gl.CULL_FACE` for geo objects rendering passes (opaque/transparent).
|
|
199
207
|
* Useful for rendering models with inverted/inconsistent triangle winding.
|
|
@@ -234,6 +242,12 @@ declare class EntityCollection {
|
|
|
234
242
|
* @param {boolean} enable - Picking enable flag.
|
|
235
243
|
*/
|
|
236
244
|
setPickingEnabled(enable: boolean): void;
|
|
245
|
+
/**
|
|
246
|
+
* Sets whether this collection receives projector effects.
|
|
247
|
+
* @public
|
|
248
|
+
* @param {boolean} enable - `true` to receive projector effects, `false` to ignore them.
|
|
249
|
+
*/
|
|
250
|
+
setReceiveProjectors(enable: boolean): void;
|
|
237
251
|
/**
|
|
238
252
|
* Gets collection opacity.
|
|
239
253
|
* @public
|
|
@@ -8,6 +8,7 @@ import { Object3d } from "../../Object3d";
|
|
|
8
8
|
import { InstanceData } from "./InstanceData";
|
|
9
9
|
import type { Renderer } from "../../renderer/Renderer";
|
|
10
10
|
import type { Scene } from "../../scene/Scene";
|
|
11
|
+
import type { Camera } from "../../camera/Camera";
|
|
11
12
|
import type { ShaderProgram } from "../../webgl/ShaderProgram";
|
|
12
13
|
export declare const VERTEX_BUFFER = 0;
|
|
13
14
|
export declare const RTC_POSITION_BUFFER = 1;
|
|
@@ -68,6 +69,8 @@ export declare class GeoObjectHandler {
|
|
|
68
69
|
_displayForwardPASS(): void;
|
|
69
70
|
protected _depthPASS(): void;
|
|
70
71
|
drawDepth(): void;
|
|
72
|
+
protected _depthCameraPASS(camera: Camera): void;
|
|
73
|
+
drawDepthCameraPass(camera: Camera): void;
|
|
71
74
|
drawPicking(): void;
|
|
72
75
|
protected _pickingPASS(): void;
|
|
73
76
|
setQRotArr(tagData: InstanceData, tagDataIndex: number, qRot: Quat): void;
|
package/lib/index.d.ts
CHANGED
|
@@ -18,9 +18,13 @@ export type { IControlParams } from "./control/Control";
|
|
|
18
18
|
export type { ITouchState } from "./renderer/RendererEvents";
|
|
19
19
|
export type { IDeferredShadingPass } from "./renderer/IDeferredShadingPass";
|
|
20
20
|
export type { ITransparencyPass } from "./renderer/ITransparencyPass";
|
|
21
|
+
export type { ProjectorSourceType, ProjectorRenderMode, IProjectorParams } from "./renderer/projectors/Projector";
|
|
22
|
+
export { Projector } from "./renderer/projectors/Projector";
|
|
21
23
|
export { PhongDeferredShading } from "./renderer/PhongDeferredShading";
|
|
22
24
|
export { AtmosphereDeferredShading } from "./renderer/AtmosphereDeferredShading";
|
|
23
25
|
export { WOITPass } from "./renderer/WOITPass";
|
|
26
|
+
export { ProjectorsPass } from "./renderer/projectors/ProjectorsPass";
|
|
27
|
+
export { ProjectorManager } from "./renderer/projectors/ProjectorManager";
|
|
24
28
|
export { SHADE_UNLIT, SHADE_PHONG, SHADE_PBR, type ShadeMode, type ShadeModeInput } from "./shadeModeConstants";
|
|
25
29
|
export declare const version: string;
|
|
26
30
|
import { Geoid } from "./terrain/Geoid";
|
|
@@ -40,9 +44,9 @@ import { Loader, type IResponse } from "./utils/Loader";
|
|
|
40
44
|
import { EarthQuadTreeStrategy, EquiQuadTreeStrategy, QuadTreeStrategy, quadTreeStrategyType, Wgs84QuadTreeStrategy } from "./quadTree/index";
|
|
41
45
|
import { Object3d } from "./Object3d";
|
|
42
46
|
import { Handler, ShaderProgram, Framebuffer, Multisample } from "./webgl/index";
|
|
43
|
-
import { EmptyTerrain, GlobusTerrain, RgbTerrain, BilTerrain, GlobusRgbTerrain } from "./terrain/index";
|
|
47
|
+
import { EmptyTerrain, GlobusTerrain, RgbTerrain, BilTerrain, GlobusRgbTerrain, MapterhornTerrain, rgbToHeightByEncoding, rgbToHeightRgb, rgbToHeightTerrarium, resolveRgbToHeightFunc } from "./terrain/index";
|
|
44
48
|
import { MoveAxisEntity } from "./control/entityEditor/MoveAxisEntity";
|
|
45
49
|
import { Gltf } from "./utils/gltf/gltfParser";
|
|
46
50
|
import { Easing } from "./utils/easing";
|
|
47
51
|
import type { EasingFunction } from "./utils/easing";
|
|
48
|
-
export { bv, jd, math, mercator, utils, input, control, scene, quadTreeStrategyType, wgs84, moon, mars, terrain, layer, ui, webgl, Easing, EasingFunction, Framebuffer, EmptyTerrain, GlobusTerrain, RgbTerrain, GlobusRgbTerrain, BilTerrain, Camera, Ellipsoid, Planet, PlanetCamera, ShaderProgram, Handler, Multisample, Renderer, Clock, Events, EventsHandler, createEvents, Extent, LonLat, Scene, Line2, Line3, Mat3, Mat4, Plane, Quat, Ray, Vec2, Vec3, Vec4, Geoid, Popup, QuadTreeStrategy, EquiQuadTreeStrategy, EarthQuadTreeStrategy, Wgs84QuadTreeStrategy, Object3d, Gltf, MoveAxisEntity, Loader, IResponse };
|
|
52
|
+
export { bv, jd, math, mercator, utils, input, control, scene, quadTreeStrategyType, wgs84, moon, mars, terrain, layer, ui, webgl, Easing, EasingFunction, Framebuffer, EmptyTerrain, GlobusTerrain, RgbTerrain, GlobusRgbTerrain, MapterhornTerrain, rgbToHeightByEncoding, rgbToHeightRgb, rgbToHeightTerrarium, resolveRgbToHeightFunc, BilTerrain, Camera, Ellipsoid, Planet, PlanetCamera, ShaderProgram, Handler, Multisample, Renderer, Clock, Events, EventsHandler, createEvents, Extent, LonLat, Scene, Line2, Line3, Mat3, Mat4, Plane, Quat, Ray, Vec2, Vec3, Vec4, Geoid, Popup, QuadTreeStrategy, EquiQuadTreeStrategy, EarthQuadTreeStrategy, Wgs84QuadTreeStrategy, Object3d, Gltf, MoveAxisEntity, Loader, IResponse };
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { Layer } from "./Layer";
|
|
2
|
+
import type { ILayerParams } from "./Layer";
|
|
3
|
+
import { Material } from "./Material";
|
|
4
|
+
import type { NumberArray4 } from "../math/Vec4";
|
|
5
|
+
import type { Node } from "../quadTree/Node";
|
|
6
|
+
import { Segment } from "../segment/Segment";
|
|
7
|
+
export interface IBaseTileMaterialLayerParams extends ILayerParams {
|
|
8
|
+
minNativeZoom?: number;
|
|
9
|
+
maxNativeZoom?: number;
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* Shared tile material application for imagery/canvas tile layers.
|
|
13
|
+
* It can be applied to any type of tiled data that can be displayed on the planet in either of these two ways, such as BUildings, vector tiles etc.
|
|
14
|
+
*/
|
|
15
|
+
export declare abstract class BaseTileMaterialLayer extends Layer {
|
|
16
|
+
minNativeZoom: number;
|
|
17
|
+
maxNativeZoom: number;
|
|
18
|
+
constructor(name?: string | null, options?: IBaseTileMaterialLayerParams);
|
|
19
|
+
applyMaterial(material: Material, forceLoading?: boolean): NumberArray4;
|
|
20
|
+
protected _applyMaterialDefaultCore(material: Material, forceLoading?: boolean): NumberArray4;
|
|
21
|
+
protected _applyMaterialFastCore(material: Material, forceLoading?: boolean): NumberArray4;
|
|
22
|
+
protected _applyReadyParentTexture(material: Material, segment: Segment, layerId: number): void;
|
|
23
|
+
protected _allowsLoadWithoutPassReady(): boolean;
|
|
24
|
+
protected _hasParentMaterial(psegm: Material): boolean;
|
|
25
|
+
protected _applyNoParentMaterial(material: Material, segment: Segment): void;
|
|
26
|
+
protected _onMaterialReady(_material: Material): void;
|
|
27
|
+
protected _onParentMaterialApplied(_material: Material, _psegm: Material): void;
|
|
28
|
+
protected _beforeFastMaterialParentWalk(material: Material, segment: Segment, forceLoading: boolean): void;
|
|
29
|
+
protected _applyFastPassReadyLoading(material: Material, segment: Segment, pn: Node, forceLoading: boolean): void;
|
|
30
|
+
/** pn from parent walk is at maxNativeZoom. */
|
|
31
|
+
protected _fastWhenWalkerAtMaxNativeZoom(material: Material, segment: Segment): void;
|
|
32
|
+
protected _fastLoadParentAtMaxNativeZoom(material: Material, segment: Segment, maxNativeZoom: number): void;
|
|
33
|
+
protected _triggerDefaultMaterialLoad(mat: Material, material: Material, targetNode: Node, forceLoading: boolean): void;
|
|
34
|
+
protected _defaultMaterialLoadForce(_mat: Material, material: Material, targetNode: Node, forceLoading: boolean): boolean;
|
|
35
|
+
clearMaterial(material: Material): void;
|
|
36
|
+
}
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import type { EventCallback, EventsHandler } from "../Events";
|
|
2
|
-
import {
|
|
3
|
-
import type {
|
|
2
|
+
import { BaseTileMaterialLayer } from "./BaseTileMaterialLayer";
|
|
3
|
+
import type { IBaseTileMaterialLayerParams } from "./BaseTileMaterialLayer";
|
|
4
|
+
import type { LayerEventsList } from "./Layer";
|
|
4
5
|
import { Material } from "../layer/Material";
|
|
5
|
-
import type { NumberArray4 } from "../math/Vec4";
|
|
6
6
|
import { Planet } from "../scene/Planet";
|
|
7
7
|
type ApplyImageFunc = (material: HTMLCanvasElement | ImageBitmap | HTMLImageElement) => void;
|
|
8
8
|
type DrawTileCallback = (material: Material, applyImage: ApplyImageFunc) => void;
|
|
9
|
-
export interface ICanvasTilesParams extends
|
|
9
|
+
export interface ICanvasTilesParams extends IBaseTileMaterialLayerParams {
|
|
10
10
|
drawTile: DrawTileCallback;
|
|
11
11
|
animated?: boolean;
|
|
12
12
|
minNativeZoom?: number;
|
|
@@ -33,13 +33,11 @@ type CanvasTilesEventsType = EventsHandler<CanvasTilesEventsList> & EventsHandle
|
|
|
33
33
|
* @fires load
|
|
34
34
|
* @fires loadend
|
|
35
35
|
*/
|
|
36
|
-
declare class CanvasTiles extends
|
|
36
|
+
declare class CanvasTiles extends BaseTileMaterialLayer {
|
|
37
37
|
static MAX_REQUESTS: number;
|
|
38
38
|
static __requestsCounter: number;
|
|
39
39
|
events: CanvasTilesEventsType;
|
|
40
40
|
animated: boolean;
|
|
41
|
-
minNativeZoom: number;
|
|
42
|
-
maxNativeZoom: number;
|
|
43
41
|
/**
|
|
44
42
|
* Current creating tiles counter.
|
|
45
43
|
* @protected
|
|
@@ -82,7 +80,7 @@ declare class CanvasTiles extends Layer {
|
|
|
82
80
|
* @virtual
|
|
83
81
|
* @param {Material} material -
|
|
84
82
|
*/
|
|
85
|
-
loadMaterial(material: Material): void;
|
|
83
|
+
loadMaterial(material: Material, _forceLoading?: boolean): void;
|
|
86
84
|
/**
|
|
87
85
|
* Loads material image and apply it to the planet segment.
|
|
88
86
|
* @protected
|
|
@@ -98,9 +96,7 @@ declare class CanvasTiles extends Layer {
|
|
|
98
96
|
abortMaterialLoading(material: Material): void;
|
|
99
97
|
protected _dequeueRequest(): void;
|
|
100
98
|
protected _whilePendings(): Material | null;
|
|
101
|
-
|
|
102
|
-
protected
|
|
103
|
-
protected _applyMaterialFast(material: Material): NumberArray4;
|
|
104
|
-
clearMaterial(material: Material): void;
|
|
99
|
+
protected _onMaterialReady(material: Material): void;
|
|
100
|
+
protected _onParentMaterialApplied(material: Material, _psegm: Material): void;
|
|
105
101
|
}
|
|
106
102
|
export { CanvasTiles };
|
package/lib/layer/Vector.d.ts
CHANGED
|
@@ -4,14 +4,16 @@ import { EntityCollection } from "../entity/EntityCollection";
|
|
|
4
4
|
import { EntityCollectionsTreeStrategy } from "../quadTree/EntityCollectionsTreeStrategy";
|
|
5
5
|
import type { EventsHandler } from "../Events";
|
|
6
6
|
import { GeometryHandler } from "../entity/geometry/GeometryHandler";
|
|
7
|
-
import {
|
|
8
|
-
import type {
|
|
7
|
+
import { BaseTileMaterialLayer } from "./BaseTileMaterialLayer";
|
|
8
|
+
import type { IBaseTileMaterialLayerParams } from "./BaseTileMaterialLayer";
|
|
9
|
+
import type { LayerEventsList } from "./Layer";
|
|
9
10
|
import type { NumberArray3 } from "../math/Vec3";
|
|
10
11
|
import { Planet } from "../scene/Planet";
|
|
11
12
|
import { Material } from "./Material";
|
|
13
|
+
import { Segment } from "../segment/Segment";
|
|
12
14
|
import type { NumberArray4 } from "../math/Vec4";
|
|
13
15
|
import { type ShadeMode, type ShadeModeInput } from "../shadeModeConstants";
|
|
14
|
-
export interface IVectorParams extends
|
|
16
|
+
export interface IVectorParams extends IBaseTileMaterialLayerParams {
|
|
15
17
|
entities?: Entity[] | IEntityParams[];
|
|
16
18
|
depthOffset?: number;
|
|
17
19
|
nodeCapacity?: number;
|
|
@@ -24,6 +26,7 @@ export interface IVectorParams extends ILayerParams {
|
|
|
24
26
|
shadeMode?: ShadeModeInput;
|
|
25
27
|
depthOrder?: number;
|
|
26
28
|
disableCullFace?: boolean;
|
|
29
|
+
receiveProjectors?: boolean;
|
|
27
30
|
}
|
|
28
31
|
type VectorEventsList = [
|
|
29
32
|
"draw",
|
|
@@ -33,7 +36,7 @@ type VectorEventsList = [
|
|
|
33
36
|
export type VectorEventsType = EventsHandler<VectorEventsList> & EventsHandler<LayerEventsList>;
|
|
34
37
|
/**
|
|
35
38
|
* Vector layer is an alternative entity storage. Used for geospatial data rendering like
|
|
36
|
-
* points, lines, polygons, geometry objects etc.
|
|
39
|
+
* points, lines, polygons, geometry objects, etc.
|
|
37
40
|
* @class
|
|
38
41
|
* @extends {Layer}
|
|
39
42
|
* @param {string} [name="noname"] - Layer name.
|
|
@@ -65,6 +68,7 @@ export type VectorEventsType = EventsHandler<VectorEventsList> & EventsHandler<L
|
|
|
65
68
|
* @param {number|string} [options.shadeMode=1] - Geo object shading: 0/none unlit, 0.5/phong, 1/pbr.
|
|
66
69
|
* @param {number} [options.depthOrder=0] - Rendering order group for vector collections.
|
|
67
70
|
* @param {boolean} [options.disableCullFace=false] - Disables back-face culling for geo object rendering.
|
|
71
|
+
* @param {boolean} [options.receiveProjectors=true] - Enables/disables projector effect reception for this layer entities.
|
|
68
72
|
*
|
|
69
73
|
* //@fires entitymove
|
|
70
74
|
* @fires draw
|
|
@@ -74,7 +78,7 @@ export type VectorEventsType = EventsHandler<VectorEventsList> & EventsHandler<L
|
|
|
74
78
|
* @fires entityremove
|
|
75
79
|
* @fires visibilitychange
|
|
76
80
|
*/
|
|
77
|
-
declare class Vector extends
|
|
81
|
+
declare class Vector extends BaseTileMaterialLayer {
|
|
78
82
|
events: VectorEventsType;
|
|
79
83
|
protected _depthOrder: number;
|
|
80
84
|
/**
|
|
@@ -117,7 +121,7 @@ declare class Vector extends Layer {
|
|
|
117
121
|
/** todo: combine into one */
|
|
118
122
|
protected _stripEntityCollection: EntityCollection;
|
|
119
123
|
protected _polylineEntityCollection: EntityCollection;
|
|
120
|
-
|
|
124
|
+
_geoObjectEntityCollection: EntityCollection;
|
|
121
125
|
_geometryHandler: GeometryHandler;
|
|
122
126
|
protected _entityCollectionsTreeStrategy: EntityCollectionsTreeStrategy | null;
|
|
123
127
|
/**
|
|
@@ -131,6 +135,7 @@ declare class Vector extends Layer {
|
|
|
131
135
|
protected _labelMaxLetters: number;
|
|
132
136
|
protected _shadeMode: ShadeMode;
|
|
133
137
|
protected _disableCullFace: boolean;
|
|
138
|
+
protected _receiveProjectors: boolean;
|
|
134
139
|
constructor(name?: string | null, options?: IVectorParams);
|
|
135
140
|
get depthOrder(): number;
|
|
136
141
|
set depthOrder(d: number);
|
|
@@ -138,6 +143,18 @@ declare class Vector extends Layer {
|
|
|
138
143
|
set shadeMode(m: ShadeModeInput);
|
|
139
144
|
get disableCullFace(): boolean;
|
|
140
145
|
set disableCullFace(v: boolean);
|
|
146
|
+
/**
|
|
147
|
+
* Gets projector effect reception state for this vector layer entities.
|
|
148
|
+
* @public
|
|
149
|
+
* @returns {boolean}
|
|
150
|
+
*/
|
|
151
|
+
get receiveProjectors(): boolean;
|
|
152
|
+
/**
|
|
153
|
+
* Enables/disables projector effect reception for this vector layer entities.
|
|
154
|
+
* @public
|
|
155
|
+
* @param {boolean} v - `true` to receive projector effects, `false` to ignore them.
|
|
156
|
+
*/
|
|
157
|
+
set receiveProjectors(v: boolean);
|
|
141
158
|
get labelMaxLetters(): number;
|
|
142
159
|
get instanceName(): string;
|
|
143
160
|
protected _bindPicking(): void;
|
|
@@ -238,7 +255,7 @@ declare class Vector extends Layer {
|
|
|
238
255
|
* @virtual
|
|
239
256
|
* @param {Material} material - Current material.
|
|
240
257
|
*/
|
|
241
|
-
loadMaterial(material: Material): void;
|
|
258
|
+
loadMaterial(material: Material, _forceLoading?: boolean): void;
|
|
242
259
|
/**
|
|
243
260
|
* Abort exact material loading.
|
|
244
261
|
* @public
|
|
@@ -247,6 +264,10 @@ declare class Vector extends Layer {
|
|
|
247
264
|
*/
|
|
248
265
|
abortMaterialLoading(material: Material): void;
|
|
249
266
|
applyMaterial(material: Material): NumberArray4;
|
|
267
|
+
protected _allowsLoadWithoutPassReady(): boolean;
|
|
268
|
+
protected _hasParentMaterial(psegm: Material): boolean;
|
|
269
|
+
protected _onParentMaterialApplied(material: Material, psegm: Material): void;
|
|
270
|
+
protected _applyNoParentMaterial(material: Material, segment: Segment): void;
|
|
250
271
|
clearMaterial(material: Material): void;
|
|
251
272
|
update(): void;
|
|
252
273
|
}
|
package/lib/layer/XYZ.d.ts
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import type {
|
|
1
|
+
import { BaseTileMaterialLayer } from "./BaseTileMaterialLayer";
|
|
2
|
+
import type { IBaseTileMaterialLayerParams } from "./BaseTileMaterialLayer";
|
|
3
|
+
import type { LayerEventsList } from "./Layer";
|
|
3
4
|
import { Segment } from "../segment/Segment";
|
|
4
5
|
import type { EventsHandler } from "../Events";
|
|
5
6
|
import { Material } from "./Material";
|
|
6
|
-
import type { NumberArray4 } from "../math/Vec4";
|
|
7
7
|
import type { FetchCache } from "../utils/Loader";
|
|
8
|
-
export interface IXYZParams extends
|
|
8
|
+
export interface IXYZParams extends IBaseTileMaterialLayerParams {
|
|
9
9
|
url?: string;
|
|
10
10
|
subdomains?: string[];
|
|
11
11
|
minNativeZoom?: number;
|
|
@@ -51,7 +51,7 @@ type XYZEventsType = EventsHandler<XYZEventsList> & EventsHandler<LayerEventsLis
|
|
|
51
51
|
* attribution: 'Data @ <a href="http://www.openstreetmap.org/">OpenStreetMap</a> contributors, <a href="http://www.openstreetmap.org/copyright">ODbL</a>'
|
|
52
52
|
* });
|
|
53
53
|
*/
|
|
54
|
-
export declare class XYZ extends
|
|
54
|
+
export declare class XYZ extends BaseTileMaterialLayer {
|
|
55
55
|
events: XYZEventsType;
|
|
56
56
|
/**
|
|
57
57
|
* Tile url source template.
|
|
@@ -63,18 +63,6 @@ export declare class XYZ extends Layer {
|
|
|
63
63
|
* @protected
|
|
64
64
|
*/
|
|
65
65
|
protected _s: string[];
|
|
66
|
-
/**
|
|
67
|
-
* Minimal native zoom level when tiles are available.
|
|
68
|
-
* @public
|
|
69
|
-
* @type {number}
|
|
70
|
-
*/
|
|
71
|
-
minNativeZoom: number;
|
|
72
|
-
/**
|
|
73
|
-
* Maximal native zoom level when tiles are available.
|
|
74
|
-
* @public
|
|
75
|
-
* @type {number}
|
|
76
|
-
*/
|
|
77
|
-
maxNativeZoom: number;
|
|
78
66
|
/**
|
|
79
67
|
* Rewrites imagery tile url query.
|
|
80
68
|
* @private
|
|
@@ -144,10 +132,6 @@ export declare class XYZ extends Layer {
|
|
|
144
132
|
* @param {Function} ur - The callback that returns tile custom created url.
|
|
145
133
|
*/
|
|
146
134
|
setUrlRewriteCallback(ur: Function): void;
|
|
147
|
-
applyMaterial(material: Material, forceLoading?: boolean): NumberArray4;
|
|
148
|
-
protected _apllyMaterialDefault(material: Material, forceLoading?: boolean): NumberArray4;
|
|
149
|
-
protected _applyMaterialFast(material: Material, forceLoading?: boolean): NumberArray4;
|
|
150
|
-
clearMaterial(material: Material): void;
|
|
151
135
|
/**
|
|
152
136
|
* @protected
|
|
153
137
|
*/
|
package/lib/og.css
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
:root{--grey0: rgb(36 36 36);--grey1: #434244;--grey2: #3f3f46;--grey3: #bbbbbb;--grey4: #5e5e5e;--grey5: rgb(50, 50, 50);--grey6: #b6b6b6;--grey7: #707070;--grey8: #e2e2e2;--grey9: #9f9f9f;--blue0: #1700a9ee}.og-map-button{height:40px;width:40px;position:absolute;outline:none;cursor:pointer;z-index:1;background-color:var(--grey5)}.og-control-container{position:absolute;top:12px;z-index:2;display:flex;flex-direction:row;flex-wrap:wrap;align-content:flex-start;gap:8px;width:min(136px,calc(100% - 24px));box-sizing:border-box;pointer-events:none}.og-control-container>*{pointer-events:auto}.og-control-container .og-map-button{position:relative;top:auto!important;right:auto!important;bottom:auto!important;left:auto!important;margin:0;flex:0 0 auto}.og-control-container__top-left{left:10px;justify-content:flex-start}.og-control-container__top-right{right:12px;justify-content:flex-end}.og-control-container__bottom-right{top:auto;bottom:12px;right:12px;width:auto;max-width:calc(100% - 24px);flex-direction:column;align-items:flex-end;justify-content:flex-end}.og-control-container .og-scale-container,.og-control-container .og-coordinates{position:relative;top:auto!important;right:auto!important;bottom:auto!important;left:auto!important;margin:0}.og-control-container__bottom-right .og-scale-container{order:0}.og-control-container__bottom-right .og-coordinates{order:1}.ogCenterIcon{height:12px;width:12px;margin-bottom:-3.5px;margin-right:-7.5px;bottom:50%;right:50%;position:absolute}.ogHandPoiner{cursor:pointer}.defaultText{position:absolute;top:0;left:0;color:#fff}#ogShowFpsControl{color:red}.ogGrabbingPoiner{cursor:grabbing!important}.og-inner{width:100%;height:100%;float:left;position:relative;-webkit-user-select:none;-moz-user-select:none;-khtml-user-select:none;-ms-user-select:none;overflow:hidden}.og-attribution{background:#cecece;text-align:right;bottom:0;left:0;position:absolute;font-size:.7rem;padding:1px 0;line-height:1.375em;font-family:Segoe UI,Frutiger,Frutiger Linotype,Dejavu Sans,Helvetica Neue,Arial,sans-serif;display:flex;flex-direction:row}.og-attribution .og-attribution__layer{margin-left:5px;margin-right:5px;align-items:center;display:inline;text-overflow:ellipsis;overflow:hidden;white-space:nowrap;color:#1f1f1f}.og-attribution img{max-height:1.3em}input{accent-color:var(--blue0);cursor:pointer}.og-menu-bar-vertical{position:absolute;right:12px;top:12px;width:40px;height:40px;background-color:#403b3bd9;border-radius:2px;box-shadow:0 1px 4px #0f0f0f2b;z-index:0}.og-hide{display:none!important}.og-not-visible{visibility:hidden!important}.og-options-container{position:relative;padding:12px;height:calc(100% - 30px);color:#b6b6b6}.og-option{width:100%;position:relative;display:inline-block;flex-direction:row;padding-bottom:7px;text-overflow:ellipsis;align-items:center;justify-content:left}.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{position:absolute;display:flex;flex-direction:column;box-shadow:3px 3px 4px #0f0f0f2b;background-color:var(--grey0);border:1px solid;border-color:var(--grey1);border-radius:4px;overflow:auto}.og-ddialog .og-ddialog-header{width:100%;height:27px;position:relative;padding:0;z-index:1;background-color:var(--grey2);color:#fff;display:flex;flex-direction:row;align-items:center;justify-content:space-between}.og-ddialog .og-ddialog-header .og-ddialog-header__title{color:var(--grey3);padding-left:5px;pointer-events:none;font-family:Segoe UI,Tahoma,Geneva,Verdana,sans-serif;font-size:14px;font-weight:400}.og-ddialog .og-ddialog-header .og-ddialog-header__buttons{display:flex;flex-direction:row;justify-content:flex-end}.og-ddialog .og-ddialog-header .og-ddialog-header__buttons .og-button{border-radius:0}.og-ddialog .og-ddialog-container{overflow:auto;position:relative;width:100%;height:100%;font-family:Segoe UI,Frutiger,Frutiger Linotype,Dejavu Sans,Helvetica Neue,Arial,sans-serif;font-size:14px}.og-ddialog.dragging{-webkit-user-select:none;user-select:none}.og-ddialog .og-ddialog-resize-handle{display:block;position:absolute;right:0;bottom:0;width:20px;height:20px;cursor:nwse-resize;touch-action:none;z-index:2}.og-button{display:flex;align-items:center;align-content:center;padding:2px;flex-direction:row;cursor:default;justify-content:center;color:var(--grey6);border-radius:6px}.og-button .og-button-icon{display:flex;align-items:center;justify-content:center;line-height:0}.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{height:20px;width:20px}.og-button__active{background-color:var(--grey2)}.og-layerSwitcher{position:relative;color:#b6b6b6;width:100%;height:100%;overflow-x:hidden;overflow-y:auto}.og-layerSwitcher__title{position:relative;color:#b6b6b6;font-size:14px;width:100%;padding:5px}.og-layerSwitcher__list{position:relative;width:100%;display:flex;flex-wrap:wrap;align-items:flex-start;padding:2px}.og-layerSwitcher__layerButton{width:70px;height:70px;position:relative;background-color:#7a7a7a;cursor:pointer;border-radius:7px;margin:3px;border:2px solid rgba(0,0,0,0);padding:0;display:flex;flex-direction:column-reverse}.og-layerSwitcher__layerButton.og-layerSwitcher__visible{border:2px solid #56ff64}.og-layerSwitcher__layerButton.og-layerSwitcher__visible img{opacity:1}.og-layerSwitcher__layerButton img{width:100%;height:100%;border-radius:7px;position:absolute;left:0;top:0;opacity:1}.og-layerSwitcher__layerButton img:hover{opacity:1}.og-layerSwitcher__name{color:var(--grey8);font-size:12px;overflow:hidden;text-overflow:ellipsis;padding:3px;background-color:#00000080;bottom:0;border-bottom-left-radius:7px;border-bottom-right-radius:7px;z-index:10}.og-entityTree{width:100%}.og-entityTree__node{width:100%;box-sizing:border-box}.og-entityTree__row{display:flex;align-items:center;min-height:22px}.og-entityTree__toggleBtn{width:20px;height:20px;border:none;background:transparent;color:var(--grey3);cursor:pointer;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{flex:1;min-width:0;border:none;background:transparent;color:var(--grey6);display:flex;align-items:center;justify-content:space-between;gap:8px;text-align:left;cursor:pointer;border-radius:4px;padding:3px 6px 3px 4px;font-size:12px}.og-entityTree__entityBtn:hover,.og-entityTree__entityBtn:focus-visible{background-color:var(--grey1)}.og-entityTree__name{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.og-entityTree__type{color:var(--grey9);font-size:11px;white-space:nowrap}.og-entityTree__children_hidden{display:none}.og-entityTree__children{padding-left:17px}.og-entityTreeControl{position:relative;width:100%;height:100%;overflow-x:hidden;overflow-y:auto;color:var(--grey4)}.og-entityTreeControl__tree{width:100%;padding:4px;box-sizing:border-box}.og-entityTreeControl__empty{padding:10px 8px;color:var(--grey3);font-size:13px}.displayNone{display:none}.displayBlock{display:block}.og-drawing-default_button .og-button-icon{transform:scale(.73)}.ogConsole{position:absolute;top:0;left:0;width:100%;max-height:70%;overflow:auto;font-size:14px;font-family:Arial;background-color:#8282827d;color:#fff;z-index:100000000;pointer-events:none}.ogConsole-text{padding:7px;overflow:hidden}.ogConsole-error{color:red}.ogConsole-warning{color:#ff0}.ogViewExtentBtn{margin-left:12px;height:24px;width:24px;scale:70%;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==) center center no-repeat}.ogViewExtentBtn:hover{border-radius:10px;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)}.og-debuginfo_controls{padding-bottom:8px;display:flex}.og-debuginfo_controls-button{width:25px;height:25px;float:left;margin:3px}.og-debug-info{color:#fff;font-size:12px;padding:10px}.og-debug-info .og-watch-line{width:100%;padding-bottom:5px;display:flex;flex-direction:row}.og-watch-line .og-watch-label{color:#cecece;width:200px}.og-watch-line .og-watch-value{margin-left:15px}.og-popup{position:absolute;text-align:center;bottom:-2px}.og-popup-content-wrapper,.og-popup-tip{background:#fff;color:#333;box-shadow:0 3px 14px #0006}.og-popup-content-wrapper{background:#fff;color:#333;box-shadow:0 3px 14px #0006;padding:1px;text-align:left;border-radius:8px;min-width:30px;min-height:17px}.og-popup-content{margin:20px 5px 5px;line-height:1.4}.og-popup-tip-container{width:40px;height:20px;position:absolute;left:50%;margin-left:-20px;overflow:hidden;pointer-events:none;bottom:-19px}.og-popup-tip{width:17px;height:17px;padding:1px;margin:-10px auto 0;-webkit-transform:rotate(45deg);-moz-transform:rotate(45deg);-ms-transform:rotate(45deg);transform:rotate(45deg)}.og-popup-toolbar{position:absolute;top:3px;right:2px;display:inline-block}.og-popup-btn{width:15px;height:15px;cursor:pointer;float:right}.og-popup-btn:hover{color:#2e9be7}.og-popup-title{position:absolute;left:5px;top:3px;font-size:14px}.og-scale-container{position:absolute;right:320px;bottom:30px}.og-scale-label{position:relative;color:#fff;font-family:Segoe UI,Frutiger,Frutiger Linotype,Dejavu Sans,Helvetica Neue,Arial,sans-serif;font-size:12px;text-align:center}.og-scale-ruler{position:relative;height:7px;border-bottom:2px solid white;border-left:1px solid white;border-right:1px solid white}.og-compass-button .og-button-icon{display:flex;align-items:center;justify-content:center;transform-origin:center center}.og-compass-button .og-button-icon svg{width:48px!important;height:48px!important;display:block}.og-orthoswitcher_button .og-button-icon svg{width:45px!important;height:45px!important;display:block;transform:translateY(3px)}.og-suncontrol-button{width:25px;height:25px;float:left;margin:3px}.og-lighing{position:relative;padding:12px;height:calc(100% - 30px);color:#b6b6b6}.og-lighing .og-layers{display:flex;flex-direction:row;align-items:center}.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{font-family:monospace;padding:2px;margin-left:21px;width:200px}.og-coordinates{position:absolute;bottom:25px;right:12px;text-align:right;overflow:hidden;font-family:monospace;font-size:1em;cursor:pointer;float:left;background-color:var(--grey5);color:var(--grey8);padding:5px;border-radius:4px}.og-coordinates div{float:left}.og-coordinates .og-coordinates-copy-btn{float:left;margin-right:6px;padding:0;border:0;background:transparent;color:var(--grey8);opacity:.8;cursor:pointer}.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{width:90px;padding-right:3px;text-align:left;text-overflow:unset;overflow:hidden}.og-height{width:50px;text-align:right;text-overflow:ellipsis;padding-left:3px;overflow:hidden}.og-units-height{width:15px;text-align:left;padding-left:3px}.og-center-icon{height:12px;width:12px;margin-bottom:-3.5px;margin-right:-7.5px;bottom:50%;right:50%;position:absolute;pointer-events:none}.og-atmosphere.og-options-container .og-slider-label{width:300px;overflow:hidden;height:20px}.og-atmosphere.og-options-container .og-slider input{width:87px}.og-timeline-control_button{width:25px;height:20px;margin-left:3px;margin-right:3px;background:var(--grey7);border-radius:1px}.og-timeline-control_button.og-button__active{background:var(--grey3)}.og-timeline{width:100%;height:100%;background:#2d2d2d;position:relative;left:0;bottom:0;overflow:hidden}.og-timeline-frame{position:relative;width:calc(100% - 20px);margin:0 0 0 10px;height:30px}.og-timeline-scale{overflow:hidden;width:100%;height:100%;touch-action:none}.og-timeline-current{position:absolute;left:0;width:11px;height:100%;margin-left:-5px;cursor:pointer;margin-top:-7px;touch-action:none}.og-timeline-current-spin{margin:0 auto;width:1px;height:100%;background-color:#ff3434;pointer-events:none}.og-timeline-current-arrow{width:0;height:0;border-left:7px solid transparent;border-right:7px solid transparent;border-top:7px solid #ff3434;margin-left:-6px}.og-timeline-bottom{width:100%;display:flex;position:relative;justify-content:center;margin-top:3px}.og-timeline-controls{position:relative;border-radius:10px;display:flex;flex-direction:row;justify-content:center;align-items:center;padding:8px}.og-timeline-unselectable{-moz-user-select:none;-khtml-user-select:none;-webkit-user-select:none;-ms-user-select:none;user-select:none}.og-timeline-top{width:100%;display:block;height:15px}.og-slider{display:flex;flex-direction:row;gap:5px;margin:5px}.og-slider .og-slider-label{width:100%;height:100%;color:var(--grey6);font-family:Segoe UI,Frutiger,Frutiger Linotype,Dejavu Sans,Helvetica Neue,Arial,sans-serif;font-size:14px;display:flex;align-items:center;text-align:left;margin-right:5px}.og-slider .og-slider-panel{position:relative;width:100%;height:20px;background-color:var(--grey1);z-index:1;border-radius:2px}.og-slider .og-slider-panel .og-slider-progress{position:absolute;height:100%;background-color:var(--grey7);pointer-events:none;border-top-left-radius:2px;border-bottom-left-radius:2px}.og-slider .og-slider-panel .og-slider-pointer{position:absolute;left:0;top:0;height:100%;width:3px;background-color:var(--grey3);pointer-events:none}.og-slider input{position:relative;height:100%;width:100%;background:var(--grey5);border:1px solid var(--grey1);z-index:0;color:var(--grey3);padding-left:5px;width:60px;border-radius:2px}.og-slider input:focus-visible{outline:none}.og-slider input::-webkit-outer-spin-button,.og-slider input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}.og-slider input[type=number]{-moz-appearance:textfield}.og-checkbox,.og-input{display:flex;flex-direction:row;margin:5px}.og-checkbox .og-input-label,.og-input .og-input-label{width:100%;height:100%;color:var(--grey6);font-family:Segoe UI,Frutiger,Frutiger Linotype,Dejavu Sans,Helvetica Neue,Arial,sans-serif;font-size:14px;align-items:center;text-align:left;margin-right:5px}.og-checkbox input,.og-input input{position:relative;height:100%;width:100%;background:var(--grey5);border:1px solid var(--grey1);z-index:0;color:var(--grey3);padding-left:5px;border-radius:5px}.og-checkbox input:focus-visible,.og-input input:focus-visible{outline:none}.og-checkbox input[type=checkbox]{width:14px;height:14px;-moz-appearance:none;appearance:none;-webkit-appearance:none;display:flex;align-content:center;justify-content:center;border:1px solid var(--grey1);border-radius:3px;background:var(--grey8);cursor:pointer;position:relative;padding:0}.og-checkbox input[type=checkbox]:before{content:"";position:absolute;width:3px;height:6px;border:solid black;border-width:0 2px 2px 0;transform:rotate(45deg);top:2px;left:3.5px;opacity:0;transition:opacity .2s ease-in-out}.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{position:relative;width:100%;height:100%;display:flex;flex-direction:column;align-content:center;align-items:center}.og-elevationprofile__menu{position:relative;width:100%;height:43px}.og-elevationprofile__graph{position:relative;width:100%;height:100%}.og-elevationprofile-legend{font-family:Segoe UI,Tahoma,Geneva,Verdana,sans-serif;font-size:12px;color:var(--grey8);position:absolute;top:0;right:0;margin:5px;display:flex;z-index:1}.og-elevationprofile-legend__row{position:relative;padding:5px;width:70px}.og-elevationprofile-square{position:relative;float:left;width:6px;height:6px;margin:5px}.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{display:inline-block;position:relative;float:left;padding-left:5px}.og-elevationprofile-value{width:30px;display:inline-block;position:relative;float:left;text-align:right;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.og-elevationprofile-buttons{display:inline-block;position:absolute;top:0;left:0}.og-elevationprofile-button{width:25px;height:25px;float:left;margin:3px}.og-elevationprofile-list{position:relative;width:100%;height:100%;display:flex;flex-direction:column}.og-elevationprofile-list textarea{position:relative;width:100%;height:100%;resize:none;background:var(--grey8);padding:5px}.og-elevationprofile-list-buttons{position:relative;height:60px;display:flex;flex-direction:row;align-items:center;justify-content:right}.og-elevationprofile-list-apply{padding:4px 10px 7px;float:right;background-color:var(--grey2);margin-right:15px}.og-elevationprofile_pointer{position:absolute;left:0;top:0;height:100%}.og-elevationprofile-line{position:absolute;background-color:#fff;width:3px;height:30px;margin-left:-1.5px}.og-elevationprofile-label{position:absolute;top:0;left:0;color:#fff}.og-elevationprofile-button__location svg{width:17px;height:17px}.og-elevationprofile-loading{opacity:.3;background-color:#000;position:absolute;width:100%;height:100%;z-index:2;display:flex;flex-direction:row;justify-content:center;align-items:center}.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{position:absolute;width:11px;height:40px;top:30px;animation:ldio-p0v5a1f6oz .9345794392523364s cubic-bezier(.5,0,.5,1) infinite}.ldio-p0v5a1f6oz div:nth-child(1){transform:translate(14.5px);background:#353535;animation-delay:-.5607476635514018s}.ldio-p0v5a1f6oz div:nth-child(2){transform:translate(34.5px);background:#666;animation-delay:-.37383177570093457s}.ldio-p0v5a1f6oz div:nth-child(3){transform:translate(54.5px);background:#9b9b9b;animation-delay:-.18691588785046728s}.ldio-p0v5a1f6oz div:nth-child(4){transform:translate(74.5px);background:#d4d4d4;animation-delay:-.9345794392523364s}.loadingio-spinner-bars-r354qqyl5v{width:88px;height:88px;display:inline-block;overflow:hidden;background:none}.ldio-p0v5a1f6oz{width:100%;height:100%;position:relative;transform:translateZ(0) scale(.88);backface-visibility:hidden;transform-origin:0 0}.ldio-p0v5a1f6oz div{box-sizing:content-box}.og-editor-ground_button{width:fit-content;background:var(--grey1);padding:4px 6px 8px;margin-left:5px;margin-top:15px}.og-editor_toolbar{padding-bottom:8px;display:flex}.og-editor_toolbar-button{width:25px;height:25px;float:left;margin:3px}.og-object3d-manager .og-ddialog-container{display:flex;flex-direction:column}.og-object3d-collection{width:100%;height:100%}.og-object3d-collection__item{width:75px;height:75px;position:relative;background-color:#7a7a7a;cursor:pointer;border-radius:5px;margin:3px;border:2px solid rgba(0,0,0,0)}.og-object3d-collection__item.active{border:solid #00e0be 2px}.og-object3d-collection__item_name{width:100%;height:20px;position:absolute;left:0;bottom:0;background:#3d3d3da3;color:#fff;padding-top:3px;border-bottom-left-radius:5px;border-bottom-right-radius:5px}
|
|
1
|
+
:root{--grey0: rgb(36 36 36);--grey1: #434244;--grey2: #3f3f46;--grey3: #bbbbbb;--grey4: #5e5e5e;--grey5: rgb(50, 50, 50);--grey6: #b6b6b6;--grey7: #707070;--grey8: #e2e2e2;--grey9: #9f9f9f;--blue0: #1700a9ee}.og-map-button{height:40px;width:40px;position:absolute;outline:none;cursor:pointer;z-index:1;background-color:var(--grey5)}.og-control-container{position:absolute;top:12px;z-index:2;display:flex;flex-direction:row;flex-wrap:wrap;align-content:flex-start;gap:8px;width:min(136px,calc(100% - 24px));box-sizing:border-box;pointer-events:none}.og-control-container>*{pointer-events:auto}.og-control-container .og-map-button{position:relative;top:auto!important;right:auto!important;bottom:auto!important;left:auto!important;margin:0;flex:0 0 auto}.og-control-container__top-left{left:10px;justify-content:flex-start}.og-control-container__top-right{right:12px;justify-content:flex-end}.og-control-container__bottom-right{top:auto;bottom:12px;right:12px;width:auto;max-width:calc(100% - 24px);flex-direction:column;align-items:flex-end;justify-content:flex-end}.og-control-container .og-scale-container,.og-control-container .og-coordinates{position:relative;top:auto!important;right:auto!important;bottom:auto!important;left:auto!important;margin:0}.og-control-container__bottom-right .og-scale-container{order:0}.og-control-container__bottom-right .og-coordinates{order:1}.ogCenterIcon{height:12px;width:12px;margin-bottom:-3.5px;margin-right:-7.5px;bottom:50%;right:50%;position:absolute}.ogHandPoiner{cursor:pointer}.defaultText{position:absolute;top:0;left:0;color:#fff}#ogShowFpsControl{color:red}.ogGrabbingPoiner{cursor:grabbing!important}.og-inner{width:100%;height:100%;float:left;position:relative;-webkit-user-select:none;-moz-user-select:none;-khtml-user-select:none;-ms-user-select:none;overflow:hidden}.og-attribution{background:#cecece;text-align:right;bottom:0;left:0;position:absolute;font-size:.7rem;padding:1px 0;line-height:1.375em;font-family:Segoe UI,Frutiger,Frutiger Linotype,Dejavu Sans,Helvetica Neue,Arial,sans-serif;display:flex;flex-direction:row}.og-attribution .og-attribution__layer{margin-left:5px;margin-right:5px;align-items:center;display:inline;text-overflow:ellipsis;overflow:hidden;white-space:nowrap;color:#1f1f1f}.og-attribution img{max-height:1.3em}input{accent-color:var(--blue0);cursor:pointer}.og-menu-bar-vertical{position:absolute;right:12px;top:12px;width:40px;height:40px;background-color:#403b3bd9;border-radius:2px;box-shadow:0 1px 4px #0f0f0f2b;z-index:0}.og-hide{display:none!important}.og-not-visible{visibility:hidden!important}.og-options-container{position:relative;padding:12px;height:calc(100% - 30px);color:#b6b6b6}.og-option{width:100%;position:relative;display:inline-block;flex-direction:row;padding-bottom:7px;text-overflow:ellipsis;align-items:center;justify-content:left}.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{position:absolute;display:flex;flex-direction:column;box-shadow:3px 3px 4px #0f0f0f2b;background-color:var(--grey0);border:1px solid;border-color:var(--grey1);border-radius:4px;overflow:auto}.og-ddialog .og-ddialog-header{width:100%;height:27px;position:relative;padding:0;z-index:1;background-color:var(--grey2);color:#fff;display:flex;flex-direction:row;align-items:center;justify-content:space-between}.og-ddialog .og-ddialog-header .og-ddialog-header__title{color:var(--grey3);padding-left:5px;pointer-events:none;font-family:Segoe UI,Tahoma,Geneva,Verdana,sans-serif;font-size:14px;font-weight:400}.og-ddialog .og-ddialog-header .og-ddialog-header__buttons{display:flex;flex-direction:row;justify-content:flex-end}.og-ddialog .og-ddialog-header .og-ddialog-header__buttons .og-button{border-radius:0}.og-ddialog .og-ddialog-container{overflow:auto;position:relative;width:100%;height:100%;font-family:Segoe UI,Frutiger,Frutiger Linotype,Dejavu Sans,Helvetica Neue,Arial,sans-serif;font-size:14px}.og-ddialog.dragging{-webkit-user-select:none;user-select:none}.og-ddialog .og-ddialog-resize-handle{display:block;position:absolute;right:0;bottom:0;width:20px;height:20px;cursor:nwse-resize;touch-action:none;z-index:2}.og-button{display:flex;align-items:center;align-content:center;padding:2px;flex-direction:row;cursor:default;justify-content:center;color:var(--grey6);border-radius:6px}.og-button .og-button-icon{display:flex;align-items:center;justify-content:center;line-height:0}.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{height:20px;width:20px}.og-button__active{background-color:var(--grey2)}.og-layerSwitcher{position:relative;color:#b6b6b6;width:100%;height:100%;overflow-x:hidden;overflow-y:auto}.og-layerSwitcher__title{position:relative;color:#b6b6b6;font-size:14px;width:100%;padding:5px}.og-layerSwitcher__list{position:relative;width:100%;display:flex;flex-wrap:wrap;align-items:flex-start;padding:2px}.og-layerSwitcher__layerButton{width:70px;height:70px;position:relative;background-color:#7a7a7a;cursor:pointer;border-radius:7px;margin:3px;border:2px solid rgba(0,0,0,0);padding:0;display:flex;flex-direction:column-reverse}.og-layerSwitcher__layerButton.og-layerSwitcher__visible{border:2px solid #56ff64}.og-layerSwitcher__layerButton.og-layerSwitcher__visible img{opacity:1}.og-layerSwitcher__layerButton img{width:100%;height:100%;border-radius:7px;position:absolute;left:0;top:0;opacity:1}.og-layerSwitcher__layerButton img:hover{opacity:1}.og-layerSwitcher__name{color:var(--grey8);font-size:12px;overflow:hidden;text-overflow:ellipsis;padding:3px;background-color:#00000080;bottom:0;border-bottom-left-radius:7px;border-bottom-right-radius:7px;z-index:10}.og-entityTree{width:100%}.og-entityTree__node{width:100%;box-sizing:border-box}.og-entityTree__row{display:flex;align-items:center;min-height:22px}.og-entityTree__toggleBtn{width:20px;height:20px;border:none;background:transparent;color:var(--grey3);cursor:pointer;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{flex:1;min-width:0;border:none;background:transparent;color:var(--grey6);display:flex;align-items:center;justify-content:space-between;gap:8px;text-align:left;cursor:pointer;border-radius:4px;padding:3px 6px 3px 4px;font-size:12px}.og-entityTree__entityBtn:hover,.og-entityTree__entityBtn:focus-visible{background-color:var(--grey1)}.og-entityTree__name{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.og-entityTree__type{color:var(--grey9);font-size:11px;white-space:nowrap}.og-entityTree__children_hidden{display:none}.og-entityTree__children{padding-left:17px}.og-entityTreeControl{position:relative;width:100%;height:100%;overflow-x:hidden;overflow-y:auto;color:var(--grey4)}.og-entityTreeControl__tree{width:100%;padding:4px;box-sizing:border-box}.og-entityTreeControl__empty{padding:10px 8px;color:var(--grey3);font-size:13px}.displayNone{display:none}.displayBlock{display:block}.og-drawing-default_button .og-button-icon{transform:scale(.73)}.ogConsole{position:absolute;top:0;left:0;width:100%;max-height:70%;overflow:auto;font-size:14px;font-family:Arial;background-color:#8282827d;color:#fff;z-index:100000000}.ogConsole-text{padding:7px;overflow:hidden}.ogConsole-error{color:red}.ogConsole-warning{color:#ff0}.ogViewExtentBtn{margin-left:12px;height:24px;width:24px;scale:70%;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==) center center no-repeat}.ogViewExtentBtn:hover{border-radius:10px;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)}.og-debuginfo_controls{padding-bottom:8px;display:flex}.og-debuginfo_controls-button{width:25px;height:25px;float:left;margin:3px}.og-debug-info{color:#fff;font-size:12px;padding:10px}.og-debug-info .og-watch-line{width:100%;padding-bottom:5px;display:flex;flex-direction:row}.og-watch-line .og-watch-label{color:#cecece;width:200px}.og-watch-line .og-watch-value{margin-left:15px}.og-popup{position:absolute;text-align:center;bottom:-2px}.og-popup-content-wrapper,.og-popup-tip{background:#fff;color:#333;box-shadow:0 3px 14px #0006}.og-popup-content-wrapper{background:#fff;color:#333;box-shadow:0 3px 14px #0006;padding:1px;text-align:left;border-radius:8px;min-width:30px;min-height:17px}.og-popup-content{margin:20px 5px 5px;line-height:1.4}.og-popup-tip-container{width:40px;height:20px;position:absolute;left:50%;margin-left:-20px;overflow:hidden;pointer-events:none;bottom:-19px}.og-popup-tip{width:17px;height:17px;padding:1px;margin:-10px auto 0;-webkit-transform:rotate(45deg);-moz-transform:rotate(45deg);-ms-transform:rotate(45deg);transform:rotate(45deg)}.og-popup-toolbar{position:absolute;top:3px;right:2px;display:inline-block}.og-popup-btn{width:15px;height:15px;cursor:pointer;float:right}.og-popup-btn:hover{color:#2e9be7}.og-popup-title{position:absolute;left:5px;top:3px;font-size:14px}.og-scale-container{position:absolute;right:320px;bottom:30px}.og-scale-label{position:relative;color:#fff;font-family:Segoe UI,Frutiger,Frutiger Linotype,Dejavu Sans,Helvetica Neue,Arial,sans-serif;font-size:12px;text-align:center}.og-scale-ruler{position:relative;height:7px;border-bottom:2px solid white;border-left:1px solid white;border-right:1px solid white}.og-compass-button .og-button-icon{display:flex;align-items:center;justify-content:center;transform-origin:center center}.og-compass-button .og-button-icon svg{width:48px!important;height:48px!important;display:block}.og-orthoswitcher_button .og-button-icon svg{width:45px!important;height:45px!important;display:block;transform:translateY(3px)}.og-suncontrol-button{width:25px;height:25px;float:left;margin:3px}.og-lighing{position:relative;padding:12px;height:calc(100% - 30px);color:#b6b6b6}.og-lighing .og-layers{display:flex;flex-direction:row;align-items:center}.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{font-family:monospace;padding:2px;margin-left:21px;width:200px}.og-coordinates{position:absolute;bottom:25px;right:12px;text-align:right;overflow:hidden;font-family:monospace;font-size:1em;cursor:pointer;float:left;background-color:var(--grey5);color:var(--grey8);padding:5px;border-radius:4px}.og-coordinates div{float:left}.og-coordinates .og-coordinates-copy-btn{float:left;margin-right:6px;padding:0;border:0;background:transparent;color:var(--grey8);opacity:.8;cursor:pointer}.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{width:90px;padding-right:3px;text-align:left;text-overflow:unset;overflow:hidden}.og-height{width:50px;text-align:right;text-overflow:ellipsis;padding-left:3px;overflow:hidden}.og-units-height{width:15px;text-align:left;padding-left:3px}.og-center-icon{height:12px;width:12px;margin-bottom:-3.5px;margin-right:-7.5px;bottom:50%;right:50%;position:absolute;pointer-events:none}.og-atmosphere.og-options-container .og-slider-label{width:300px;overflow:hidden;height:20px}.og-atmosphere.og-options-container .og-slider input{width:87px}.og-timeline-control_button{width:25px;height:20px;margin-left:3px;margin-right:3px;background:var(--grey7);border-radius:1px}.og-timeline-control_button.og-button__active{background:var(--grey3)}.og-timeline{width:100%;height:100%;background:#2d2d2d;position:relative;left:0;bottom:0;overflow:hidden}.og-timeline-frame{position:relative;width:calc(100% - 20px);margin:0 0 0 10px;height:30px}.og-timeline-scale{overflow:hidden;width:100%;height:100%;touch-action:none}.og-timeline-current{position:absolute;left:0;width:11px;height:100%;margin-left:-5px;cursor:pointer;margin-top:-7px;touch-action:none}.og-timeline-current-spin{margin:0 auto;width:1px;height:100%;background-color:#ff3434;pointer-events:none}.og-timeline-current-arrow{width:0;height:0;border-left:7px solid transparent;border-right:7px solid transparent;border-top:7px solid #ff3434;margin-left:-6px}.og-timeline-bottom{width:100%;display:flex;position:relative;justify-content:center;margin-top:3px}.og-timeline-controls{position:relative;border-radius:10px;display:flex;flex-direction:row;justify-content:center;align-items:center;padding:8px}.og-timeline-unselectable{-moz-user-select:none;-khtml-user-select:none;-webkit-user-select:none;-ms-user-select:none;user-select:none}.og-timeline-top{width:100%;display:block;height:15px}.og-slider{display:flex;flex-direction:row;gap:5px;margin:5px}.og-slider .og-slider-label{width:100%;height:100%;color:var(--grey6);font-family:Segoe UI,Frutiger,Frutiger Linotype,Dejavu Sans,Helvetica Neue,Arial,sans-serif;font-size:14px;display:flex;align-items:center;text-align:left;margin-right:5px}.og-slider .og-slider-panel{position:relative;width:100%;height:20px;background-color:var(--grey1);z-index:1;border-radius:2px}.og-slider .og-slider-panel .og-slider-progress{position:absolute;height:100%;background-color:var(--grey7);pointer-events:none;border-top-left-radius:2px;border-bottom-left-radius:2px}.og-slider .og-slider-panel .og-slider-pointer{position:absolute;left:0;top:0;height:100%;width:3px;background-color:var(--grey3);pointer-events:none}.og-slider input{position:relative;height:100%;width:100%;background:var(--grey5);border:1px solid var(--grey1);z-index:0;color:var(--grey3);padding-left:5px;width:60px;border-radius:2px}.og-slider input:focus-visible{outline:none}.og-slider input::-webkit-outer-spin-button,.og-slider input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}.og-slider input[type=number]{-moz-appearance:textfield}.og-checkbox,.og-input{display:flex;flex-direction:row;margin:5px}.og-checkbox .og-input-label,.og-input .og-input-label{width:100%;height:100%;color:var(--grey6);font-family:Segoe UI,Frutiger,Frutiger Linotype,Dejavu Sans,Helvetica Neue,Arial,sans-serif;font-size:14px;align-items:center;text-align:left;margin-right:5px}.og-checkbox input,.og-input input{position:relative;height:100%;width:100%;background:var(--grey5);border:1px solid var(--grey1);z-index:0;color:var(--grey3);padding-left:5px;border-radius:5px}.og-checkbox input:focus-visible,.og-input input:focus-visible{outline:none}.og-checkbox input[type=checkbox]{width:14px;height:14px;-moz-appearance:none;appearance:none;-webkit-appearance:none;display:flex;align-content:center;justify-content:center;border:1px solid var(--grey1);border-radius:3px;background:var(--grey8);cursor:pointer;position:relative;padding:0}.og-checkbox input[type=checkbox]:before{content:"";position:absolute;width:3px;height:6px;border:solid black;border-width:0 2px 2px 0;transform:rotate(45deg);top:2px;left:3.5px;opacity:0;transition:opacity .2s ease-in-out}.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{position:relative;width:100%;height:100%;display:flex;flex-direction:column;align-content:center;align-items:center}.og-elevationprofile__menu{position:relative;width:100%;height:43px}.og-elevationprofile__graph{position:relative;width:100%;height:100%}.og-elevationprofile-legend{font-family:Segoe UI,Tahoma,Geneva,Verdana,sans-serif;font-size:12px;color:var(--grey8);position:absolute;top:0;right:0;margin:5px;display:flex;z-index:1}.og-elevationprofile-legend__row{position:relative;padding:5px;width:70px}.og-elevationprofile-square{position:relative;float:left;width:6px;height:6px;margin:5px}.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{display:inline-block;position:relative;float:left;padding-left:5px}.og-elevationprofile-value{width:30px;display:inline-block;position:relative;float:left;text-align:right;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.og-elevationprofile-buttons{display:inline-block;position:absolute;top:0;left:0}.og-elevationprofile-button{width:25px;height:25px;float:left;margin:3px}.og-elevationprofile-list{position:relative;width:100%;height:100%;display:flex;flex-direction:column}.og-elevationprofile-list textarea{position:relative;width:100%;height:100%;resize:none;background:var(--grey8);padding:5px}.og-elevationprofile-list-buttons{position:relative;height:60px;display:flex;flex-direction:row;align-items:center;justify-content:right}.og-elevationprofile-list-apply{padding:4px 10px 7px;float:right;background-color:var(--grey2);margin-right:15px}.og-elevationprofile_pointer{position:absolute;left:0;top:0;height:100%}.og-elevationprofile-line{position:absolute;background-color:#fff;width:3px;height:30px;margin-left:-1.5px}.og-elevationprofile-label{position:absolute;top:0;left:0;color:#fff}.og-elevationprofile-button__location svg{width:17px;height:17px}.og-elevationprofile-loading{opacity:.3;background-color:#000;position:absolute;width:100%;height:100%;z-index:2;display:flex;flex-direction:row;justify-content:center;align-items:center}.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{position:absolute;width:11px;height:40px;top:30px;animation:ldio-p0v5a1f6oz .9345794392523364s cubic-bezier(.5,0,.5,1) infinite}.ldio-p0v5a1f6oz div:nth-child(1){transform:translate(14.5px);background:#353535;animation-delay:-.5607476635514018s}.ldio-p0v5a1f6oz div:nth-child(2){transform:translate(34.5px);background:#666;animation-delay:-.37383177570093457s}.ldio-p0v5a1f6oz div:nth-child(3){transform:translate(54.5px);background:#9b9b9b;animation-delay:-.18691588785046728s}.ldio-p0v5a1f6oz div:nth-child(4){transform:translate(74.5px);background:#d4d4d4;animation-delay:-.9345794392523364s}.loadingio-spinner-bars-r354qqyl5v{width:88px;height:88px;display:inline-block;overflow:hidden;background:none}.ldio-p0v5a1f6oz{width:100%;height:100%;position:relative;transform:translateZ(0) scale(.88);backface-visibility:hidden;transform-origin:0 0}.ldio-p0v5a1f6oz div{box-sizing:content-box}.og-editor-ground_button{width:fit-content;background:var(--grey1);padding:4px 6px 8px;margin-left:5px;margin-top:15px}.og-editor_toolbar{padding-bottom:8px;display:flex}.og-editor_toolbar-button{width:25px;height:25px;float:left;margin:3px}.og-object3d-manager .og-ddialog-container{display:flex;flex-direction:column}.og-object3d-collection{width:100%;height:100%}.og-object3d-collection__item{width:75px;height:75px;position:relative;background-color:#7a7a7a;cursor:pointer;border-radius:5px;margin:3px;border:2px solid rgba(0,0,0,0)}.og-object3d-collection__item.active{border:solid #00e0be 2px}.og-object3d-collection__item_name{width:100%;height:20px;position:absolute;left:0;bottom:0;background:#3d3d3da3;color:#fff;padding-top:3px;border-bottom-left-radius:5px;border-bottom-right-radius:5px}
|