@openglobus/og 0.22.2 → 0.23.0
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/css/og.css +137 -1
- package/lib/@openglobus/js/Object3d.d.ts +20 -10
- package/lib/@openglobus/js/camera/Camera.d.ts +9 -0
- package/lib/@openglobus/js/camera/Frustum.d.ts +3 -0
- package/lib/@openglobus/js/control/CameraLock.d.ts +38 -0
- package/lib/@openglobus/js/control/SimpleNavigation.d.ts +27 -10
- package/lib/@openglobus/js/control/geoObjectEditor/ArrowEntity.d.ts +15 -0
- package/lib/@openglobus/js/control/geoObjectEditor/AxisTrackEntity.d.ts +9 -0
- package/lib/@openglobus/js/control/geoObjectEditor/GeoObjectEditor.d.ts +13 -0
- package/lib/@openglobus/js/control/geoObjectEditor/GeoObjectEditorDialog.d.ts +69 -0
- package/lib/@openglobus/js/control/geoObjectEditor/GeoObjectEditorScene.d.ts +78 -9
- package/lib/@openglobus/js/control/geoObjectEditor/MoveAxisEntity.d.ts +17 -0
- package/lib/@openglobus/js/control/geoObjectEditor/MovePlaneEntity.d.ts +7 -0
- package/lib/@openglobus/js/control/geoObjectEditor/RotateEntity.d.ts +9 -0
- package/lib/@openglobus/js/control/geoObjectEditor/colors.d.ts +8 -0
- package/lib/@openglobus/js/control/index.d.ts +2 -0
- package/lib/@openglobus/js/entity/Entity.d.ts +278 -19
- package/lib/@openglobus/js/entity/EntityCollection.d.ts +8 -9
- package/lib/@openglobus/js/entity/GeoObject.d.ts +141 -36
- package/lib/@openglobus/js/entity/GeoObjectHandler.d.ts +39 -63
- package/lib/@openglobus/js/entity/InstanceData.d.ts +76 -0
- package/lib/@openglobus/js/entity/Polyline.d.ts +19 -6
- package/lib/@openglobus/js/entity/PolylineHandler.d.ts +7 -0
- package/lib/@openglobus/js/index.d.ts +2 -1
- package/lib/@openglobus/js/layer/Vector.d.ts +4 -0
- package/lib/@openglobus/js/light/LightSource.d.ts +1 -139
- package/lib/@openglobus/js/math/Quat.d.ts +46 -33
- package/lib/@openglobus/js/math/Ray.d.ts +10 -4
- package/lib/@openglobus/js/math/Vec3.d.ts +15 -0
- package/lib/@openglobus/js/math.d.ts +2 -2
- package/lib/@openglobus/js/quadTree/EntityCollectionNode.d.ts +2 -2
- package/lib/@openglobus/js/quadTree/Node.d.ts +1 -1
- package/lib/@openglobus/js/quadTree/earth/EarthEntityCollectionNodeLonLat.d.ts +1 -1
- package/lib/@openglobus/js/quadTree/equi/EquiEntityCollectionNodeLonLat.d.ts +1 -1
- package/lib/@openglobus/js/renderer/Renderer.d.ts +63 -44
- package/lib/@openglobus/js/renderer/RendererEvents.d.ts +1 -0
- package/lib/@openglobus/js/scene/Planet.d.ts +11 -7
- package/lib/@openglobus/js/scene/RenderNode.d.ts +10 -25
- package/lib/@openglobus/js/shaders/drawnode.d.ts +1 -0
- package/lib/@openglobus/js/shaders/geoObject.d.ts +1 -0
- package/lib/@openglobus/js/shaders/utils.d.ts +1 -1
- package/lib/@openglobus/js/ui/Checkbox.d.ts +31 -0
- package/lib/@openglobus/js/ui/Dialog.d.ts +3 -0
- package/lib/@openglobus/js/ui/Input.d.ts +32 -0
- package/lib/@openglobus/js/ui/View.d.ts +3 -1
- package/lib/@openglobus/js/utils/objParser.d.ts +44 -12
- package/lib/@openglobus/js/utils/shared.d.ts +22 -0
- package/lib/@openglobus/js/webgl/BaseFramebuffer.d.ts +0 -1
- package/lib/@openglobus/js/webgl/Framebuffer.d.ts +35 -8
- package/lib/@openglobus/js/webgl/Handler.d.ts +1 -0
- package/lib/@openglobus/og.css +1 -1
- package/lib/@openglobus/og.esm.js +1 -1
- package/lib/@openglobus/og.esm.js.map +1 -1
- package/lib/@openglobus/og.umd.js +1 -1
- package/lib/@openglobus/og.umd.js.map +1 -1
- package/lib/js/Object3d.d.ts +20 -10
- package/lib/js/Object3d.js +124 -48
- package/lib/js/camera/Camera.d.ts +9 -0
- package/lib/js/camera/Camera.js +27 -1
- package/lib/js/camera/Frustum.d.ts +3 -0
- package/lib/js/camera/Frustum.js +7 -0
- package/lib/js/control/Atmosphere.js +10 -6
- package/lib/js/control/CameraLock.d.ts +38 -0
- package/lib/js/control/CameraLock.js +216 -0
- package/lib/js/control/Control.js +1 -1
- package/lib/js/control/DebugInfo.js +13 -3
- package/lib/js/control/KeyboardNavigation.js +1 -1
- package/lib/js/control/ScaleControl.js +9 -3
- package/lib/js/control/SimpleNavigation.d.ts +27 -10
- package/lib/js/control/SimpleNavigation.js +148 -49
- package/lib/js/control/Sun.js +1 -1
- package/lib/js/control/elevationProfile/ElevationProfileScene.js +4 -4
- package/lib/js/control/geoObjectEditor/ArrowEntity.d.ts +15 -0
- package/lib/js/control/geoObjectEditor/ArrowEntity.js +59 -0
- package/lib/js/control/geoObjectEditor/AxisTrackEntity.d.ts +9 -0
- package/lib/js/control/geoObjectEditor/AxisTrackEntity.js +93 -0
- package/lib/js/control/geoObjectEditor/GeoObjectEditor.d.ts +13 -0
- package/lib/js/control/geoObjectEditor/GeoObjectEditor.js +30 -0
- package/lib/js/control/geoObjectEditor/GeoObjectEditorDialog.d.ts +69 -0
- package/lib/js/control/geoObjectEditor/GeoObjectEditorDialog.js +502 -0
- package/lib/js/control/geoObjectEditor/GeoObjectEditorScene.d.ts +78 -9
- package/lib/js/control/geoObjectEditor/GeoObjectEditorScene.js +487 -43
- package/lib/js/control/geoObjectEditor/MoveAxisEntity.d.ts +17 -0
- package/lib/js/control/geoObjectEditor/MoveAxisEntity.js +106 -0
- package/lib/js/control/geoObjectEditor/MovePlaneEntity.d.ts +7 -0
- package/lib/js/control/geoObjectEditor/MovePlaneEntity.js +34 -0
- package/lib/js/control/geoObjectEditor/RotateEntity.d.ts +9 -0
- package/lib/js/control/geoObjectEditor/RotateEntity.js +105 -0
- package/lib/js/control/geoObjectEditor/colors.d.ts +8 -0
- package/lib/js/control/geoObjectEditor/colors.js +8 -0
- package/lib/js/control/index.d.ts +2 -0
- package/lib/js/control/index.js +2 -0
- package/lib/js/control/timeline/TimelineControl.js +2 -0
- package/lib/js/entity/Entity.d.ts +278 -19
- package/lib/js/entity/Entity.js +483 -63
- package/lib/js/entity/EntityCollection.d.ts +8 -9
- package/lib/js/entity/EntityCollection.js +48 -45
- package/lib/js/entity/GeoObject.d.ts +141 -36
- package/lib/js/entity/GeoObject.js +153 -90
- package/lib/js/entity/GeoObjectHandler.d.ts +39 -63
- package/lib/js/entity/GeoObjectHandler.js +198 -295
- package/lib/js/entity/InstanceData.d.ts +76 -0
- package/lib/js/entity/InstanceData.js +344 -0
- package/lib/js/entity/Polyline.d.ts +19 -6
- package/lib/js/entity/Polyline.js +76 -36
- package/lib/js/entity/PolylineHandler.d.ts +7 -0
- package/lib/js/entity/PolylineHandler.js +26 -1
- package/lib/js/index.d.ts +2 -1
- package/lib/js/index.js +2 -1
- package/lib/js/layer/Bing.js +2 -2
- package/lib/js/layer/Vector.d.ts +4 -0
- package/lib/js/layer/Vector.js +16 -0
- package/lib/js/light/LightSource.d.ts +1 -139
- package/lib/js/light/LightSource.js +21 -227
- package/lib/js/math/Quat.d.ts +46 -33
- package/lib/js/math/Quat.js +91 -90
- package/lib/js/math/Ray.d.ts +10 -4
- package/lib/js/math/Ray.js +20 -4
- package/lib/js/math/Vec3.d.ts +15 -0
- package/lib/js/math/Vec3.js +30 -1
- package/lib/js/math.d.ts +2 -2
- package/lib/js/math.js +3 -3
- package/lib/js/quadTree/EntityCollectionNode.d.ts +2 -2
- package/lib/js/quadTree/EntityCollectionNode.js +8 -8
- package/lib/js/quadTree/Node.d.ts +1 -1
- package/lib/js/quadTree/Node.js +2 -2
- package/lib/js/quadTree/QuadTreeStrategy.js +1 -1
- package/lib/js/quadTree/earth/EarthEntityCollectionNodeLonLat.d.ts +1 -1
- package/lib/js/quadTree/earth/EarthEntityCollectionNodeLonLat.js +2 -2
- package/lib/js/quadTree/equi/EquiEntityCollectionNodeLonLat.d.ts +1 -1
- package/lib/js/quadTree/equi/EquiEntityCollectionNodeLonLat.js +2 -2
- package/lib/js/renderer/Renderer.d.ts +63 -44
- package/lib/js/renderer/Renderer.js +260 -263
- package/lib/js/renderer/RendererEvents.d.ts +1 -0
- package/lib/js/renderer/RendererEvents.js +2 -1
- package/lib/js/scene/Planet.d.ts +11 -7
- package/lib/js/scene/Planet.js +109 -87
- package/lib/js/scene/RenderNode.d.ts +10 -25
- package/lib/js/scene/RenderNode.js +70 -58
- package/lib/js/shaders/depth.js +2 -5
- package/lib/js/shaders/drawnode.d.ts +1 -0
- package/lib/js/shaders/drawnode.js +51 -52
- package/lib/js/shaders/geoObject.d.ts +1 -0
- package/lib/js/shaders/geoObject.js +154 -91
- package/lib/js/shaders/polyline.js +68 -51
- package/lib/js/shaders/utils.d.ts +1 -1
- package/lib/js/shaders/utils.js +11 -0
- package/lib/js/ui/Checkbox.d.ts +31 -0
- package/lib/js/ui/Checkbox.js +110 -0
- package/lib/js/ui/Color.js +2 -1
- package/lib/js/ui/Dialog.d.ts +3 -0
- package/lib/js/ui/Dialog.js +20 -0
- package/lib/js/ui/Input.d.ts +32 -0
- package/lib/js/ui/Input.js +107 -0
- package/lib/js/ui/View.d.ts +3 -1
- package/lib/js/ui/View.js +6 -0
- package/lib/js/utils/objParser.d.ts +44 -12
- package/lib/js/utils/objParser.js +241 -149
- package/lib/js/utils/shared.d.ts +22 -0
- package/lib/js/utils/shared.js +34 -0
- package/lib/js/webgl/BaseFramebuffer.d.ts +0 -1
- package/lib/js/webgl/Framebuffer.d.ts +35 -8
- package/lib/js/webgl/Framebuffer.js +136 -29
- package/lib/js/webgl/Handler.d.ts +1 -0
- package/lib/js/webgl/Handler.js +11 -1
- package/lib/js/webgl/Program.js +0 -8
- package/package.json +4 -2
|
@@ -8,6 +8,7 @@ import { Vec3 } from "../math/Vec3";
|
|
|
8
8
|
export type RendererEventsHandler = RendererEvents & EventsHandler<RendererEventsType>;
|
|
9
9
|
export declare function createRendererEvents(renderer: Renderer): RendererEvents;
|
|
10
10
|
export type RendererEventsType = [
|
|
11
|
+
"changerelativecenter",
|
|
11
12
|
"draw",
|
|
12
13
|
"drawtransparent",
|
|
13
14
|
"postdraw",
|
|
@@ -95,7 +95,7 @@ class RendererEvents extends Events {
|
|
|
95
95
|
pickingObject: null,
|
|
96
96
|
renderer: renderer
|
|
97
97
|
};
|
|
98
|
-
this._isMouseInside =
|
|
98
|
+
this._isMouseInside = true;
|
|
99
99
|
this._entityPickingEventsActive = true;
|
|
100
100
|
this._dblTchCoords = new Vec2();
|
|
101
101
|
this._oneTouchStart = false;
|
|
@@ -703,6 +703,7 @@ class RendererEvents extends Events {
|
|
|
703
703
|
}
|
|
704
704
|
}
|
|
705
705
|
const RENDERER_EVENTS = [
|
|
706
|
+
"changerelativecenter",
|
|
706
707
|
/**
|
|
707
708
|
* Triggered before scene frame is rendered(before render nodes).
|
|
708
709
|
* @event og.RendererEvents#draw
|
package/lib/js/scene/Planet.d.ts
CHANGED
|
@@ -20,8 +20,10 @@ import { Quat } from "../math/Quat";
|
|
|
20
20
|
import { QuadTreeStrategy } from "../quadTree/QuadTreeStrategy";
|
|
21
21
|
import { Ray } from "../math/Ray";
|
|
22
22
|
import { RenderNode } from "./RenderNode";
|
|
23
|
+
import { Sun } from "../control/Sun";
|
|
23
24
|
import { TerrainWorker } from "../utils/TerrainWorker";
|
|
24
25
|
import { Vec2, Vec3, NumberArray2, NumberArray3, NumberArray4 } from "../math/index";
|
|
26
|
+
import { Vector } from "../layer/Vector";
|
|
25
27
|
import { VectorTileCreator } from "../utils/VectorTileCreator";
|
|
26
28
|
import { WebGLBufferExt, WebGLTextureExt, IDefaultTextureParams } from "../webgl/Handler";
|
|
27
29
|
import { Program } from "../webgl/Program";
|
|
@@ -122,14 +124,15 @@ export declare class Planet extends RenderNode {
|
|
|
122
124
|
* @protected
|
|
123
125
|
* @type {Array.<Layer>}
|
|
124
126
|
*/
|
|
125
|
-
protected visibleVectorLayers:
|
|
127
|
+
protected visibleVectorLayers: Vector[];
|
|
128
|
+
protected _visibleVectorLayersByDepthOrder: Vector[][];
|
|
126
129
|
protected _visibleTileLayerSlices: Layer[][];
|
|
127
130
|
/**
|
|
128
131
|
* Vector layers visible nodes with collections.
|
|
129
132
|
* @protected
|
|
130
|
-
* @type {
|
|
133
|
+
* @type {EntityCollection[][]}
|
|
131
134
|
*/
|
|
132
|
-
protected
|
|
135
|
+
protected _visibleEntityCollections: EntityCollection[][];
|
|
133
136
|
/**
|
|
134
137
|
* There is only one base layer on the globe when layer.isBaseLayer is true.
|
|
135
138
|
* @public
|
|
@@ -184,6 +187,7 @@ export declare class Planet extends RenderNode {
|
|
|
184
187
|
_renderedNodesInFrustum: Node[][];
|
|
185
188
|
_fadingNodes: Map<number, Node>;
|
|
186
189
|
_fadingNodesInFrustum: Node[][];
|
|
190
|
+
protected _fadingOpaqueSegments: Segment[];
|
|
187
191
|
/**
|
|
188
192
|
* Layers activity lock.
|
|
189
193
|
* @public
|
|
@@ -308,6 +312,7 @@ export declare class Planet extends RenderNode {
|
|
|
308
312
|
get terrainReady(): boolean;
|
|
309
313
|
get maxGridSize(): number;
|
|
310
314
|
getNorthFrameRotation(cartesian: Vec3): Quat;
|
|
315
|
+
getFrameRotation(cartesian: Vec3): Quat;
|
|
311
316
|
set atmosphereMaxOpacity(opacity: number);
|
|
312
317
|
get atmosphereMaxOpacity(): number;
|
|
313
318
|
set atmosphereMinOpacity(opacity: number);
|
|
@@ -327,6 +332,7 @@ export declare class Planet extends RenderNode {
|
|
|
327
332
|
* @public
|
|
328
333
|
*/
|
|
329
334
|
getLayers(): Layer[];
|
|
335
|
+
get sun(): Sun | undefined;
|
|
330
336
|
get sunPos(): Vec3;
|
|
331
337
|
/**
|
|
332
338
|
* Add the given control to the renderer of the planet scene.
|
|
@@ -466,18 +472,16 @@ export declare class Planet extends RenderNode {
|
|
|
466
472
|
unlockQuadTree(): void;
|
|
467
473
|
protected _setUniformsNoAtmos(cam: PlanetCamera): Program;
|
|
468
474
|
protected _setUniformsAtmos(cam: PlanetCamera): Program;
|
|
469
|
-
protected _renderingFadingNodes: (nodes: Map<number, boolean>, sh: Program, currentNode: Node, sl: Layer[], sliceIndex: number, outTransparentSegments?: Segment[]) => void;
|
|
470
|
-
protected _renderingFadingNodesNoDepth: (nodes: Map<number, boolean>, sh: Program, currentNode: Node, sl: Layer[], sliceIndex: number) => void;
|
|
475
|
+
protected _renderingFadingNodes: (nodes: Map<number, boolean>, sh: Program, currentNode: Node, sl: Layer[], sliceIndex: number, outTransparentSegments?: Segment[], outOpaqueSegments?: Segment[]) => void;
|
|
476
|
+
protected _renderingFadingNodesNoDepth: (nodes: Map<number, boolean>, sh: Program, currentNode: Node, sl: Layer[], sliceIndex: number, outOpaqueSegments?: Segment[]) => void;
|
|
471
477
|
/**
|
|
472
478
|
* Drawing nodes
|
|
473
479
|
*/
|
|
474
480
|
protected _renderingScreenNodes(sh: Program, cam: PlanetCamera, renderedNodes: Node[]): void;
|
|
475
481
|
protected _renderingScreenNodesWithHeight(sh: Program, cam: PlanetCamera, renderedNodes: Node[]): void;
|
|
476
|
-
protected _renderDistanceFramebufferPASS(): void;
|
|
477
482
|
protected _renderColorPickingFramebufferPASS(): void;
|
|
478
483
|
protected _renderDepthFramebufferPASS(): void;
|
|
479
484
|
protected _collectVectorLayerCollections(): void;
|
|
480
|
-
protected _frustumEntityCollectionPickingCallback(): void;
|
|
481
485
|
/**
|
|
482
486
|
* Starts clear memory thread.
|
|
483
487
|
* @public
|
package/lib/js/scene/Planet.js
CHANGED
|
@@ -5,7 +5,6 @@ import * as utils from "../utils/shared";
|
|
|
5
5
|
import { Atmosphere } from "../control/Atmosphere";
|
|
6
6
|
import { createColorRGB } from "../utils/shared";
|
|
7
7
|
import { createEvents } from "../Events";
|
|
8
|
-
import { decodeFloatFromRGBAArr } from "../math/coder";
|
|
9
8
|
import { EarthQuadTreeStrategy } from "../quadTree/earth/EarthQuadTreeStrategy";
|
|
10
9
|
import { Extent } from "../Extent";
|
|
11
10
|
import { Geoid } from "../terrain/Geoid";
|
|
@@ -19,16 +18,13 @@ import { PlanetCamera } from "../camera/PlanetCamera";
|
|
|
19
18
|
import { RenderNode } from "./RenderNode";
|
|
20
19
|
import { SimpleSkyBackground } from "../control/SimpleSkyBackground";
|
|
21
20
|
import { TerrainWorker } from "../utils/TerrainWorker";
|
|
22
|
-
import {
|
|
21
|
+
import { Vec2, Vec3 } from "../math/index";
|
|
23
22
|
import { Vector } from "../layer/Vector";
|
|
24
23
|
import { VectorTileCreator } from "../utils/VectorTileCreator";
|
|
25
24
|
import { wgs84 } from "../ellipsoid/wgs84";
|
|
26
25
|
const CUR_LOD_SIZE = 250; //px
|
|
27
26
|
const MIN_LOD_SIZE = 312; //px
|
|
28
27
|
const MAX_LOD_SIZE = 190; //px
|
|
29
|
-
let _tempPickingPix_ = new Uint8Array(4);
|
|
30
|
-
let _tempDepthColor_ = new Uint8Array(4);
|
|
31
|
-
const DEPTH_DISTANCE = 11; //m
|
|
32
28
|
/**
|
|
33
29
|
* Maximum created nodes count. The more nodes count the more memory usage.
|
|
34
30
|
* @const
|
|
@@ -58,7 +54,7 @@ const HORIZON_TANGENT = 0.81;
|
|
|
58
54
|
export class Planet extends RenderNode {
|
|
59
55
|
constructor(options = {}) {
|
|
60
56
|
super(options.name);
|
|
61
|
-
this._renderingFadingNodes = (nodes, sh, currentNode, sl, sliceIndex, outTransparentSegments) => {
|
|
57
|
+
this._renderingFadingNodes = (nodes, sh, currentNode, sl, sliceIndex, outTransparentSegments, outOpaqueSegments) => {
|
|
62
58
|
let isFirstPass = sliceIndex === 0;
|
|
63
59
|
let isEq = this.terrain.equalizeVertices;
|
|
64
60
|
for (let j = 0, len = currentNode._fadingNodes.length; j < len; j++) {
|
|
@@ -73,6 +69,7 @@ export class Planet extends RenderNode {
|
|
|
73
69
|
isEq && f.equalize();
|
|
74
70
|
f.readyToEngage && f.engage();
|
|
75
71
|
f.screenRendering(sh, sl, sliceIndex);
|
|
72
|
+
outOpaqueSegments.push(f);
|
|
76
73
|
}
|
|
77
74
|
else {
|
|
78
75
|
f.screenRendering(sh, sl, sliceIndex, this.transparentTexture, true);
|
|
@@ -81,7 +78,7 @@ export class Planet extends RenderNode {
|
|
|
81
78
|
}
|
|
82
79
|
}
|
|
83
80
|
};
|
|
84
|
-
this._renderingFadingNodesNoDepth = (nodes, sh, currentNode, sl, sliceIndex) => {
|
|
81
|
+
this._renderingFadingNodesNoDepth = (nodes, sh, currentNode, sl, sliceIndex, outOpaqueSegments) => {
|
|
85
82
|
let isFirstPass = sliceIndex === 0;
|
|
86
83
|
let isEq = this.terrain.equalizeVertices;
|
|
87
84
|
let gl = sh.gl;
|
|
@@ -94,6 +91,7 @@ export class Planet extends RenderNode {
|
|
|
94
91
|
isEq && f.equalize();
|
|
95
92
|
f.readyToEngage && f.engage();
|
|
96
93
|
f.screenRendering(sh, sl, sliceIndex);
|
|
94
|
+
outOpaqueSegments.push(f);
|
|
97
95
|
}
|
|
98
96
|
else {
|
|
99
97
|
f.screenRendering(sh, sl, sliceIndex, this.transparentTexture, true);
|
|
@@ -113,8 +111,9 @@ export class Planet extends RenderNode {
|
|
|
113
111
|
this._updateLayer = false;
|
|
114
112
|
this.visibleTileLayers = [];
|
|
115
113
|
this.visibleVectorLayers = [];
|
|
114
|
+
this._visibleVectorLayersByDepthOrder = [];
|
|
116
115
|
this._visibleTileLayerSlices = [];
|
|
117
|
-
this.
|
|
116
|
+
this._visibleEntityCollections = [[]];
|
|
118
117
|
this.baseLayer = null;
|
|
119
118
|
this.terrain = null;
|
|
120
119
|
this.camera = new PlanetCamera(this, {
|
|
@@ -142,6 +141,7 @@ export class Planet extends RenderNode {
|
|
|
142
141
|
this._renderedNodesInFrustum = [];
|
|
143
142
|
this._fadingNodes = new Map;
|
|
144
143
|
this._fadingNodesInFrustum = [];
|
|
144
|
+
this._fadingOpaqueSegments = [];
|
|
145
145
|
this.layerLock = new Lock();
|
|
146
146
|
this.terrainLock = new Lock();
|
|
147
147
|
this._heightFactor = 1.0;
|
|
@@ -191,7 +191,7 @@ export class Planet extends RenderNode {
|
|
|
191
191
|
this._renderScreenNodesPASS = this._renderScreenNodesPASSNoAtmos;
|
|
192
192
|
this._renderScreenNodesWithHeightPASS = this._renderScreenNodesWithHeightPASSNoAtmos;
|
|
193
193
|
this._atmosphereEnabled = options.atmosphereEnabled || false;
|
|
194
|
-
this._atmosphereMaxMinOpacity = new Float32Array([
|
|
194
|
+
this._atmosphereMaxMinOpacity = new Float32Array([0.95, 0.28]);
|
|
195
195
|
this.solidTextureOne = null;
|
|
196
196
|
this.solidTextureTwo = null;
|
|
197
197
|
this._nightTextureSrc = options.nightTextureSrc || null;
|
|
@@ -208,6 +208,9 @@ export class Planet extends RenderNode {
|
|
|
208
208
|
return this._maxGridSize;
|
|
209
209
|
}
|
|
210
210
|
getNorthFrameRotation(cartesian) {
|
|
211
|
+
return this.getFrameRotation(cartesian);
|
|
212
|
+
}
|
|
213
|
+
getFrameRotation(cartesian) {
|
|
211
214
|
return this.ellipsoid.getNorthFrameRotation(cartesian);
|
|
212
215
|
}
|
|
213
216
|
set atmosphereMaxOpacity(opacity) {
|
|
@@ -261,8 +264,12 @@ export class Planet extends RenderNode {
|
|
|
261
264
|
getLayers() {
|
|
262
265
|
return this.layers;
|
|
263
266
|
}
|
|
267
|
+
get sun() {
|
|
268
|
+
if (this.renderer && this.renderer.controls.sun)
|
|
269
|
+
return this.renderer.controls.sun;
|
|
270
|
+
}
|
|
264
271
|
get sunPos() {
|
|
265
|
-
return this.
|
|
272
|
+
return this.sun.sunlight.getPosition();
|
|
266
273
|
}
|
|
267
274
|
/**
|
|
268
275
|
* Add the given control to the renderer of the planet scene.
|
|
@@ -485,7 +492,6 @@ export class Planet extends RenderNode {
|
|
|
485
492
|
h.addProgram(shaders.drawnode_heightPicking(), true);
|
|
486
493
|
this.renderer.addPickingCallback(this, this._renderColorPickingFramebufferPASS);
|
|
487
494
|
this.renderer.addDepthCallback(this, this._renderDepthFramebufferPASS);
|
|
488
|
-
this.renderer.addDistanceCallback(this, this._renderDistanceFramebufferPASS);
|
|
489
495
|
}
|
|
490
496
|
_onLayerLoadend(layer) {
|
|
491
497
|
this.events.dispatch(this.events.layerloadend, layer);
|
|
@@ -552,7 +558,6 @@ export class Planet extends RenderNode {
|
|
|
552
558
|
this._initializeShaders();
|
|
553
559
|
this._initializeAtmosphere();
|
|
554
560
|
this._updateVisibleLayers();
|
|
555
|
-
this.renderer.addPickingCallback(this, this._frustumEntityCollectionPickingCallback);
|
|
556
561
|
// loading Earth night glowing texture
|
|
557
562
|
if (this._nightTextureSrc) {
|
|
558
563
|
let img = new Image();
|
|
@@ -720,6 +725,18 @@ export class Planet extends RenderNode {
|
|
|
720
725
|
*/
|
|
721
726
|
_sortLayers() {
|
|
722
727
|
this.visibleVectorLayers.sort((a, b) => (a.getZIndex() - b.getZIndex()) || (a.getHeight() - b.getHeight()));
|
|
728
|
+
let grouped = { 0: [] };
|
|
729
|
+
for (const vi of this.visibleVectorLayers) {
|
|
730
|
+
if (!grouped[vi.depthOrder]) {
|
|
731
|
+
grouped[vi.depthOrder] = [];
|
|
732
|
+
}
|
|
733
|
+
grouped[vi.depthOrder].push(vi);
|
|
734
|
+
}
|
|
735
|
+
this._visibleVectorLayersByDepthOrder.length = 0;
|
|
736
|
+
this._visibleVectorLayersByDepthOrder = [];
|
|
737
|
+
this._visibleVectorLayersByDepthOrder = Object.keys(grouped)
|
|
738
|
+
.sort((a, b) => Number(a) - Number(b))
|
|
739
|
+
.map(key => grouped[Number(key)]);
|
|
723
740
|
this._visibleTileLayerSlices = [];
|
|
724
741
|
this._visibleTileLayerSlices.length = 0;
|
|
725
742
|
if (this.visibleTileLayers.length) {
|
|
@@ -857,9 +874,6 @@ export class Planet extends RenderNode {
|
|
|
857
874
|
}
|
|
858
875
|
_globalPreDraw() {
|
|
859
876
|
let cam = this.camera;
|
|
860
|
-
// Might be it's better to replace it in setTerrain,
|
|
861
|
-
// but we have to be sure that setTerrain exists with renderer insttance
|
|
862
|
-
this.renderer.__useDistanceFramebuffer__ = !this.terrain.isEmpty;
|
|
863
877
|
this._distBeforeMemClear += this._prevCamEye.distance(cam.eye);
|
|
864
878
|
this._prevCamEye.copy(cam.eye);
|
|
865
879
|
cam.checkFly();
|
|
@@ -887,7 +901,7 @@ export class Planet extends RenderNode {
|
|
|
887
901
|
this._collectRenderNodes(this.camera);
|
|
888
902
|
}
|
|
889
903
|
this._skipPreRender = true;
|
|
890
|
-
this.transformLights();
|
|
904
|
+
//this.transformLights();
|
|
891
905
|
// creates terrain normal maps
|
|
892
906
|
this._normalMapCreator.frame();
|
|
893
907
|
// Creating geoImages textures.
|
|
@@ -902,7 +916,9 @@ export class Planet extends RenderNode {
|
|
|
902
916
|
// Collect entity collections from vector layers
|
|
903
917
|
this._collectVectorLayerCollections();
|
|
904
918
|
}
|
|
905
|
-
|
|
919
|
+
for (let i = 0; i < this._visibleEntityCollections.length; i++) {
|
|
920
|
+
this.drawEntityCollections(this._visibleEntityCollections[i], i);
|
|
921
|
+
}
|
|
906
922
|
}
|
|
907
923
|
/**
|
|
908
924
|
* Render node callback.
|
|
@@ -954,7 +970,7 @@ export class Planet extends RenderNode {
|
|
|
954
970
|
h.programs.drawnode_screen_wl.activate();
|
|
955
971
|
sh = h.programs.drawnode_screen_wl._program;
|
|
956
972
|
shu = sh.uniforms;
|
|
957
|
-
gl.uniform3fv(shu.
|
|
973
|
+
gl.uniform3fv(shu.lightPosition, this._lightPosition);
|
|
958
974
|
gl.uniformMatrix4fv(shu.viewMatrix, false, cam.getViewMatrix());
|
|
959
975
|
gl.uniformMatrix4fv(shu.projectionMatrix, false, cam.getProjectionMatrix());
|
|
960
976
|
if (this.baseLayer) {
|
|
@@ -1002,7 +1018,7 @@ export class Planet extends RenderNode {
|
|
|
1002
1018
|
h.programs.drawnode_screen_wl.activate();
|
|
1003
1019
|
sh = h.programs.drawnode_screen_wl._program;
|
|
1004
1020
|
shu = sh.uniforms;
|
|
1005
|
-
gl.uniform3fv(shu.
|
|
1021
|
+
gl.uniform3fv(shu.lightPosition, this._lightPosition);
|
|
1006
1022
|
gl.uniformMatrix4fv(shu.viewMatrix, false, cam.getViewMatrix());
|
|
1007
1023
|
gl.uniformMatrix4fv(shu.projectionMatrix, false, cam.getProjectionMatrix());
|
|
1008
1024
|
if (this.baseLayer) {
|
|
@@ -1068,21 +1084,30 @@ export class Planet extends RenderNode {
|
|
|
1068
1084
|
let transparentSegments = [];
|
|
1069
1085
|
let isEq = this.terrain.equalizeVertices;
|
|
1070
1086
|
let i = renderedNodes.length;
|
|
1087
|
+
//
|
|
1088
|
+
// Collect fading opaque segments, because we need them in the framebuffer passes,
|
|
1089
|
+
// as the segments with equalized sides, which means that there are no gaps
|
|
1090
|
+
// between currently rendered neighbours
|
|
1091
|
+
//
|
|
1092
|
+
this._fadingOpaqueSegments = [];
|
|
1071
1093
|
if (cam.slope > 0.8 || !this.terrain || this.terrain.isEmpty /*|| cam.getAltitude() > 10000*/) {
|
|
1072
1094
|
while (i--) {
|
|
1073
1095
|
let ri = renderedNodes[i];
|
|
1074
1096
|
let s = ri.segment;
|
|
1075
|
-
this._renderingFadingNodesNoDepth(nodes, sh, ri, sl[0], 0);
|
|
1097
|
+
this._renderingFadingNodesNoDepth(nodes, sh, ri, sl[0], 0, this._fadingOpaqueSegments);
|
|
1076
1098
|
isEq && s.equalize();
|
|
1077
1099
|
s.readyToEngage && s.engage();
|
|
1078
1100
|
s.screenRendering(sh, sl[0], 0);
|
|
1079
1101
|
}
|
|
1080
1102
|
}
|
|
1081
1103
|
else {
|
|
1104
|
+
//
|
|
1105
|
+
// Render opaque segments on the first pass, remove transparent ones into second pass
|
|
1106
|
+
//
|
|
1082
1107
|
while (i--) {
|
|
1083
1108
|
let ri = renderedNodes[i];
|
|
1084
1109
|
let s = ri.segment;
|
|
1085
|
-
this._renderingFadingNodes(nodes, sh, ri, sl[0], 0, transparentSegments);
|
|
1110
|
+
this._renderingFadingNodes(nodes, sh, ri, sl[0], 0, transparentSegments, this._fadingOpaqueSegments);
|
|
1086
1111
|
if (s._transitionOpacity < 1) {
|
|
1087
1112
|
transparentSegments.push(s);
|
|
1088
1113
|
}
|
|
@@ -1092,6 +1117,9 @@ export class Planet extends RenderNode {
|
|
|
1092
1117
|
s.screenRendering(sh, sl[0], 0);
|
|
1093
1118
|
}
|
|
1094
1119
|
}
|
|
1120
|
+
//
|
|
1121
|
+
// Render transparent segments
|
|
1122
|
+
//
|
|
1095
1123
|
for (let j = 0; j < transparentSegments.length; j++) {
|
|
1096
1124
|
let tj = transparentSegments[j];
|
|
1097
1125
|
isEq && tj.equalize();
|
|
@@ -1132,29 +1160,6 @@ export class Planet extends RenderNode {
|
|
|
1132
1160
|
gl.disable(gl.POLYGON_OFFSET_FILL);
|
|
1133
1161
|
gl.enable(gl.CULL_FACE);
|
|
1134
1162
|
}
|
|
1135
|
-
_renderDistanceFramebufferPASS() {
|
|
1136
|
-
if (!this.terrain.isEmpty) {
|
|
1137
|
-
let sh;
|
|
1138
|
-
let renderer = this.renderer;
|
|
1139
|
-
let h = renderer.handler;
|
|
1140
|
-
let gl = h.gl;
|
|
1141
|
-
let cam = renderer.activeCamera;
|
|
1142
|
-
h.programs.drawnode_heightPicking.activate();
|
|
1143
|
-
sh = h.programs.drawnode_heightPicking._program;
|
|
1144
|
-
let shu = sh.uniforms;
|
|
1145
|
-
gl.uniformMatrix4fv(shu.viewMatrix, false, cam.getViewMatrix());
|
|
1146
|
-
gl.uniformMatrix4fv(shu.projectionMatrix, false, cam.getProjectionMatrix());
|
|
1147
|
-
gl.uniform3fv(shu.eyePositionHigh, cam.eyeHigh);
|
|
1148
|
-
gl.uniform3fv(shu.eyePositionLow, cam.eyeLow);
|
|
1149
|
-
// drawing planet nodes
|
|
1150
|
-
let rn = this._renderedNodesInFrustum[cam.currentFrustumIndex];
|
|
1151
|
-
let sl = this._visibleTileLayerSlices;
|
|
1152
|
-
let i = rn.length;
|
|
1153
|
-
while (i--) {
|
|
1154
|
-
rn[i].segment.heightPickingRendering(sh, sl[0]);
|
|
1155
|
-
}
|
|
1156
|
-
}
|
|
1157
|
-
}
|
|
1158
1163
|
_renderColorPickingFramebufferPASS() {
|
|
1159
1164
|
let sh;
|
|
1160
1165
|
let renderer = this.renderer;
|
|
@@ -1174,7 +1179,12 @@ export class Planet extends RenderNode {
|
|
|
1174
1179
|
let sl = this._visibleTileLayerSlices;
|
|
1175
1180
|
let i = rn.length;
|
|
1176
1181
|
while (i--) {
|
|
1177
|
-
rn[i].segment.
|
|
1182
|
+
if (rn[i].segment._transitionOpacity >= 1) {
|
|
1183
|
+
rn[i].segment.colorPickingRendering(sh, sl[0], 0);
|
|
1184
|
+
}
|
|
1185
|
+
}
|
|
1186
|
+
for (let i = 0; i < this._fadingOpaqueSegments.length; ++i) {
|
|
1187
|
+
this._fadingOpaqueSegments[i].colorPickingRendering(sh, sl[0], 0);
|
|
1178
1188
|
}
|
|
1179
1189
|
// Here is set blending for transparent overlays
|
|
1180
1190
|
renderer.enableBlendDefault();
|
|
@@ -1203,31 +1213,43 @@ export class Planet extends RenderNode {
|
|
|
1203
1213
|
gl.uniformMatrix4fv(shu.projectionMatrix, false, cam.getProjectionMatrix());
|
|
1204
1214
|
gl.uniform3fv(shu.eyePositionHigh, cam.eyeHigh);
|
|
1205
1215
|
gl.uniform3fv(shu.eyePositionLow, cam.eyeLow);
|
|
1206
|
-
gl.
|
|
1216
|
+
gl.uniform1f(shu.frustumPickingColor, cam.frustumColorIndex);
|
|
1207
1217
|
// drawing planet nodes
|
|
1208
1218
|
let rn = this._renderedNodesInFrustum[cam.getCurrentFrustum()], sl = this._visibleTileLayerSlices;
|
|
1209
1219
|
let i = rn.length;
|
|
1210
1220
|
while (i--) {
|
|
1211
|
-
rn[i].segment.
|
|
1221
|
+
if (rn[i].segment._transitionOpacity >= 1) {
|
|
1222
|
+
rn[i].segment.depthRendering(sh, sl[0]);
|
|
1223
|
+
}
|
|
1224
|
+
}
|
|
1225
|
+
for (let i = 0; i < this._fadingOpaqueSegments.length; ++i) {
|
|
1226
|
+
this._fadingOpaqueSegments[i].depthRendering(sh, sl[0]);
|
|
1212
1227
|
}
|
|
1213
1228
|
gl.enable(gl.BLEND);
|
|
1214
1229
|
}
|
|
1215
1230
|
_collectVectorLayerCollections() {
|
|
1216
|
-
this.
|
|
1217
|
-
this.
|
|
1218
|
-
|
|
1219
|
-
|
|
1220
|
-
|
|
1221
|
-
|
|
1222
|
-
|
|
1231
|
+
let k = this._visibleVectorLayersByDepthOrder.length;
|
|
1232
|
+
this._visibleEntityCollections.length = 0;
|
|
1233
|
+
this._visibleEntityCollections = new Array(k);
|
|
1234
|
+
for (let i = 0; i < this._visibleEntityCollections.length; i++) {
|
|
1235
|
+
this._visibleEntityCollections[i] = [];
|
|
1236
|
+
}
|
|
1237
|
+
while (k--) {
|
|
1238
|
+
let group = this._visibleVectorLayersByDepthOrder[k];
|
|
1239
|
+
let j = group.length;
|
|
1240
|
+
while (j--) {
|
|
1241
|
+
let vi = group[j];
|
|
1242
|
+
if (vi._fading && vi._refreshFadingOpacity()) {
|
|
1243
|
+
group.splice(j, 1);
|
|
1244
|
+
if (group.length === 0) {
|
|
1245
|
+
this._visibleVectorLayersByDepthOrder.splice(k, 1);
|
|
1246
|
+
}
|
|
1247
|
+
}
|
|
1248
|
+
vi.collectVisibleCollections(this._visibleEntityCollections[k]);
|
|
1249
|
+
vi.update();
|
|
1223
1250
|
}
|
|
1224
|
-
vi.collectVisibleCollections(this._frustumEntityCollections);
|
|
1225
|
-
vi.update();
|
|
1226
1251
|
}
|
|
1227
1252
|
}
|
|
1228
|
-
_frustumEntityCollectionPickingCallback() {
|
|
1229
|
-
this.drawPickingEntityCollections(this._frustumEntityCollections);
|
|
1230
|
-
}
|
|
1231
1253
|
/**
|
|
1232
1254
|
* Starts clear memory thread.
|
|
1233
1255
|
* @public
|
|
@@ -1358,34 +1380,11 @@ export class Planet extends RenderNode {
|
|
|
1358
1380
|
* @returns {number | undefined} -
|
|
1359
1381
|
*/
|
|
1360
1382
|
getDistanceFromPixel(px) {
|
|
1361
|
-
if (this.terrain
|
|
1362
|
-
|
|
1363
|
-
}
|
|
1364
|
-
|
|
1365
|
-
|
|
1366
|
-
let cnv = r.handler.canvas;
|
|
1367
|
-
let spx = px.x / cnv.width;
|
|
1368
|
-
let spy = (cnv.height - px.y) / cnv.height;
|
|
1369
|
-
_tempPickingPix_[0] = _tempPickingPix_[1] = _tempPickingPix_[2] = 0.0;
|
|
1370
|
-
let dist = 0;
|
|
1371
|
-
r.readDistanceColor(spx, spy, _tempPickingPix_);
|
|
1372
|
-
dist = decodeFloatFromRGBAArr(_tempPickingPix_);
|
|
1373
|
-
if (!(_tempPickingPix_[0] || _tempPickingPix_[1] || _tempPickingPix_[2])) {
|
|
1374
|
-
dist = this.getDistanceFromPixelEllipsoid(px) || 0;
|
|
1375
|
-
}
|
|
1376
|
-
else if (dist < DEPTH_DISTANCE) {
|
|
1377
|
-
r.screenDepthFramebuffer.activate();
|
|
1378
|
-
//if (r.screenDepthFramebuffer.isComplete()) {
|
|
1379
|
-
r.screenDepthFramebuffer.readPixels(_tempDepthColor_, spx, spy);
|
|
1380
|
-
let screenPos = new Vec4(spx * 2.0 - 1.0, spy * 2.0 - 1.0, (_tempDepthColor_[0] / 255.0) * 2.0 - 1.0, 1.0 * 2.0 - 1.0);
|
|
1381
|
-
let viewPosition = this.camera.frustums[0].inverseProjectionMatrix.mulVec4(screenPos);
|
|
1382
|
-
let dir = px.direction || r.activeCamera.unproject(px.x, px.y);
|
|
1383
|
-
dist = -(viewPosition.z / viewPosition.w) / dir.dot(r.activeCamera.getForward());
|
|
1384
|
-
//}
|
|
1385
|
-
r.screenDepthFramebuffer.deactivate();
|
|
1386
|
-
}
|
|
1387
|
-
return dist;
|
|
1388
|
-
}
|
|
1383
|
+
// if (this.terrain!.isEmpty) {
|
|
1384
|
+
// return this.getDistanceFromPixelEllipsoid(px) || 0;
|
|
1385
|
+
// } else {
|
|
1386
|
+
return this.renderer.getDistanceFromPixel(px) || this.getDistanceFromPixelEllipsoid(px) || 0;
|
|
1387
|
+
//}
|
|
1389
1388
|
}
|
|
1390
1389
|
/**
|
|
1391
1390
|
* Sets camera to the planet geographical extent.
|
|
@@ -1415,6 +1414,29 @@ export class Planet extends RenderNode {
|
|
|
1415
1414
|
* @returns {Extent} -
|
|
1416
1415
|
*/
|
|
1417
1416
|
getViewExtent() {
|
|
1417
|
+
if (this.renderer) {
|
|
1418
|
+
let w = this.renderer.handler.getWidth(), h = this.renderer.handler.getHeight();
|
|
1419
|
+
let extent = [
|
|
1420
|
+
this.getLonLatFromPixelTerrain(new Vec2(0, 0)),
|
|
1421
|
+
this.getLonLatFromPixelTerrain(new Vec2(w, 0)),
|
|
1422
|
+
this.getLonLatFromPixelTerrain(new Vec2(w, h)),
|
|
1423
|
+
this.getLonLatFromPixelTerrain(new Vec2(0, h))
|
|
1424
|
+
];
|
|
1425
|
+
if (extent[0] && extent[1] && extent[2] && extent[3]) {
|
|
1426
|
+
let min_lon = extent[0].lon, min_lat = extent[2].lat, max_lon = extent[1].lon, max_lat = extent[0].lat;
|
|
1427
|
+
for (let i = 0; i < extent.length; i++) {
|
|
1428
|
+
if (extent[i].lon > max_lon)
|
|
1429
|
+
max_lon = extent[i].lon;
|
|
1430
|
+
if (extent[i].lat > max_lat)
|
|
1431
|
+
max_lat = extent[i].lat;
|
|
1432
|
+
if (extent[i].lon < min_lon)
|
|
1433
|
+
min_lon = extent[i].lon;
|
|
1434
|
+
if (extent[i].lat < min_lat)
|
|
1435
|
+
min_lat = extent[i].lat;
|
|
1436
|
+
}
|
|
1437
|
+
return new Extent(new LonLat(min_lon, min_lat), new LonLat(max_lon, max_lat));
|
|
1438
|
+
}
|
|
1439
|
+
}
|
|
1418
1440
|
return this._viewExtent;
|
|
1419
1441
|
}
|
|
1420
1442
|
/**
|
|
@@ -2,6 +2,8 @@ import { BaseNode } from "./BaseNode";
|
|
|
2
2
|
import { Renderer } from "../renderer/Renderer";
|
|
3
3
|
import { LightSource } from "../light/LightSource";
|
|
4
4
|
import { EntityCollection } from "../entity/EntityCollection";
|
|
5
|
+
import { Quat } from "../math/Quat";
|
|
6
|
+
import { Vec3 } from "../math/Vec3";
|
|
5
7
|
/**
|
|
6
8
|
* Render node is a logical part of a render mechanism. Represents scene rendering.
|
|
7
9
|
* For example one scene node for rendering the Earth, another one for rendering the Moon, another node for rendering stars etc.
|
|
@@ -37,19 +39,19 @@ declare class RenderNode extends BaseNode {
|
|
|
37
39
|
* @public
|
|
38
40
|
* @type {Array.<LightSource>}
|
|
39
41
|
*/
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
_lightsParamsv: number[];
|
|
44
|
-
_lightsParamsf: number[];
|
|
42
|
+
_lightPosition: Float32Array;
|
|
43
|
+
_lightParams: Float32Array;
|
|
44
|
+
_lightShininess: number;
|
|
45
45
|
/**
|
|
46
46
|
* Entity collection array.
|
|
47
47
|
* @public
|
|
48
48
|
* @type {Array.<EntityCollection>}
|
|
49
49
|
*/
|
|
50
50
|
entityCollections: EntityCollection[];
|
|
51
|
+
protected _entityCollectionsByDepthOrder: EntityCollection[][];
|
|
51
52
|
protected _pickingId: number;
|
|
52
53
|
constructor(name?: string);
|
|
54
|
+
getFrameRotation(cartesian: Vec3): Quat;
|
|
53
55
|
/**
|
|
54
56
|
* Adds node to the current hierarchy.
|
|
55
57
|
* @public
|
|
@@ -73,13 +75,14 @@ declare class RenderNode extends BaseNode {
|
|
|
73
75
|
* @param {boolean} [isHidden] - If it's true that this collection has specific rendering.
|
|
74
76
|
* @returns {RenderNode} -
|
|
75
77
|
*/
|
|
76
|
-
addEntityCollection(entityCollection: EntityCollection, isHidden?: boolean):
|
|
78
|
+
addEntityCollection(entityCollection: EntityCollection, isHidden?: boolean): void;
|
|
77
79
|
/**
|
|
78
80
|
* Removes entity collection.
|
|
79
81
|
* @public
|
|
80
82
|
* @param {EntityCollection} entityCollection - Entity collection for remove.
|
|
81
83
|
*/
|
|
82
84
|
removeEntityCollection(entityCollection: EntityCollection): void;
|
|
85
|
+
updateEntityCollectionsDepthOrder(): void;
|
|
83
86
|
/**
|
|
84
87
|
* Adds point light source.
|
|
85
88
|
* @public
|
|
@@ -87,19 +90,6 @@ declare class RenderNode extends BaseNode {
|
|
|
87
90
|
* @returns {RenderNode}
|
|
88
91
|
*/
|
|
89
92
|
addLight(light: LightSource): RenderNode;
|
|
90
|
-
/**
|
|
91
|
-
* Gets light object by its name.
|
|
92
|
-
* @public
|
|
93
|
-
* @param {string} name - Point light name.
|
|
94
|
-
* @returns {LightSource}
|
|
95
|
-
*/
|
|
96
|
-
getLightByName(name: string): LightSource | undefined;
|
|
97
|
-
/**
|
|
98
|
-
* Removes light source.
|
|
99
|
-
* @public
|
|
100
|
-
* @param {LightSource} light - Light source object.
|
|
101
|
-
*/
|
|
102
|
-
removeLight(light: LightSource): void;
|
|
103
93
|
/**
|
|
104
94
|
* Calls render frame node's callback. Used in renderer.
|
|
105
95
|
* @public
|
|
@@ -128,17 +118,12 @@ declare class RenderNode extends BaseNode {
|
|
|
128
118
|
* @param {Number} mode - Draw mode, such as gl.TRIANGLES, gl.TRIANGLE_STRIP, gl.LINES etc.
|
|
129
119
|
*/
|
|
130
120
|
setDrawMode(mode: number): void;
|
|
131
|
-
/**
|
|
132
|
-
* IMPORTANT: This function have to be called manually in each render node frame callback, before drawing scene geometry.
|
|
133
|
-
* @public
|
|
134
|
-
*/
|
|
135
|
-
transformLights(): void;
|
|
136
121
|
updateBillboardsTexCoords(): void;
|
|
137
122
|
frame(): void;
|
|
138
123
|
preFrame(): void;
|
|
139
124
|
protected _preDrawNodes(): void;
|
|
140
125
|
protected _drawNodes(): void;
|
|
141
|
-
drawEntityCollections(ec: EntityCollection[]): void;
|
|
126
|
+
drawEntityCollections(ec: EntityCollection[], depthOrder?: number): void;
|
|
142
127
|
/**
|
|
143
128
|
* Draw entity collections picking frame.
|
|
144
129
|
* @public
|