easy-three-utils 0.0.1

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.
Files changed (166) hide show
  1. package/package.json +12 -0
  2. package/src/common/index.ts +24 -0
  3. package/src/common/useLine2.ts +87 -0
  4. package/src/common/useLoader.ts +184 -0
  5. package/src/common/useLocationCalculator.ts +145 -0
  6. package/src/common/useMark.ts +42 -0
  7. package/src/common/useTween.ts +86 -0
  8. package/src/core/basic/camera.ts +28 -0
  9. package/src/core/basic/clock.ts +11 -0
  10. package/src/core/basic/control.ts +32 -0
  11. package/src/core/basic/index.ts +35 -0
  12. package/src/core/basic/labelRenderer.ts +26 -0
  13. package/src/core/basic/light.ts +63 -0
  14. package/src/core/basic/renderer.ts +37 -0
  15. package/src/core/basic/scene.ts +11 -0
  16. package/src/core/basic/stats.ts +16 -0
  17. package/src/core/event.ts +74 -0
  18. package/src/core/index.ts +11 -0
  19. package/src/core/main.ts +389 -0
  20. package/src/draco/README.md +32 -0
  21. package/src/draco/draco_decoder.js +34 -0
  22. package/src/draco/draco_decoder.wasm +0 -0
  23. package/src/draco/draco_encoder.js +33 -0
  24. package/src/draco/draco_wasm_wrapper.js +117 -0
  25. package/src/draco/gltf/draco_decoder.js +33 -0
  26. package/src/draco/gltf/draco_decoder.wasm +0 -0
  27. package/src/draco/gltf/draco_encoder.js +33 -0
  28. package/src/draco/gltf/draco_wasm_wrapper.js +116 -0
  29. package/src/tileRenderer/base/Tile.d.ts +50 -0
  30. package/src/tileRenderer/base/TileBase.d.ts +76 -0
  31. package/src/tileRenderer/base/TileInternal.d.ts +36 -0
  32. package/src/tileRenderer/base/TilesRendererBase.d.ts +35 -0
  33. package/src/tileRenderer/base/TilesRendererBase.js +847 -0
  34. package/src/tileRenderer/base/Tileset.d.ts +66 -0
  35. package/src/tileRenderer/base/constants.d.ts +6 -0
  36. package/src/tileRenderer/base/constants.js +16 -0
  37. package/src/tileRenderer/base/loaders/B3DMLoaderBase.d.ts +18 -0
  38. package/src/tileRenderer/base/loaders/B3DMLoaderBase.js +85 -0
  39. package/src/tileRenderer/base/loaders/CMPTLoaderBase.d.ts +22 -0
  40. package/src/tileRenderer/base/loaders/CMPTLoaderBase.js +61 -0
  41. package/src/tileRenderer/base/loaders/I3DMLoaderBase.d.ts +21 -0
  42. package/src/tileRenderer/base/loaders/I3DMLoaderBase.js +130 -0
  43. package/src/tileRenderer/base/loaders/LoaderBase.d.ts +10 -0
  44. package/src/tileRenderer/base/loaders/LoaderBase.js +73 -0
  45. package/src/tileRenderer/base/loaders/PNTSLoaderBase.d.ts +17 -0
  46. package/src/tileRenderer/base/loaders/PNTSLoaderBase.js +82 -0
  47. package/src/tileRenderer/base/plugins/ImplicitTilingPlugin.js +12 -0
  48. package/src/tileRenderer/base/traverseFunctions.js +468 -0
  49. package/src/tileRenderer/gltf.js +144 -0
  50. package/src/tileRenderer/index.d.ts +41 -0
  51. package/src/tileRenderer/index.js +44 -0
  52. package/src/tileRenderer/plugins/README.md +578 -0
  53. package/src/tileRenderer/plugins/base/ImplicitTilingPlugin.d.ts +2 -0
  54. package/src/tileRenderer/plugins/base/ImplicitTilingPlugin.js +84 -0
  55. package/src/tileRenderer/plugins/base/SUBTREELoader.js +876 -0
  56. package/src/tileRenderer/plugins/index.d.ts +17 -0
  57. package/src/tileRenderer/plugins/index.js +17 -0
  58. package/src/tileRenderer/plugins/three/CesiumIonAuthPlugin.d.ts +9 -0
  59. package/src/tileRenderer/plugins/three/CesiumIonAuthPlugin.js +175 -0
  60. package/src/tileRenderer/plugins/three/DebugTilesPlugin.d.ts +29 -0
  61. package/src/tileRenderer/plugins/three/DebugTilesPlugin.js +677 -0
  62. package/src/tileRenderer/plugins/three/GLTFExtensionsPlugin.d.ts +18 -0
  63. package/src/tileRenderer/plugins/three/GLTFExtensionsPlugin.js +86 -0
  64. package/src/tileRenderer/plugins/three/GoogleAttributionsManager.js +62 -0
  65. package/src/tileRenderer/plugins/three/GoogleCloudAuthPlugin.d.ts +5 -0
  66. package/src/tileRenderer/plugins/three/GoogleCloudAuthPlugin.js +200 -0
  67. package/src/tileRenderer/plugins/three/ReorientationPlugin.d.ts +12 -0
  68. package/src/tileRenderer/plugins/three/ReorientationPlugin.js +136 -0
  69. package/src/tileRenderer/plugins/three/TileCompressionPlugin.d.ts +18 -0
  70. package/src/tileRenderer/plugins/three/TileCompressionPlugin.js +223 -0
  71. package/src/tileRenderer/plugins/three/UpdateOnChangePlugin.d.ts +5 -0
  72. package/src/tileRenderer/plugins/three/UpdateOnChangePlugin.js +87 -0
  73. package/src/tileRenderer/plugins/three/fade/FadeManager.js +370 -0
  74. package/src/tileRenderer/plugins/three/fade/TilesFadePlugin.d.ts +9 -0
  75. package/src/tileRenderer/plugins/three/fade/TilesFadePlugin.js +318 -0
  76. package/src/tileRenderer/plugins/three/gltf/GLTFCesiumRTCExtension.d.ts +5 -0
  77. package/src/tileRenderer/plugins/three/gltf/GLTFCesiumRTCExtension.js +27 -0
  78. package/src/tileRenderer/plugins/three/gltf/GLTFMeshFeaturesExtension.d.ts +30 -0
  79. package/src/tileRenderer/plugins/three/gltf/GLTFMeshFeaturesExtension.js +76 -0
  80. package/src/tileRenderer/plugins/three/gltf/GLTFStructuralMetadataExtension.d.ts +49 -0
  81. package/src/tileRenderer/plugins/three/gltf/GLTFStructuralMetadataExtension.js +147 -0
  82. package/src/tileRenderer/plugins/three/gltf/metadata/classes/ClassProperty.js +149 -0
  83. package/src/tileRenderer/plugins/three/gltf/metadata/classes/MeshFeatures.js +215 -0
  84. package/src/tileRenderer/plugins/three/gltf/metadata/classes/PropertyAttributeAccessor.js +107 -0
  85. package/src/tileRenderer/plugins/three/gltf/metadata/classes/PropertySetAccessor.js +45 -0
  86. package/src/tileRenderer/plugins/three/gltf/metadata/classes/PropertyTableAccessor.js +209 -0
  87. package/src/tileRenderer/plugins/three/gltf/metadata/classes/PropertyTextureAccessor.js +244 -0
  88. package/src/tileRenderer/plugins/three/gltf/metadata/classes/StructuralMetadata.js +202 -0
  89. package/src/tileRenderer/plugins/three/gltf/metadata/math/Matrix2.js +55 -0
  90. package/src/tileRenderer/plugins/three/gltf/metadata/utilities/ClassPropertyHelpers.js +495 -0
  91. package/src/tileRenderer/plugins/three/gltf/metadata/utilities/TexCoordUtilities.js +72 -0
  92. package/src/tileRenderer/plugins/three/gltf/metadata/utilities/TextureReadUtility.js +154 -0
  93. package/src/tileRenderer/plugins/three/objects/EllipsoidRegionHelper.js +186 -0
  94. package/src/tileRenderer/plugins/three/objects/SphereHelper.js +55 -0
  95. package/src/tileRenderer/r3f/README.md +238 -0
  96. package/src/tileRenderer/r3f/components/CameraControls.jsx +132 -0
  97. package/src/tileRenderer/r3f/components/CameraTransition.jsx +177 -0
  98. package/src/tileRenderer/r3f/components/CanvasDOMOverlay.jsx +54 -0
  99. package/src/tileRenderer/r3f/components/CompassGizmo.jsx +260 -0
  100. package/src/tileRenderer/r3f/components/TilesAttributionOverlay.jsx +110 -0
  101. package/src/tileRenderer/r3f/components/TilesRenderer.jsx +239 -0
  102. package/src/tileRenderer/r3f/index.jsx +6 -0
  103. package/src/tileRenderer/r3f/utilities/useForceUpdate.jsx +8 -0
  104. package/src/tileRenderer/r3f/utilities/useObjectDep.jsx +59 -0
  105. package/src/tileRenderer/r3f/utilities/useOptions.jsx +143 -0
  106. package/src/tileRenderer/three/DebugTilesRenderer.d.ts +28 -0
  107. package/src/tileRenderer/three/DebugTilesRenderer.js +58 -0
  108. package/src/tileRenderer/three/TilesGroup.d.ts +9 -0
  109. package/src/tileRenderer/three/TilesGroup.js +91 -0
  110. package/src/tileRenderer/three/TilesRenderer.d.ts +37 -0
  111. package/src/tileRenderer/three/TilesRenderer.js +1049 -0
  112. package/src/tileRenderer/three/controls/CameraTransitionManager.js +305 -0
  113. package/src/tileRenderer/three/controls/EnvironmentControls.js +1295 -0
  114. package/src/tileRenderer/three/controls/GlobeControls.js +684 -0
  115. package/src/tileRenderer/three/controls/PivotPointMesh.js +104 -0
  116. package/src/tileRenderer/three/controls/PointerTracker.js +257 -0
  117. package/src/tileRenderer/three/controls/utils.js +113 -0
  118. package/src/tileRenderer/three/loaders/B3DMLoader.d.ts +26 -0
  119. package/src/tileRenderer/three/loaders/B3DMLoader.js +85 -0
  120. package/src/tileRenderer/three/loaders/CMPTLoader.d.ts +19 -0
  121. package/src/tileRenderer/three/loaders/CMPTLoader.js +97 -0
  122. package/src/tileRenderer/three/loaders/GLTFExtensionLoader.d.ts +11 -0
  123. package/src/tileRenderer/three/loaders/GLTFExtensionLoader.js +68 -0
  124. package/src/tileRenderer/three/loaders/I3DMLoader.d.ts +26 -0
  125. package/src/tileRenderer/three/loaders/I3DMLoader.js +256 -0
  126. package/src/tileRenderer/three/loaders/PNTSLoader.d.ts +25 -0
  127. package/src/tileRenderer/three/loaders/PNTSLoader.js +202 -0
  128. package/src/tileRenderer/three/loaders/gltf/GLTFCesiumRTCExtension.js +12 -0
  129. package/src/tileRenderer/three/loaders/gltf/GLTFMeshFeaturesExtension.js +12 -0
  130. package/src/tileRenderer/three/loaders/gltf/GLTFStructuralMetadataExtension.js +12 -0
  131. package/src/tileRenderer/three/math/Ellipsoid.d.ts +31 -0
  132. package/src/tileRenderer/three/math/Ellipsoid.js +337 -0
  133. package/src/tileRenderer/three/math/EllipsoidRegion.d.ts +23 -0
  134. package/src/tileRenderer/three/math/EllipsoidRegion.js +178 -0
  135. package/src/tileRenderer/three/math/ExtendedFrustum.js +65 -0
  136. package/src/tileRenderer/three/math/GeoConstants.d.ts +4 -0
  137. package/src/tileRenderer/three/math/GeoConstants.js +5 -0
  138. package/src/tileRenderer/three/math/GeoUtils.d.ts +9 -0
  139. package/src/tileRenderer/three/math/GeoUtils.js +106 -0
  140. package/src/tileRenderer/three/math/OBB.js +179 -0
  141. package/src/tileRenderer/three/math/TileBoundingVolume.js +272 -0
  142. package/src/tileRenderer/three/plugins/CesiumIonAuthPlugin.js +12 -0
  143. package/src/tileRenderer/three/plugins/DebugTilesPlugin.js +26 -0
  144. package/src/tileRenderer/three/plugins/GoogleCloudAuthPlugin.js +12 -0
  145. package/src/tileRenderer/three/raycastTraverse.js +178 -0
  146. package/src/tileRenderer/three/renderers/CesiumIonTilesRenderer.d.ts +14 -0
  147. package/src/tileRenderer/three/renderers/CesiumIonTilesRenderer.js +21 -0
  148. package/src/tileRenderer/three/renderers/GoogleTilesRenderer.d.ts +43 -0
  149. package/src/tileRenderer/three/renderers/GoogleTilesRenderer.js +48 -0
  150. package/src/tileRenderer/three/utilities.js +54 -0
  151. package/src/tileRenderer/utilities/BatchTable.d.ts +24 -0
  152. package/src/tileRenderer/utilities/BatchTable.js +82 -0
  153. package/src/tileRenderer/utilities/BatchTableHierarchyExtension.js +127 -0
  154. package/src/tileRenderer/utilities/FeatureTable.d.ts +30 -0
  155. package/src/tileRenderer/utilities/FeatureTable.js +159 -0
  156. package/src/tileRenderer/utilities/LRUCache.d.ts +8 -0
  157. package/src/tileRenderer/utilities/LRUCache.js +385 -0
  158. package/src/tileRenderer/utilities/PriorityQueue.d.ts +16 -0
  159. package/src/tileRenderer/utilities/PriorityQueue.js +137 -0
  160. package/src/tileRenderer/utilities/arrayToString.js +7 -0
  161. package/src/tileRenderer/utilities/readMagicBytes.js +29 -0
  162. package/src/tileRenderer/utilities/rgb565torgb.js +22 -0
  163. package/src/tileRenderer/utilities/urlExtension.js +34 -0
  164. package/tsconfig.json +42 -0
  165. package/tsconfig.node.json +11 -0
  166. package/typings/three.d.ts +27 -0
@@ -0,0 +1,17 @@
1
+ // three.js plugins
2
+ export { CesiumIonAuthPlugin } from './three/CesiumIonAuthPlugin';
3
+ export { GoogleCloudAuthPlugin } from './three/GoogleCloudAuthPlugin';
4
+ export { UpdateOnChangePlugin } from './three/UpdateOnChangePlugin';
5
+ export { TileCompressionPlugin } from './three/TileCompressionPlugin';
6
+ export { GLTFExtensionsPlugin } from './three/GLTFExtensionsPlugin';
7
+ export { ReorientationPlugin } from './three/ReorientationPlugin';
8
+ export { TilesFadePlugin } from './three/fade/TilesFadePlugin';
9
+ export * from './three/DebugTilesPlugin';
10
+
11
+ // common plugins
12
+ export { ImplicitTilingPlugin } from './base/ImplicitTilingPlugin';
13
+
14
+ // gltf extensions
15
+ export { GLTFCesiumRTCExtension } from './three/gltf/GLTFCesiumRTCExtension';
16
+ export { GLTFStructuralMetadataExtension } from './three/gltf/GLTFStructuralMetadataExtension';
17
+ export { GLTFMeshFeaturesExtension } from './three/gltf/GLTFMeshFeaturesExtension';
@@ -0,0 +1,17 @@
1
+ // three.js plugins
2
+ export { CesiumIonAuthPlugin } from './three/CesiumIonAuthPlugin.js';
3
+ export { GoogleCloudAuthPlugin } from './three/GoogleCloudAuthPlugin.js';
4
+ export { UpdateOnChangePlugin } from './three/UpdateOnChangePlugin.js';
5
+ export { TileCompressionPlugin } from './three/TileCompressionPlugin.js';
6
+ export { GLTFExtensionsPlugin } from './three/GLTFExtensionsPlugin.js';
7
+ export { ReorientationPlugin } from './three/ReorientationPlugin.js';
8
+ export { TilesFadePlugin } from './three/fade/TilesFadePlugin.js';
9
+ export * from './three/DebugTilesPlugin.js';
10
+
11
+ // common plugins
12
+ export { ImplicitTilingPlugin } from './base/ImplicitTilingPlugin.js';
13
+
14
+ // gltf extensions
15
+ export { GLTFCesiumRTCExtension } from './three/gltf/GLTFCesiumRTCExtension.js';
16
+ export { GLTFStructuralMetadataExtension } from './three/gltf/GLTFStructuralMetadataExtension.js';
17
+ export { GLTFMeshFeaturesExtension } from './three/gltf/GLTFMeshFeaturesExtension.js';
@@ -0,0 +1,9 @@
1
+ export class CesiumIonAuthPlugin {
2
+
3
+ constructor( options : {
4
+ apiToken: String,
5
+ assetId?: String | null,
6
+ autoRefreshToken?: Boolean
7
+ } );
8
+
9
+ }
@@ -0,0 +1,175 @@
1
+ import { GoogleCloudAuthPlugin } from './GoogleCloudAuthPlugin.js';
2
+
3
+ export class CesiumIonAuthPlugin {
4
+
5
+ constructor( { apiToken, assetId = null, autoRefreshToken = false } ) {
6
+
7
+ this.name = 'CESIUM_ION_AUTH_PLUGIN';
8
+ this.apiToken = apiToken;
9
+ this.assetId = assetId;
10
+ this.autoRefreshToken = autoRefreshToken;
11
+ this.tiles = null;
12
+ this.endpointURL = null;
13
+
14
+ this._bearerToken = null;
15
+ this._tileSetVersion = - 1;
16
+ this._tokenRefreshPromise = null;
17
+ this._attributions = [];
18
+
19
+ }
20
+
21
+ init( tiles ) {
22
+
23
+ if ( this.assetId !== null ) {
24
+
25
+ tiles.rootURL = `https://api.cesium.com/v1/assets/${ this.assetId }/endpoint`;
26
+
27
+ }
28
+
29
+ this.tiles = tiles;
30
+ this.endpointURL = tiles.rootURL;
31
+
32
+ // reset the tiles in case this plugin was removed and re-added
33
+ tiles.resetFailedTiles();
34
+
35
+ }
36
+
37
+ loadRootTileSet() {
38
+
39
+ // ensure we have an up-to-date token and root url, then trigger the internal
40
+ // root tile set load function
41
+ return this._refreshToken()
42
+ .then( () => this.tiles.loadRootTileSet() );
43
+
44
+ }
45
+
46
+ preprocessURL( uri ) {
47
+
48
+ uri = new URL( uri );
49
+ if ( /^http/.test( uri.protocol ) && this._tileSetVersion != - 1 ) {
50
+
51
+ uri.searchParams.append( 'v', this._tileSetVersion );
52
+
53
+ }
54
+ return uri.toString();
55
+
56
+ }
57
+
58
+ fetchData( uri, options ) {
59
+
60
+ const tiles = this.tiles;
61
+ if ( tiles.getPluginByName( 'GOOGLE_CLOUD_AUTH_PLUGIN' ) !== null ) {
62
+
63
+ return null;
64
+
65
+ } else {
66
+
67
+ return Promise.resolve().then( async () => {
68
+
69
+ // wait for the token to refresh if loading
70
+ if ( this._tokenRefreshPromise !== null ) {
71
+
72
+ await this._tokenRefreshPromise;
73
+ uri = this.preprocessURL( uri );
74
+
75
+ }
76
+
77
+ const res = await fetch( uri, options );
78
+ if ( res.status >= 400 && res.status <= 499 && this.autoRefreshToken ) {
79
+
80
+ await this._refreshToken( options );
81
+ return fetch( this.preprocessURL( uri ), options );
82
+
83
+ } else {
84
+
85
+ return res;
86
+
87
+ }
88
+
89
+ } );
90
+
91
+ }
92
+
93
+ }
94
+
95
+ getAttributions( target ) {
96
+
97
+ if ( this.tiles.visibleTiles.size > 0 ) {
98
+
99
+ target.push( ...this._attributions );
100
+
101
+ }
102
+
103
+ }
104
+
105
+ _refreshToken( options ) {
106
+
107
+ if ( this._tokenRefreshPromise === null ) {
108
+
109
+ // construct the url to fetch the endpoint
110
+ const url = new URL( this.endpointURL );
111
+ url.searchParams.append( 'access_token', this.apiToken );
112
+
113
+ this._tokenRefreshPromise = fetch( url, options )
114
+ .then( res => {
115
+
116
+ if ( ! res.ok ) {
117
+
118
+ throw new Error( `CesiumIonAuthPlugin: Failed to load data with error code ${ res.status }` );
119
+
120
+ }
121
+
122
+ return res.json();
123
+
124
+ } )
125
+ .then( json => {
126
+
127
+ const tiles = this.tiles;
128
+ if ( 'externalType' in json ) {
129
+
130
+ const url = new URL( json.options.url );
131
+ tiles.rootURL = json.options.url;
132
+
133
+ // if the tile set is "external" then assume it's a google API tile set
134
+ tiles.registerPlugin( new GoogleCloudAuthPlugin( { apiToken: url.searchParams.get( 'key' ) } ) );
135
+
136
+ } else {
137
+
138
+ tiles.rootURL = json.url;
139
+ tiles.fetchOptions.headers = tiles.fetchOptions.headers || {};
140
+ tiles.fetchOptions.headers.Authorization = `Bearer ${ json.accessToken }`;
141
+
142
+ // save the version key if present
143
+ if ( url.searchParams.has( 'v' ) && this._tileSetVersion === - 1 ) {
144
+
145
+ const url = new URL( json.url );
146
+ this._tileSetVersion = url.searchParams.get( 'v' );
147
+
148
+ }
149
+
150
+ this._bearerToken = json.accessToken;
151
+ if ( json.attributions ) {
152
+
153
+ this._attributions = json.attributions.map( att => ( {
154
+ value: att.html,
155
+ type: 'html',
156
+ collapsible: att.collapsible,
157
+ } ) );
158
+
159
+ }
160
+
161
+ }
162
+
163
+ this._tokenRefreshPromise = null;
164
+
165
+ return json;
166
+
167
+ } );
168
+
169
+ }
170
+
171
+ return this._tokenRefreshPromise;
172
+
173
+ }
174
+
175
+ }
@@ -0,0 +1,29 @@
1
+ import { Tile } from '../../base/Tile';
2
+ import { Color } from 'three';
3
+
4
+ export enum ColorMode {}
5
+ export const NONE : ColorMode;
6
+ export const SCREEN_ERROR : ColorMode;
7
+ export const GEOMETRIC_ERROR : ColorMode;
8
+ export const DISTANCE : ColorMode;
9
+ export const DEPTH : ColorMode;
10
+ export const RELATIVE_DEPTH : ColorMode;
11
+ export const IS_LEAF : ColorMode;
12
+ export const RANDOM_COLOR : ColorMode;
13
+ export const RANDOM_NODE_COLOR: ColorMode;
14
+ export const CUSTOM_COLOR: ColorMode;
15
+ export class DebugTilesPlugin {
16
+
17
+ displayBoxBounds : Boolean;
18
+ displaySphereBounds : Boolean;
19
+ displayRegionBounds : Boolean;
20
+ colorMode : ColorMode;
21
+
22
+ maxDebugDepth : Number;
23
+ maxDebugDistance : Number;
24
+ maxDebugError : Number;
25
+
26
+ getDebugColor : ( val: Number, target: Color ) => void;
27
+ customColorCallback : ( val: Tile, target: Color ) => void;
28
+
29
+ }