@vyr/three 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 (127) hide show
  1. package/package.json +26 -0
  2. package/src/actor/ComposerServiceActor.ts +107 -0
  3. package/src/actor/GeometryActor.ts +13 -0
  4. package/src/actor/HTMLConvertActor.ts +55 -0
  5. package/src/actor/MaterialActor.ts +13 -0
  6. package/src/actor/NodeActor.ts +25 -0
  7. package/src/actor/OrbitControllerActor.ts +110 -0
  8. package/src/actor/PassActor.ts +24 -0
  9. package/src/actor/SceneServiceActor.ts +122 -0
  10. package/src/actor/TextureActor.ts +13 -0
  11. package/src/actor/TransformControllerActor.ts +23 -0
  12. package/src/actor/index.ts +10 -0
  13. package/src/asset/index.ts +187 -0
  14. package/src/controls/CameraControls.ts +2360 -0
  15. package/src/controls/TransformControls.ts +1747 -0
  16. package/src/controls/index.ts +2 -0
  17. package/src/descriptor/ComposerServiceDescriptor.ts +47 -0
  18. package/src/descriptor/GeoMapDescriptor.ts +24 -0
  19. package/src/descriptor/HTMLConvertDescriptor.ts +12 -0
  20. package/src/descriptor/InstancedMeshDescriptor.ts +21 -0
  21. package/src/descriptor/MeshDescriptor.ts +16 -0
  22. package/src/descriptor/ModelDescriptor.ts +15 -0
  23. package/src/descriptor/OrbitControllerDescriptor.ts +84 -0
  24. package/src/descriptor/OrthographicCameraDescriptor.ts +12 -0
  25. package/src/descriptor/ParticleDescriptor.ts +88 -0
  26. package/src/descriptor/PassDescriptor.ts +33 -0
  27. package/src/descriptor/PerspectiveCameraDescriptor.ts +15 -0
  28. package/src/descriptor/PointsDescriptor.ts +16 -0
  29. package/src/descriptor/SceneServiceDescriptor.ts +39 -0
  30. package/src/descriptor/SpriteDescriptor.ts +16 -0
  31. package/src/descriptor/TextDescriptor.ts +41 -0
  32. package/src/descriptor/TransformControllerDescriptor.ts +32 -0
  33. package/src/descriptor/animation/AnimationActionDescriptor.ts +52 -0
  34. package/src/descriptor/geometry/BoxGeometryDescriptor.ts +26 -0
  35. package/src/descriptor/geometry/BufferGeometryDescriptor.ts +15 -0
  36. package/src/descriptor/geometry/CircleGeometryDescriptor.ts +22 -0
  37. package/src/descriptor/geometry/CylinderGeometryDescriptor.ts +30 -0
  38. package/src/descriptor/geometry/ExtrudeGeometryDescriptor.ts +35 -0
  39. package/src/descriptor/geometry/GeometryDescriptor.ts +8 -0
  40. package/src/descriptor/geometry/PlaneGeometryDescriptor.ts +22 -0
  41. package/src/descriptor/geometry/RingGeometryDescriptor.ts +26 -0
  42. package/src/descriptor/geometry/SphereGeometryDescriptor.ts +27 -0
  43. package/src/descriptor/geometry/SurfaceGeometryDescriptor.ts +15 -0
  44. package/src/descriptor/geometry/TubeGeometryDescriptor.ts +25 -0
  45. package/src/descriptor/helper/AxesHelperDescriptor.ts +8 -0
  46. package/src/descriptor/index.ts +45 -0
  47. package/src/descriptor/light/AmbientLightDescriptor.ts +8 -0
  48. package/src/descriptor/light/DirectionalLightDescriptor.ts +33 -0
  49. package/src/descriptor/light/HemisphereLightDescriptor.ts +16 -0
  50. package/src/descriptor/light/LightDescriptor.ts +16 -0
  51. package/src/descriptor/light/PointLightDescriptor.ts +24 -0
  52. package/src/descriptor/light/RectAreaLightDescriptor.ts +20 -0
  53. package/src/descriptor/light/SpotLightDescriptor.ts +30 -0
  54. package/src/descriptor/material/MaterialDescriptor.ts +84 -0
  55. package/src/descriptor/material/MeshBasicMaterialDescriptor.ts +53 -0
  56. package/src/descriptor/material/MeshPhongMaterialDescriptor.ts +102 -0
  57. package/src/descriptor/material/MeshStandardMaterialDescriptor.ts +99 -0
  58. package/src/descriptor/material/PointsMaterialDescriptor.ts +31 -0
  59. package/src/descriptor/material/ShaderMaterialDescriptor.ts +35 -0
  60. package/src/descriptor/material/ShadowMaterialDescriptor.ts +19 -0
  61. package/src/descriptor/material/SpriteMaterialDescriptor.ts +31 -0
  62. package/src/descriptor/texture/TextureDescriptor.ts +110 -0
  63. package/src/index.ts +9 -0
  64. package/src/interpreter/ComposerServiceInterpreter.ts +25 -0
  65. package/src/interpreter/GeoMapInterpreter.ts +253 -0
  66. package/src/interpreter/HTMLConvertInterpreter.ts +31 -0
  67. package/src/interpreter/InstancedMeshInterpreter.ts +76 -0
  68. package/src/interpreter/MeshInterpreter.ts +25 -0
  69. package/src/interpreter/ModelInterpreter.ts +61 -0
  70. package/src/interpreter/NodeInterpreter.ts +65 -0
  71. package/src/interpreter/OrbitControllerInterpreter.ts +47 -0
  72. package/src/interpreter/OrthographicCameraInterpreter.ts +13 -0
  73. package/src/interpreter/ParticleInterpreter.ts +221 -0
  74. package/src/interpreter/PassInterpreter.ts +43 -0
  75. package/src/interpreter/PerspectiveCameraInterpreter.ts +33 -0
  76. package/src/interpreter/PointsInterpreter.ts +61 -0
  77. package/src/interpreter/SceneServiceInterpreter.ts +119 -0
  78. package/src/interpreter/ServiceSchedulerInterpreter.ts +23 -0
  79. package/src/interpreter/SpriteInterpreter.ts +45 -0
  80. package/src/interpreter/TextInterpreter.ts +76 -0
  81. package/src/interpreter/TransformControllerInterpreter.ts +44 -0
  82. package/src/interpreter/animation/AnimationActionInterpreter.ts +66 -0
  83. package/src/interpreter/geometry/BoxGeometryInterpreter.ts +34 -0
  84. package/src/interpreter/geometry/BufferGeometryInterpreter.ts +47 -0
  85. package/src/interpreter/geometry/CircleGeometryInterpreter.ts +34 -0
  86. package/src/interpreter/geometry/CylinderGeometryInterpreter.ts +34 -0
  87. package/src/interpreter/geometry/ExtrudeGeometryInterpreter.ts +55 -0
  88. package/src/interpreter/geometry/PlaneGeometryInterpreter.ts +34 -0
  89. package/src/interpreter/geometry/RingGeometryInterpreter.ts +34 -0
  90. package/src/interpreter/geometry/SphereGeometryInterpreter.ts +34 -0
  91. package/src/interpreter/geometry/SurfaceGeometryInterpreter.ts +39 -0
  92. package/src/interpreter/geometry/TubeGeometryInterpreter.ts +42 -0
  93. package/src/interpreter/helper/AxesHelperInterpreter.ts +38 -0
  94. package/src/interpreter/index.ts +45 -0
  95. package/src/interpreter/light/AmbientLightInterpreter.ts +30 -0
  96. package/src/interpreter/light/DirectionalLightInterpreter.ts +84 -0
  97. package/src/interpreter/light/HemisphereLightInterpreter.ts +32 -0
  98. package/src/interpreter/light/PointLightInterpreter.ts +46 -0
  99. package/src/interpreter/light/RectAreaLightInterpreter.ts +34 -0
  100. package/src/interpreter/light/SpotLightInterpreter.ts +68 -0
  101. package/src/interpreter/material/MaterialInterpreter.ts +34 -0
  102. package/src/interpreter/material/MeshBasicMaterialInterpreter.ts +43 -0
  103. package/src/interpreter/material/MeshPhongMaterialInterpreter.ts +63 -0
  104. package/src/interpreter/material/MeshStandardMaterialInterpreter.ts +58 -0
  105. package/src/interpreter/material/PointsMaterialInterpreter.ts +36 -0
  106. package/src/interpreter/material/ShaderMaterialInterpreter.ts +51 -0
  107. package/src/interpreter/material/ShadowMaterialInterpreter.ts +31 -0
  108. package/src/interpreter/material/SpriteMaterialInterpreter.ts +36 -0
  109. package/src/interpreter/texture/TextureInterpreter.ts +59 -0
  110. package/src/locale/Language.ts +10 -0
  111. package/src/locale/LanguageProvider.ts +16 -0
  112. package/src/locale/index.ts +2 -0
  113. package/src/preset/execute/GeoMap/drilldown.ts +61 -0
  114. package/src/preset/execute/GeoMap/index.ts +1 -0
  115. package/src/preset/execute/index.ts +1 -0
  116. package/src/preset/index.ts +7 -0
  117. package/src/preset/routine/GeoMap/drilldown.ts +26 -0
  118. package/src/preset/routine/GeoMap/index.ts +1 -0
  119. package/src/preset/routine/index.ts +1 -0
  120. package/src/utils/dispose/index.ts +23 -0
  121. package/src/utils/geometry/index.ts +82 -0
  122. package/src/utils/index.ts +7 -0
  123. package/src/utils/material/index.ts +53 -0
  124. package/src/utils/pickup/index.ts +16 -0
  125. package/src/utils/random/index.ts +7 -0
  126. package/src/utils/text/index.ts +492 -0
  127. package/src/utils/texture/index.ts +19 -0
@@ -0,0 +1,187 @@
1
+ import { Group } from "three"
2
+ import { GLTFLoader } from 'three/examples/jsm/loaders/GLTFLoader.js'
3
+ import { FontLoader, Font } from 'three/examples/jsm/loaders/FontLoader.js'
4
+ import { Asset, AssetGraph, Category, Port } from "@vyr/engine"
5
+ import { ExtrudeGeometryDescriptor, TextDescriptor, GeoMapDescriptor, InstancedMeshDescriptor, MeshBasicMaterialDescriptor, MeshDescriptor, MeshPhongMaterialDescriptor, MeshStandardMaterialDescriptor, ModelDescriptor, OrbitControllerDescriptor, ParticleDescriptor, PointsDescriptor, PointsMaterialDescriptor, ShaderMaterialDescriptor, SpriteDescriptor, SpriteMaterialDescriptor, TextureDescriptor, TransformControllerDescriptor, TubeGeometryDescriptor } from "../descriptor"
6
+ import { material } from '../utils'
7
+
8
+ const factoryImage = (url: string) => {
9
+ return new Promise<HTMLImageElement>((resolve, reject) => {
10
+ const image = document.createElement('img')
11
+ image.src = Asset.joinUrl(url)
12
+ image.crossOrigin = ''
13
+ image.addEventListener('load', () => resolve(image))
14
+ image.addEventListener('error', (error) => reject(error))
15
+ })
16
+ }
17
+ Asset.register(Category.image, factoryImage)
18
+
19
+ const factoryAudio = (url: string) => {
20
+ return new Promise<HTMLAudioElement>((resolve, reject) => {
21
+ const audio = document.createElement('audio')
22
+ audio.src = Asset.joinUrl(url)
23
+ audio.crossOrigin = ''
24
+ audio.addEventListener('load', () => resolve(audio))
25
+ audio.addEventListener('error', (error) => reject(error))
26
+ })
27
+ }
28
+ Asset.register(Category.audio, factoryAudio)
29
+
30
+ const factoryVideo = (url: string) => {
31
+ return new Promise<HTMLVideoElement>((resolve, reject) => {
32
+ const video = document.createElement('video')
33
+ video.src = Asset.joinUrl(url)
34
+ video.crossOrigin = ''
35
+ video.addEventListener('load', () => resolve(video))
36
+ video.addEventListener('error', (error) => reject(error))
37
+ })
38
+ }
39
+ Asset.register(Category.video, factoryVideo)
40
+
41
+ let loader: GLTFLoader | null = null
42
+ const factoryModel = (url: string) => {
43
+ return new Promise<Group>((resolve, reject) => {
44
+ if (loader === null) loader = new GLTFLoader()
45
+ loader.load(Asset.joinUrl(url), (glb) => {
46
+ glb.scene.animations.push(...glb.animations)
47
+ resolve(glb.scene)
48
+ }, undefined, reject)
49
+ })
50
+ }
51
+ Asset.register(Category.model, factoryModel)
52
+
53
+
54
+ let fontLoader: FontLoader | null = null
55
+ const factoryFont = (url: string) => {
56
+ return new Promise<Font>((resolve, reject) => {
57
+ if (fontLoader === null) fontLoader = new FontLoader()
58
+ fontLoader.load(Asset.joinUrl(url), (font) => {
59
+ resolve(font)
60
+ }, undefined, reject)
61
+ })
62
+ }
63
+ Asset.register(Category.font, factoryFont)
64
+
65
+ const ModelDescriptorProvider = (descriptor: ModelDescriptor, port: Port) => {
66
+ if (descriptor.url) port.edges.push({ key: 'url', category: Category.model, asset: `${descriptor.url}?${descriptor.uuid}` })
67
+ }
68
+
69
+ const MeshDescriptorProvider = (descriptor: MeshDescriptor, port: Port) => {
70
+ material.pickMaterial(descriptor.material, port)
71
+
72
+ if (descriptor.geometry) port.edges.push({ key: 'geometry', category: Category.geometry, asset: descriptor.geometry })
73
+ }
74
+ const InstancedMeshDescriptorProvider = (descriptor: InstancedMeshDescriptor, port: Port) => {
75
+ MeshDescriptorProvider(descriptor, port)
76
+ if (descriptor.setting) port.edges.push({ key: 'setting', category: Category.dataset, asset: descriptor.setting })
77
+ }
78
+ const TextDescriptorProvider = (descriptor: TextDescriptor, port: Port) => {
79
+ if (descriptor.material) port.edges.push({ key: 'material', category: Category.material, asset: descriptor.material })
80
+ if (descriptor.font) port.edges.push({ key: 'font', category: Category.font, asset: descriptor.font })
81
+ }
82
+ const PointsDescriptorProvider = (descriptor: PointsDescriptor, port: Port) => {
83
+ if (descriptor.material) port.edges.push({ key: 'material', category: Category.material, asset: descriptor.material })
84
+ if (descriptor.geometry) port.edges.push({ key: 'geometry', category: Category.geometry, asset: descriptor.geometry })
85
+ }
86
+ const ParticleDescriptorProvider = (descriptor: ParticleDescriptor, port: Port) => {
87
+ if (descriptor.map) port.edges.push({ key: 'map', category: Category.texture, asset: descriptor.map })
88
+ if (descriptor.alphaMap) port.edges.push({ key: 'alphaMap', category: Category.texture, asset: descriptor.alphaMap })
89
+ if (descriptor.track) port.edges.push({ key: 'track', category: Category.dataset, asset: descriptor.track })
90
+ }
91
+
92
+ const SpriteDescriptorProvider = (descriptor: SpriteDescriptor, port: Port) => {
93
+ if (descriptor.material) port.edges.push({ key: 'material', category: Category.material, asset: descriptor.material })
94
+ }
95
+
96
+ const GeoMapDescriptorProvider = (descriptor: GeoMapDescriptor, port: Port) => {
97
+ material.pickMaterial(descriptor.material, port)
98
+ if (descriptor.borderMaterial) port.edges.push({ key: 'borderMaterial', category: Category.material, asset: descriptor.borderMaterial })
99
+ if (descriptor.shadowMaterial) port.edges.push({ key: 'shadowMaterial', category: Category.material, asset: descriptor.shadowMaterial })
100
+ if (descriptor.label) port.edges.push({ key: 'label', category: Category.prefab, asset: descriptor.label })
101
+ if (descriptor.geojsonRegion) port.edges.push({ key: 'geojsonRegion', category: Category.json, asset: descriptor.geojsonRegion })
102
+ if (descriptor.geojsonBorder) port.edges.push({ key: 'geojsonBorder', category: Category.json, asset: descriptor.geojsonBorder })
103
+ }
104
+
105
+ const TransformControllerDescriptorProvider = (descriptor: TransformControllerDescriptor, port: Port) => {
106
+ if (descriptor.event) port.edges.push({ key: 'event', category: Category.ts, asset: descriptor.event })
107
+ }
108
+ const orbitControllerDescriptorProvider = (descriptor: OrbitControllerDescriptor, port: Port) => {
109
+ if (descriptor.event) port.edges.push({ key: 'event', category: Category.ts, asset: descriptor.event })
110
+ }
111
+
112
+ const MeshBasicMaterialDescriptorProvider = (descriptor: MeshBasicMaterialDescriptor, port: Port) => {
113
+ if (descriptor.map) port.edges.push({ key: 'map', category: Category.texture, asset: descriptor.map })
114
+ if (descriptor.alphaMap) port.edges.push({ key: 'alphaMap', category: Category.texture, asset: descriptor.alphaMap })
115
+ if (descriptor.envMap) port.edges.push({ key: 'envMap', category: Category.texture, asset: descriptor.envMap })
116
+ if (descriptor.lightMap) port.edges.push({ key: 'lightMap', category: Category.texture, asset: descriptor.lightMap })
117
+ if (descriptor.specularMap) port.edges.push({ key: 'specularMap', category: Category.texture, asset: descriptor.specularMap })
118
+ }
119
+
120
+ const MeshPhongMaterialDescriptorProvider = (descriptor: MeshPhongMaterialDescriptor, port: Port) => {
121
+ if (descriptor.map) port.edges.push({ key: 'map', category: Category.texture, asset: descriptor.map })
122
+ if (descriptor.alphaMap) port.edges.push({ key: 'alphaMap', category: Category.texture, asset: descriptor.alphaMap })
123
+ if (descriptor.envMap) port.edges.push({ key: 'envMap', category: Category.texture, asset: descriptor.envMap })
124
+ if (descriptor.lightMap) port.edges.push({ key: 'lightMap', category: Category.texture, asset: descriptor.lightMap })
125
+ if (descriptor.specularMap) port.edges.push({ key: 'specularMap', category: Category.texture, asset: descriptor.specularMap })
126
+ if (descriptor.aoMap) port.edges.push({ key: 'aoMap', category: Category.texture, asset: descriptor.aoMap })
127
+ if (descriptor.bumpMap) port.edges.push({ key: 'bumpMap', category: Category.texture, asset: descriptor.bumpMap })
128
+ if (descriptor.emissiveMap) port.edges.push({ key: 'emissiveMap', category: Category.texture, asset: descriptor.emissiveMap })
129
+ if (descriptor.normalMap) port.edges.push({ key: 'normalMap', category: Category.texture, asset: descriptor.normalMap })
130
+ }
131
+
132
+ const MeshStandardMaterialDescriptorProvider = (descriptor: MeshStandardMaterialDescriptor, port: Port) => {
133
+ if (descriptor.map) port.edges.push({ key: 'map', category: Category.texture, asset: descriptor.map })
134
+ if (descriptor.alphaMap) port.edges.push({ key: 'alphaMap', category: Category.texture, asset: descriptor.alphaMap })
135
+ if (descriptor.envMap) port.edges.push({ key: 'envMap', category: Category.texture, asset: descriptor.envMap })
136
+ if (descriptor.lightMap) port.edges.push({ key: 'lightMap', category: Category.texture, asset: descriptor.lightMap })
137
+ if (descriptor.aoMap) port.edges.push({ key: 'aoMap', category: Category.texture, asset: descriptor.aoMap })
138
+ if (descriptor.bumpMap) port.edges.push({ key: 'bumpMap', category: Category.texture, asset: descriptor.bumpMap })
139
+ if (descriptor.emissiveMap) port.edges.push({ key: 'emissiveMap', category: Category.texture, asset: descriptor.emissiveMap })
140
+ if (descriptor.metalnessMap) port.edges.push({ key: 'metalnessMap', category: Category.texture, asset: descriptor.metalnessMap })
141
+ if (descriptor.normalMap) port.edges.push({ key: 'normalMap', category: Category.texture, asset: descriptor.normalMap })
142
+ if (descriptor.roughnessMap) port.edges.push({ key: 'roughnessMap', category: Category.texture, asset: descriptor.roughnessMap })
143
+ }
144
+
145
+ const PointsMaterialDescriptorProvider = (descriptor: PointsMaterialDescriptor, port: Port) => {
146
+ if (descriptor.map) port.edges.push({ key: 'map', category: Category.texture, asset: descriptor.map })
147
+ if (descriptor.alphaMap) port.edges.push({ key: 'alphaMap', category: Category.texture, asset: descriptor.alphaMap })
148
+ }
149
+
150
+ const SpriteMaterialDescriptorProvider = (descriptor: SpriteMaterialDescriptor, port: Port) => {
151
+ if (descriptor.map) port.edges.push({ key: 'map', category: Category.texture, asset: descriptor.map })
152
+ if (descriptor.alphaMap) port.edges.push({ key: 'alphaMap', category: Category.texture, asset: descriptor.alphaMap })
153
+ }
154
+
155
+ const ShaderMaterialDescriptorProvider = (descriptor: ShaderMaterialDescriptor, port: Port) => {
156
+ if (descriptor.shader) port.edges.push({ key: 'shader', category: Category.ts, asset: descriptor.shader })
157
+ }
158
+ const ExtrudeGeometryDescriptorProvider = (descriptor: ExtrudeGeometryDescriptor, port: Port) => {
159
+ if (descriptor.shapes) port.edges.push({ key: 'shapes', category: Category.dataset, asset: descriptor.shapes })
160
+ }
161
+ const TubeGeometryDescriptorProvider = (descriptor: TubeGeometryDescriptor, port: Port) => {
162
+ if (descriptor.track) port.edges.push({ key: 'track', category: Category.dataset, asset: descriptor.track })
163
+ }
164
+
165
+ const TextureDescriptorProvider = (descriptor: TextureDescriptor, port: Port) => {
166
+ if (descriptor.url) port.edges.push({ key: 'url', category: Category.image, asset: descriptor.url })
167
+ }
168
+
169
+ AssetGraph.register(ModelDescriptor.type, ModelDescriptorProvider)
170
+ AssetGraph.register(MeshDescriptor.type, MeshDescriptorProvider)
171
+ AssetGraph.register(InstancedMeshDescriptor.type, InstancedMeshDescriptorProvider)
172
+ AssetGraph.register(TextDescriptor.type, TextDescriptorProvider)
173
+ AssetGraph.register(PointsDescriptor.type, PointsDescriptorProvider)
174
+ AssetGraph.register(ParticleDescriptor.type, ParticleDescriptorProvider)
175
+ AssetGraph.register(SpriteDescriptor.type, SpriteDescriptorProvider)
176
+ AssetGraph.register(GeoMapDescriptor.type, GeoMapDescriptorProvider)
177
+ AssetGraph.register(OrbitControllerDescriptor.type, orbitControllerDescriptorProvider)
178
+ AssetGraph.register(TransformControllerDescriptor.type, TransformControllerDescriptorProvider)
179
+ AssetGraph.register(MeshBasicMaterialDescriptor.type, MeshBasicMaterialDescriptorProvider)
180
+ AssetGraph.register(MeshPhongMaterialDescriptor.type, MeshPhongMaterialDescriptorProvider)
181
+ AssetGraph.register(MeshStandardMaterialDescriptor.type, MeshStandardMaterialDescriptorProvider)
182
+ AssetGraph.register(PointsMaterialDescriptor.type, PointsMaterialDescriptorProvider)
183
+ AssetGraph.register(SpriteMaterialDescriptor.type, SpriteMaterialDescriptorProvider)
184
+ AssetGraph.register(ShaderMaterialDescriptor.type, ShaderMaterialDescriptorProvider)
185
+ AssetGraph.register(ExtrudeGeometryDescriptor.type, ExtrudeGeometryDescriptorProvider)
186
+ AssetGraph.register(TubeGeometryDescriptor.type, TubeGeometryDescriptorProvider)
187
+ AssetGraph.register(TextureDescriptor.type, TextureDescriptorProvider)