@openglobus/og 1.0.0-rc16 → 1.0.0-rc19
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 +7 -0
- package/lib/camera/PlanetCamera.d.ts +7 -0
- package/lib/control/depthCamera/DepthCamera.d.ts +9 -0
- package/lib/control/timeline/TimelineControl.d.ts +58 -1
- package/lib/control/timeline/TimelineModel.d.ts +36 -1
- package/lib/control/timeline/TimelineView.d.ts +6 -0
- package/lib/entity/Entity.d.ts +18 -0
- package/lib/entity/EntityCollection.d.ts +23 -13
- package/lib/entity/billboard/BaseBillboardHandler.d.ts +10 -0
- package/lib/index.d.ts +1 -1
- package/lib/layer/Vector.d.ts +15 -11
- package/lib/math.d.ts +8 -0
- package/lib/og.css +1 -1
- package/lib/og.es.js +1 -1
- package/lib/og.es.js.map +1 -1
- package/lib/renderer/projectors/Projector.d.ts +2 -1
- package/lib/ui/Button.d.ts +1 -0
- package/lib/ui/Checkbox.d.ts +1 -0
- package/lib/ui/Color.d.ts +1 -0
- package/lib/ui/Dialog.d.ts +12 -1
- package/lib/ui/Input.d.ts +1 -0
- package/lib/ui/Slider.d.ts +1 -0
- package/lib/utils/shared.d.ts +10 -0
- package/package.json +1 -1
package/lib/camera/Camera.d.ts
CHANGED
|
@@ -44,6 +44,7 @@ type CameraFrame = {
|
|
|
44
44
|
n: Vec3;
|
|
45
45
|
u: Vec3;
|
|
46
46
|
v: Vec3;
|
|
47
|
+
focusDistance?: number;
|
|
47
48
|
};
|
|
48
49
|
type CameraFlight = {
|
|
49
50
|
fly: (progress: number) => CameraFrame;
|
|
@@ -227,6 +228,12 @@ declare class Camera {
|
|
|
227
228
|
* @param {number} dist - Focus distance.
|
|
228
229
|
*/
|
|
229
230
|
set focusDistance(dist: number);
|
|
231
|
+
/**
|
|
232
|
+
* Keeps the orthographic scale on whatever the camera has just been aimed at.
|
|
233
|
+
* @protected
|
|
234
|
+
* @param {number} [distance] - Distance from the eye to the point in view.
|
|
235
|
+
*/
|
|
236
|
+
protected _setOrthoFocus(distance?: number): void;
|
|
230
237
|
/**
|
|
231
238
|
* Returns camera identifier.
|
|
232
239
|
* @public
|
|
@@ -163,6 +163,13 @@ declare class PlanetCamera extends Camera {
|
|
|
163
163
|
* @param {number} [height]
|
|
164
164
|
*/
|
|
165
165
|
viewExtent(extent: Extent, height?: number): void;
|
|
166
|
+
/**
|
|
167
|
+
* Places the camera over the extent center at the given ground height.
|
|
168
|
+
* @protected
|
|
169
|
+
* @param {Extent} extent - Extent to fit.
|
|
170
|
+
* @param {number} height - Ground height under the extent center.
|
|
171
|
+
*/
|
|
172
|
+
protected _viewExtentHeight(extent: Extent, height: number): void;
|
|
166
173
|
/**
|
|
167
174
|
* Flies to the current extent.
|
|
168
175
|
* @public
|
|
@@ -3,6 +3,7 @@ import { PlanetCamera } from "../../camera/PlanetCamera";
|
|
|
3
3
|
import { Entity } from "../../entity/Entity";
|
|
4
4
|
import { LonLat } from "../../LonLat";
|
|
5
5
|
import { Vec3 } from "../../math/Vec3";
|
|
6
|
+
import { Vec4, type NumberArray4 } from "../../math/Vec4";
|
|
6
7
|
import { QuadTreeStrategy } from "../../quadTree";
|
|
7
8
|
import type { Renderer } from "../../renderer/Renderer";
|
|
8
9
|
import type { Planet } from "../../scene/Planet";
|
|
@@ -24,6 +25,8 @@ export interface IDepthCameraParams {
|
|
|
24
25
|
horizontalViewAngle?: number;
|
|
25
26
|
showFrustum?: boolean;
|
|
26
27
|
showFootprint?: boolean;
|
|
28
|
+
frustumLength?: number;
|
|
29
|
+
frustumColor?: Vec4 | NumberArray4 | string;
|
|
27
30
|
isOrthographic?: boolean;
|
|
28
31
|
focusDistance?: number;
|
|
29
32
|
enableSegmentSkirts?: boolean;
|
|
@@ -64,6 +67,8 @@ export declare class DepthCamera {
|
|
|
64
67
|
protected _isOrthographic: boolean;
|
|
65
68
|
protected _focusDistance: number;
|
|
66
69
|
protected _lastPlanetHeightFactor: number;
|
|
70
|
+
protected _frustumLength: number;
|
|
71
|
+
protected _frustumColor: Vec4 | NumberArray4 | string;
|
|
67
72
|
protected _cameraFrustumEntity: Entity | null;
|
|
68
73
|
protected _cameraFootprintEntity: Entity | null;
|
|
69
74
|
protected _cameraFootprintSegmentPointCounts: number[];
|
|
@@ -88,6 +93,10 @@ export declare class DepthCamera {
|
|
|
88
93
|
set focusDistance(focusDistance: number);
|
|
89
94
|
get cameraFootprintEntity(): Entity | null;
|
|
90
95
|
get cameraFrustumEntity(): Entity | null;
|
|
96
|
+
get frustumLength(): number;
|
|
97
|
+
set frustumLength(length: number);
|
|
98
|
+
get frustumColor(): Vec4 | NumberArray4 | string;
|
|
99
|
+
set frustumColor(color: Vec4 | NumberArray4 | string);
|
|
91
100
|
get frustumScale(): Vec3;
|
|
92
101
|
init(planet: Planet, renderer: Renderer): void;
|
|
93
102
|
destroy(): void;
|
|
@@ -2,7 +2,7 @@ import { Dialog } from "../../ui/Dialog";
|
|
|
2
2
|
import { ToggleButton } from "../../ui/ToggleButton";
|
|
3
3
|
import { Control, type IControlParams } from "../Control";
|
|
4
4
|
import { TimelineView } from "./TimelineView";
|
|
5
|
-
import type { TimelineModel } from "./TimelineModel";
|
|
5
|
+
import type { ITimelineSpan, ITimelineSpanParams, TimelineModel } from "./TimelineModel";
|
|
6
6
|
import { type EventsHandler } from "../../Events";
|
|
7
7
|
type TimelineControlEventsList = [
|
|
8
8
|
"visibility",
|
|
@@ -37,6 +37,63 @@ declare class TimelineControl extends Control {
|
|
|
37
37
|
* @public
|
|
38
38
|
*/
|
|
39
39
|
get model(): TimelineModel;
|
|
40
|
+
/**
|
|
41
|
+
* Adds a colored time interval drawn on the scale, e.g. one per telemetry track.
|
|
42
|
+
* Spans that overlap in time are placed on separate rows automatically, and the
|
|
43
|
+
* rows share the scale height between them.
|
|
44
|
+
* @public
|
|
45
|
+
* @param {ITimelineSpanParams} params - Span start, end and color. An omitted id is generated.
|
|
46
|
+
* @returns {ITimelineSpan} - Stored span, with its id and assigned row.
|
|
47
|
+
*/
|
|
48
|
+
addSpan(params: ITimelineSpanParams): ITimelineSpan;
|
|
49
|
+
/**
|
|
50
|
+
* Adds several spans at once, keeping the ones already on the scale.
|
|
51
|
+
* @public
|
|
52
|
+
* @param {ITimelineSpanParams[]} params - Spans to add.
|
|
53
|
+
* @returns {ITimelineSpan[]} - Stored spans, in the order they were given.
|
|
54
|
+
*/
|
|
55
|
+
addSpans(params: ITimelineSpanParams[]): ITimelineSpan[];
|
|
56
|
+
/**
|
|
57
|
+
* Replaces every span on the scale, e.g. to redraw the whole set after a source
|
|
58
|
+
* was added or removed.
|
|
59
|
+
* @public
|
|
60
|
+
* @param {ITimelineSpanParams[]} params - Spans the scale is left with.
|
|
61
|
+
* @returns {ITimelineSpan[]} - Stored spans, in the order they were given.
|
|
62
|
+
*/
|
|
63
|
+
setSpans(params: ITimelineSpanParams[]): ITimelineSpan[];
|
|
64
|
+
/**
|
|
65
|
+
* Replaces the time range, color and payload of a span, and reassigns the rows when
|
|
66
|
+
* its time range moved.
|
|
67
|
+
* @public
|
|
68
|
+
* @param {string} id - Span id.
|
|
69
|
+
* @param {ITimelineSpanParams} params - New span fields. Every field is replaced, the id is kept.
|
|
70
|
+
* @returns {ITimelineSpan | undefined} - Updated span, or undefined when the id is unknown.
|
|
71
|
+
*/
|
|
72
|
+
updateSpan(id: string, params: ITimelineSpanParams): ITimelineSpan | undefined;
|
|
73
|
+
/**
|
|
74
|
+
* Removes a single span from the scale. An unknown id is ignored.
|
|
75
|
+
* @public
|
|
76
|
+
* @param {string} id - Span id.
|
|
77
|
+
*/
|
|
78
|
+
removeSpan(id: string): void;
|
|
79
|
+
/**
|
|
80
|
+
* Removes every span from the scale.
|
|
81
|
+
* @public
|
|
82
|
+
*/
|
|
83
|
+
clearSpans(): void;
|
|
84
|
+
/**
|
|
85
|
+
* Returns the spans currently on the scale.
|
|
86
|
+
* @public
|
|
87
|
+
* @returns {ITimelineSpan[]} - Stored spans, each carrying its assigned row.
|
|
88
|
+
*/
|
|
89
|
+
getSpans(): ITimelineSpan[];
|
|
90
|
+
/**
|
|
91
|
+
* Returns a single span by its id.
|
|
92
|
+
* @public
|
|
93
|
+
* @param {string} id - Span id.
|
|
94
|
+
* @returns {ITimelineSpan | undefined} - Stored span, or undefined when the id is unknown.
|
|
95
|
+
*/
|
|
96
|
+
getSpan(id: string): ITimelineSpan | undefined;
|
|
40
97
|
oninit(): void;
|
|
41
98
|
}
|
|
42
99
|
export { TimelineControl };
|
|
@@ -1,5 +1,22 @@
|
|
|
1
1
|
import { type EventsHandler } from "../../Events";
|
|
2
|
-
type TimelineEventsList = ["change", "current"];
|
|
2
|
+
type TimelineEventsList = ["change", "current", "play", "stop", "spanschange"];
|
|
3
|
+
/** A colored time interval shown on the timeline scale. */
|
|
4
|
+
export interface ITimelineSpanParams {
|
|
5
|
+
id?: string;
|
|
6
|
+
start: Date;
|
|
7
|
+
end: Date;
|
|
8
|
+
color?: string;
|
|
9
|
+
data?: unknown;
|
|
10
|
+
}
|
|
11
|
+
export interface ITimelineSpan {
|
|
12
|
+
id: string;
|
|
13
|
+
start: Date;
|
|
14
|
+
end: Date;
|
|
15
|
+
color: string;
|
|
16
|
+
data?: unknown;
|
|
17
|
+
/** Row the span is drawn in, assigned so that overlapping spans never share one. */
|
|
18
|
+
lane: number;
|
|
19
|
+
}
|
|
3
20
|
interface ITimelineParams {
|
|
4
21
|
current?: Date;
|
|
5
22
|
rangeStart?: Date;
|
|
@@ -9,6 +26,7 @@ interface ITimelineParams {
|
|
|
9
26
|
multiplier?: number;
|
|
10
27
|
}
|
|
11
28
|
declare class TimelineModel {
|
|
29
|
+
static __spanCounter__: number;
|
|
12
30
|
events: EventsHandler<TimelineEventsList>;
|
|
13
31
|
protected _current: Date;
|
|
14
32
|
protected _rangeStart: Date;
|
|
@@ -18,9 +36,26 @@ declare class TimelineModel {
|
|
|
18
36
|
protected _maxDate: Date | null;
|
|
19
37
|
protected _requestAnimationFrameId: number;
|
|
20
38
|
protected _prevNow: number;
|
|
39
|
+
protected _spans: ITimelineSpan[];
|
|
40
|
+
protected _laneCount: number;
|
|
21
41
|
multiplier: number;
|
|
22
42
|
dt: number;
|
|
23
43
|
constructor(options?: ITimelineParams);
|
|
44
|
+
addSpan(params: ITimelineSpanParams): ITimelineSpan;
|
|
45
|
+
addSpans(params: ITimelineSpanParams[]): ITimelineSpan[];
|
|
46
|
+
setSpans(params: ITimelineSpanParams[]): ITimelineSpan[];
|
|
47
|
+
updateSpan(id: string, params: ITimelineSpanParams): ITimelineSpan | undefined;
|
|
48
|
+
removeSpan(id: string): void;
|
|
49
|
+
clearSpans(): void;
|
|
50
|
+
getSpans(): ITimelineSpan[];
|
|
51
|
+
getSpan(id: string): ITimelineSpan | undefined;
|
|
52
|
+
/**
|
|
53
|
+
* Number of rows the current spans need, at least one when
|
|
54
|
+
* there are any.
|
|
55
|
+
*/
|
|
56
|
+
get laneCount(): number;
|
|
57
|
+
protected _onSpansChange(): void;
|
|
58
|
+
protected _assignLanes(): void;
|
|
24
59
|
play(): void;
|
|
25
60
|
stop(): void;
|
|
26
61
|
stopped(): boolean;
|
|
@@ -45,6 +45,9 @@ declare class TimelineView extends View<TimelineModel> {
|
|
|
45
45
|
protected _currentEl: HTMLElement | null;
|
|
46
46
|
protected _canvasEl: HTMLCanvasElement;
|
|
47
47
|
protected _ctx: CanvasRenderingContext2D;
|
|
48
|
+
protected _spansCanvasEl: HTMLCanvasElement;
|
|
49
|
+
protected _spansCtx: CanvasRenderingContext2D;
|
|
50
|
+
protected _appliedFillStyle: string;
|
|
48
51
|
protected _isMouseOver: boolean;
|
|
49
52
|
protected _isDragging: boolean;
|
|
50
53
|
protected _isCurrentDragging: boolean;
|
|
@@ -86,6 +89,7 @@ declare class TimelineView extends View<TimelineModel> {
|
|
|
86
89
|
get localTime(): boolean;
|
|
87
90
|
set localTime(localTime: boolean);
|
|
88
91
|
setVisibility(visibility: boolean): void;
|
|
92
|
+
protected _syncPlayButtons: () => void;
|
|
89
93
|
reset(): void;
|
|
90
94
|
play(): void;
|
|
91
95
|
pause(): void;
|
|
@@ -129,6 +133,8 @@ declare class TimelineView extends View<TimelineModel> {
|
|
|
129
133
|
protected _clearEvents(): void;
|
|
130
134
|
remove(): void;
|
|
131
135
|
protected _clearCanvas(): void;
|
|
136
|
+
protected _applyScaleBackground(): void;
|
|
137
|
+
protected _drawSpans: () => void;
|
|
132
138
|
protected _drawCurrent(): void;
|
|
133
139
|
draw(): void;
|
|
134
140
|
}
|
package/lib/entity/Entity.d.ts
CHANGED
|
@@ -152,6 +152,12 @@ declare class Entity {
|
|
|
152
152
|
protected _rootCartesian: Vec3;
|
|
153
153
|
protected _localPosition: Vec3;
|
|
154
154
|
protected _absoluteLocalPosition: Vec3;
|
|
155
|
+
/**
|
|
156
|
+
* Absolute cartesian position of the entity itself, i.e. `_rootCartesian + _absoluteLocalPosition`.
|
|
157
|
+
* @protected
|
|
158
|
+
* @type {Vec3}
|
|
159
|
+
*/
|
|
160
|
+
protected _absoluteCartesian: Vec3;
|
|
155
161
|
/**
|
|
156
162
|
* Geodetic entity coordinates.
|
|
157
163
|
* @public
|
|
@@ -265,6 +271,7 @@ declare class Entity {
|
|
|
265
271
|
protected _absoluteScale: Vec3;
|
|
266
272
|
protected _qFrame: Quat;
|
|
267
273
|
protected _qRot: Quat;
|
|
274
|
+
protected _directQRot: Quat;
|
|
268
275
|
_absoluteQRot: Quat;
|
|
269
276
|
protected _useDirectQuaternion: boolean;
|
|
270
277
|
protected _opacity: number | null;
|
|
@@ -377,6 +384,7 @@ declare class Entity {
|
|
|
377
384
|
* @param {Vec3} scale - Scale vector.
|
|
378
385
|
*/
|
|
379
386
|
setScale3v(scale: Vec3): void;
|
|
387
|
+
protected _propagateGlobalScale(scale: Vec3): void;
|
|
380
388
|
/**
|
|
381
389
|
* Sets uniform local scale.
|
|
382
390
|
* @public
|
|
@@ -441,6 +449,14 @@ declare class Entity {
|
|
|
441
449
|
* @param {number} val - The new roll angle in radians.
|
|
442
450
|
*/
|
|
443
451
|
setRoll(val: number): void;
|
|
452
|
+
/**
|
|
453
|
+
* Sets pitch, yaw and roll at once.
|
|
454
|
+
* @public
|
|
455
|
+
* @param {number} pitch - The new pitch angle in radians.
|
|
456
|
+
* @param {number} yaw - The new yaw angle in radians.
|
|
457
|
+
* @param {number} roll - The new roll angle in radians.
|
|
458
|
+
*/
|
|
459
|
+
setPitchYawRoll(pitch: number, yaw: number, roll: number): void;
|
|
444
460
|
/**
|
|
445
461
|
* Gets the pitch angle of the entity.
|
|
446
462
|
* @public
|
|
@@ -524,8 +540,10 @@ declare class Entity {
|
|
|
524
540
|
* @param {number} z - Z coordinate in 3D space.
|
|
525
541
|
*/
|
|
526
542
|
setCartesian(x: number, y: number, z: number): void;
|
|
543
|
+
protected _propagateGlobalPosition(x: number, y: number, z: number): void;
|
|
527
544
|
protected _updatePitchYawRoll(): void;
|
|
528
545
|
_updateAbsolutePosition(): void;
|
|
546
|
+
protected _applyTransformToFeatures(): void;
|
|
529
547
|
/**
|
|
530
548
|
* Sets local cartesian position without dispatching events.
|
|
531
549
|
* @public
|
|
@@ -8,6 +8,7 @@ import { GeoObjectHandler } from "./geoObject/GeoObjectHandler";
|
|
|
8
8
|
import { LabelHandler } from "./label/LabelHandler";
|
|
9
9
|
import { Vec3 } from "../math/Vec3";
|
|
10
10
|
import type { NumberArray3 } from "../math/Vec3";
|
|
11
|
+
import type { NumberArray4 } from "../math/Vec4";
|
|
11
12
|
import { PointCloudHandler } from "./pointCloud/PointCloudHandler";
|
|
12
13
|
import { PolylineHandler } from "./polyline/PolylineHandler";
|
|
13
14
|
import { RayHandler } from "./ray/RayHandler";
|
|
@@ -25,7 +26,7 @@ interface IEntityCollectionParams {
|
|
|
25
26
|
receiveProjectors?: boolean;
|
|
26
27
|
receiveShadows?: boolean;
|
|
27
28
|
receiveFrameTransparency?: boolean;
|
|
28
|
-
scaleByDistance?: NumberArray3;
|
|
29
|
+
scaleByDistance?: NumberArray3 | NumberArray4;
|
|
29
30
|
pickingScale?: number | NumberArray3;
|
|
30
31
|
opacity?: number;
|
|
31
32
|
shadeMode?: ShadeModeInput;
|
|
@@ -45,10 +46,11 @@ interface IEntityCollectionParams {
|
|
|
45
46
|
* @param {boolean} [options.receiveProjectors=true] - Enables/disables projector effect reception for this collection.
|
|
46
47
|
* @param {boolean} [options.receiveFrameTransparency=false] - Enables/disables frame transparency reception for this collection.
|
|
47
48
|
* @param {boolean} [options.receiveShadows=true] - Enables/disables shadow map reception for this collection.
|
|
48
|
-
* @param {Array.<number>} [options.scaleByDistance] -
|
|
49
|
-
*
|
|
50
|
-
*
|
|
51
|
-
*
|
|
49
|
+
* @param {Array.<number>} [options.scaleByDistance] - Scale by distance parameters:
|
|
50
|
+
* `[near, far, vanish, scale]`. The fourth entry is a plain multiplier and defaults to `1`, so
|
|
51
|
+
* three entries are accepted as well.
|
|
52
|
+
* See {@link EntityCollection#scaleByDistance} for what each entry means.
|
|
53
|
+
* Default is `[MAX32, MAX32, MAX32, 1]` (no distance scaling).
|
|
52
54
|
* @param {number|Array.<number>} [options.pickingScale] - Picking scale value or xyz scale array.
|
|
53
55
|
* @param {number} [options.opacity] - Entity global opacity.
|
|
54
56
|
* @param {number|string} [options.shadeMode=1] - Geo object shading mode: `0|none|unlit`, `0.5|phong`, `1|pbr`.
|
|
@@ -167,13 +169,17 @@ declare class EntityCollection {
|
|
|
167
169
|
*/
|
|
168
170
|
_entities: Entity[];
|
|
169
171
|
/**
|
|
170
|
-
*
|
|
171
|
-
*
|
|
172
|
-
*
|
|
172
|
+
* Distance-based scaling for geoObjects, billboards, and labels.
|
|
173
|
+
* [0] near - GeoObjects keep a fixed world size below this distance, then scale to
|
|
174
|
+
* maintain a fixed screen size until `far`. Ignored by billboards and labels.
|
|
175
|
+
* Set `near` to `0` to disable distance-based scaling.
|
|
176
|
+
* [1] far - GeoObjects stop growing here. If `vanish > far`, all types start fading.
|
|
177
|
+
* [2] vanish - Distance where the entity fades to zero. `vanish <= far` disables fading.
|
|
178
|
+
* [3] scale - Optional multiplier for all types. Default is `1`.
|
|
173
179
|
* @public
|
|
174
180
|
* @type {Array.<number>}
|
|
175
181
|
*/
|
|
176
|
-
scaleByDistance:
|
|
182
|
+
scaleByDistance: NumberArray4;
|
|
177
183
|
pickingScale: Float32Array;
|
|
178
184
|
/**
|
|
179
185
|
* Global opacity.
|
|
@@ -291,11 +297,15 @@ declare class EntityCollection {
|
|
|
291
297
|
/**
|
|
292
298
|
* Sets scale by distance parameters.
|
|
293
299
|
* @public
|
|
294
|
-
* @param {number} near -
|
|
295
|
-
*
|
|
296
|
-
* @param {number}
|
|
300
|
+
* @param {number} near - Distance below which a geoObject keeps its world size. Billboards
|
|
301
|
+
* and labels ignore it; pass `0` to disable the world scale ramp.
|
|
302
|
+
* @param {number} far - Distance up to which an entity keeps its size.
|
|
303
|
+
* @param {number} [vanish] - Distance at which the size reaches zero. Defaults to `far`, which
|
|
304
|
+
* means no fading at all: past `far` a billboard or a label keeps its screen size, and a
|
|
305
|
+
* geoObject keeps the world size it reached there.
|
|
306
|
+
* @param {number} [scale] - Plain multiplier applied on top, for every entity type.
|
|
297
307
|
*/
|
|
298
|
-
setScaleByDistance(near: number, far: number,
|
|
308
|
+
setScaleByDistance(near: number, far: number, vanish?: number, scale?: number): void;
|
|
299
309
|
setVisibleSphere(p: Vec3, r: number): void;
|
|
300
310
|
/**
|
|
301
311
|
* Aligns collection entities to terrain.
|
|
@@ -43,6 +43,8 @@ declare class BaseBillboardHandler {
|
|
|
43
43
|
protected _pickingColorArr: Float32Array;
|
|
44
44
|
protected _buffersUpdateCallbacks: Function[];
|
|
45
45
|
protected _changedBuffers: boolean[];
|
|
46
|
+
protected _changedPositionFrom: number;
|
|
47
|
+
protected _changedPositionTo: number;
|
|
46
48
|
protected _configureDepthPass(depthWrite: boolean): void;
|
|
47
49
|
protected _restoreDepthPass(depthWrite: boolean): void;
|
|
48
50
|
constructor(entityCollection: EntityCollection);
|
|
@@ -62,6 +64,14 @@ declare class BaseBillboardHandler {
|
|
|
62
64
|
* @param {number} index - Buffer index.
|
|
63
65
|
*/
|
|
64
66
|
protected _setChangedBuffer(index: number): void;
|
|
67
|
+
/**
|
|
68
|
+
* Marks a half open range of the position arrays as changed, so that the next update uploads
|
|
69
|
+
* only that range instead of the whole buffer.
|
|
70
|
+
* @protected
|
|
71
|
+
* @param {number} from - First changed float index.
|
|
72
|
+
* @param {number} to - Index past the last changed float.
|
|
73
|
+
*/
|
|
74
|
+
protected _setChangedPositionRange(from: number, to: number): void;
|
|
65
75
|
protected _removeBillboards(): void;
|
|
66
76
|
clear(): void;
|
|
67
77
|
protected _deleteBuffers(): void;
|
package/lib/index.d.ts
CHANGED
|
@@ -15,7 +15,7 @@ export * from "./entity/index";
|
|
|
15
15
|
export * from "./layer/index";
|
|
16
16
|
export * from "./Globe";
|
|
17
17
|
export type { IControlParams } from "./control/Control";
|
|
18
|
-
export type { ITouchState } from "./renderer/RendererEvents";
|
|
18
|
+
export type { IMouseState, ITouchState } from "./renderer/RendererEvents";
|
|
19
19
|
export type { IDeferredShadingPass } from "./renderer/IDeferredShadingPass";
|
|
20
20
|
export type { ITransparencyPass } from "./renderer/ITransparencyPass";
|
|
21
21
|
export type { ProjectorSourceType, ProjectorRenderMode, IProjectorParams } from "./renderer/projectors/Projector";
|
package/lib/layer/Vector.d.ts
CHANGED
|
@@ -21,7 +21,7 @@ export interface IVectorParams extends IBaseTileMaterialLayerParams {
|
|
|
21
21
|
clampToGround?: boolean;
|
|
22
22
|
async?: boolean;
|
|
23
23
|
pickingScale?: number | NumberArray3;
|
|
24
|
-
scaleByDistance?: NumberArray3;
|
|
24
|
+
scaleByDistance?: NumberArray3 | NumberArray4;
|
|
25
25
|
labelMaxLetters?: number;
|
|
26
26
|
shadeMode?: ShadeModeInput;
|
|
27
27
|
depthOrder?: number;
|
|
@@ -54,11 +54,11 @@ export type VectorEventsType = EventsHandler<VectorEventsList> & EventsHandler<L
|
|
|
54
54
|
* @param {boolean} [options.fading=false] - Enables layer fade-in/fade-out transition logic.
|
|
55
55
|
* @param {number} [options.height=0] - Layer height level used for rendering order.
|
|
56
56
|
* @param {Array.<Entity|IEntityParams>} [options.entities] - Entities array or entity init params.
|
|
57
|
-
* @param {Array.<number>} [options.scaleByDistance] - Scale by distance parameters
|
|
58
|
-
*
|
|
59
|
-
*
|
|
60
|
-
*
|
|
61
|
-
* Default is `[MAX32, MAX32, MAX32]` (no distance scaling).
|
|
57
|
+
* @param {Array.<number>} [options.scaleByDistance] - Scale by distance parameters:
|
|
58
|
+
* `[near, far, vanish, scale]`. The fourth entry is a plain multiplier and defaults to `1`, so
|
|
59
|
+
* three entries are accepted as well.
|
|
60
|
+
* See {@link Vector#scaleByDistance} for what each entry means.
|
|
61
|
+
* Default is `[MAX32, MAX32, MAX32, 1]` (no distance scaling).
|
|
62
62
|
* @param {number|Array.<number>} [options.pickingScale=[1,1,1]] - Picking scale value or xyz scale array.
|
|
63
63
|
* @param {number} [options.nodeCapacity=60] - Maximum entities quantity in a quadtree node.
|
|
64
64
|
* @param {boolean} [options.async=true] - Asynchronous vector data handling before rendering.
|
|
@@ -91,13 +91,17 @@ declare class Vector extends BaseTileMaterialLayer {
|
|
|
91
91
|
*/
|
|
92
92
|
protected _entities: Entity[];
|
|
93
93
|
/**
|
|
94
|
-
*
|
|
95
|
-
*
|
|
96
|
-
*
|
|
94
|
+
* Distance-based scaling for geoObjects, billboards, and labels.
|
|
95
|
+
* [0] near - GeoObjects keep a fixed world size below this distance, then scale to
|
|
96
|
+
* maintain a fixed screen size until `far`. Ignored by billboards and labels.
|
|
97
|
+
* Set `near` to `0` to disable distance-based scaling.
|
|
98
|
+
* [1] far - GeoObjects stop growing here. If `vanish > far`, all types start fading.
|
|
99
|
+
* [2] vanish - Distance where the entity fades to zero. `vanish <= far` disables fading.
|
|
100
|
+
* [3] scale - Optional multiplier for all types. Default is `1`.
|
|
97
101
|
* @public
|
|
98
|
-
* @type {
|
|
102
|
+
* @type {Array.<number>}
|
|
99
103
|
*/
|
|
100
|
-
scaleByDistance:
|
|
104
|
+
scaleByDistance: NumberArray4;
|
|
101
105
|
pickingScale: Float32Array;
|
|
102
106
|
/**
|
|
103
107
|
* Asynchronous data handling before rendering.
|
package/lib/math.d.ts
CHANGED
|
@@ -67,6 +67,14 @@ export declare const EPS20 = 1e-20;
|
|
|
67
67
|
* //returns 6
|
|
68
68
|
*/
|
|
69
69
|
export declare function log(n: number, base: number): number;
|
|
70
|
+
/**
|
|
71
|
+
* Smooth Hermite interpolation between 0 and 1, the same as GLSL `smoothstep`.
|
|
72
|
+
* @param {number} edge0 - Lower edge.
|
|
73
|
+
* @param {number} edge1 - Upper edge.
|
|
74
|
+
* @param {number} x - Source value.
|
|
75
|
+
* @returns {number} -
|
|
76
|
+
*/
|
|
77
|
+
export declare function smoothstep(edge0: number, edge1: number, x: number): number;
|
|
70
78
|
/**
|
|
71
79
|
* Clamp the number.
|
|
72
80
|
* @function
|
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{touch-action:none;width:100%;height:100%;overflow:hidden}.og-timeline-current{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{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}
|
|
2
2
|
/*$vite$:1*/
|