@shapediver/viewer.shared.types 1.15.5 → 2.0.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.
Files changed (260) hide show
  1. package/dist/implementation/data/AnimationData.d.ts +32 -0
  2. package/dist/implementation/data/AnimationData.d.ts.map +1 -0
  3. package/dist/{data → implementation/data}/AnimationData.js +8 -3
  4. package/dist/implementation/data/AnimationData.js.map +1 -0
  5. package/dist/implementation/data/BoneData.d.ts +15 -0
  6. package/dist/implementation/data/BoneData.d.ts.map +1 -0
  7. package/dist/implementation/data/BoneData.js +25 -0
  8. package/dist/implementation/data/BoneData.js.map +1 -0
  9. package/dist/{data → implementation/data}/CustomData.d.ts +4 -3
  10. package/dist/implementation/data/CustomData.d.ts.map +1 -0
  11. package/dist/{data → implementation/data}/CustomData.js +0 -0
  12. package/dist/implementation/data/CustomData.js.map +1 -0
  13. package/dist/{data → implementation/data}/GeometryData.d.ts +31 -39
  14. package/dist/implementation/data/GeometryData.d.ts.map +1 -0
  15. package/dist/{data → implementation/data}/GeometryData.js +9 -16
  16. package/dist/implementation/data/GeometryData.js.map +1 -0
  17. package/dist/{data → implementation/data}/HTMLElementAnchorData.d.ts +20 -40
  18. package/dist/implementation/data/HTMLElementAnchorData.d.ts.map +1 -0
  19. package/dist/{data → implementation/data}/HTMLElementAnchorData.js +15 -15
  20. package/dist/implementation/data/HTMLElementAnchorData.js.map +1 -0
  21. package/dist/implementation/material/AbstractMaterialData.d.ts +64 -0
  22. package/dist/implementation/material/AbstractMaterialData.d.ts.map +1 -0
  23. package/dist/{data → implementation}/material/AbstractMaterialData.js +6 -22
  24. package/dist/implementation/material/AbstractMaterialData.js.map +1 -0
  25. package/dist/{data → implementation}/material/MapData.d.ts +4 -16
  26. package/dist/implementation/material/MapData.d.ts.map +1 -0
  27. package/dist/{data → implementation}/material/MapData.js +10 -23
  28. package/dist/implementation/material/MapData.js.map +1 -0
  29. package/dist/implementation/material/MaterialSpecularGlossinessData.d.ts +27 -0
  30. package/dist/implementation/material/MaterialSpecularGlossinessData.d.ts.map +1 -0
  31. package/dist/{data → implementation}/material/MaterialSpecularGlossinessData.js +26 -25
  32. package/dist/implementation/material/MaterialSpecularGlossinessData.js.map +1 -0
  33. package/dist/implementation/material/MaterialStandardData.d.ts +75 -0
  34. package/dist/implementation/material/MaterialStandardData.d.ts.map +1 -0
  35. package/dist/{data → implementation}/material/MaterialStandardData.js +5 -4
  36. package/dist/implementation/material/MaterialStandardData.js.map +1 -0
  37. package/dist/implementation/material/MaterialUnlitData.d.ts +15 -0
  38. package/dist/implementation/material/MaterialUnlitData.d.ts.map +1 -0
  39. package/dist/{data → implementation}/material/MaterialUnlitData.js +5 -5
  40. package/dist/implementation/material/MaterialUnlitData.js.map +1 -0
  41. package/dist/implementation/material/MaterialVariantsData.d.ts +16 -0
  42. package/dist/implementation/material/MaterialVariantsData.d.ts.map +1 -0
  43. package/dist/{data → implementation}/material/MaterialVariantsData.js +0 -0
  44. package/dist/implementation/material/MaterialVariantsData.js.map +1 -0
  45. package/dist/implementation/sdtf/SDTFAttributesData.d.ts +23 -0
  46. package/dist/implementation/sdtf/SDTFAttributesData.d.ts.map +1 -0
  47. package/dist/{data → implementation}/sdtf/SDTFAttributesData.js +0 -0
  48. package/dist/implementation/sdtf/SDTFAttributesData.js.map +1 -0
  49. package/dist/implementation/sdtf/SDTFItemData.d.ts +20 -0
  50. package/dist/implementation/sdtf/SDTFItemData.d.ts.map +1 -0
  51. package/dist/{data → implementation}/sdtf/SDTFItemData.js +0 -0
  52. package/dist/implementation/sdtf/SDTFItemData.js.map +1 -0
  53. package/dist/implementation/sdtf/SDTFOverviewData.d.ts +13 -0
  54. package/dist/implementation/sdtf/SDTFOverviewData.d.ts.map +1 -0
  55. package/dist/{data/sdtf/SDTFAttributeOverview.js → implementation/sdtf/SDTFOverviewData.js} +10 -10
  56. package/dist/{data/sdtf/SDTFAttributeOverview.js.map → implementation/sdtf/SDTFOverviewData.js.map} +1 -1
  57. package/dist/index.d.ts +45 -27
  58. package/dist/index.d.ts.map +1 -1
  59. package/dist/index.js +32 -30
  60. package/dist/index.js.map +1 -1
  61. package/dist/interfaces/data/IAnimationData.d.ts +27 -0
  62. package/dist/interfaces/data/IAnimationData.d.ts.map +1 -0
  63. package/dist/{events/ISettingsEvent.js → interfaces/data/IAnimationData.js} +1 -1
  64. package/dist/interfaces/data/IAnimationData.js.map +1 -0
  65. package/dist/interfaces/data/IBoneData.d.ts +5 -0
  66. package/dist/interfaces/data/IBoneData.d.ts.map +1 -0
  67. package/dist/{events/IViewerEvent.js → interfaces/data/IBoneData.js} +1 -1
  68. package/dist/interfaces/data/IBoneData.js.map +1 -0
  69. package/dist/interfaces/data/ICustomData.d.ts +8 -0
  70. package/dist/interfaces/data/ICustomData.d.ts.map +1 -0
  71. package/dist/interfaces/data/ICustomData.js +3 -0
  72. package/dist/interfaces/data/ICustomData.js.map +1 -0
  73. package/dist/interfaces/data/IGeometryData.d.ts +61 -0
  74. package/dist/interfaces/data/IGeometryData.d.ts.map +1 -0
  75. package/dist/interfaces/data/IGeometryData.js +14 -0
  76. package/dist/interfaces/data/IGeometryData.js.map +1 -0
  77. package/dist/interfaces/data/IHTMLElementAnchorData.d.ts +49 -0
  78. package/dist/interfaces/data/IHTMLElementAnchorData.d.ts.map +1 -0
  79. package/dist/interfaces/data/IHTMLElementAnchorData.js +3 -0
  80. package/dist/interfaces/data/IHTMLElementAnchorData.js.map +1 -0
  81. package/dist/interfaces/data/material/IMapData.d.ts +31 -0
  82. package/dist/interfaces/data/material/IMapData.d.ts.map +1 -0
  83. package/dist/interfaces/data/material/IMapData.js +20 -0
  84. package/dist/interfaces/data/material/IMapData.js.map +1 -0
  85. package/dist/interfaces/data/material/IMaterialAbstractData.d.ts +59 -0
  86. package/dist/interfaces/data/material/IMaterialAbstractData.d.ts.map +1 -0
  87. package/dist/interfaces/data/material/IMaterialAbstractData.js +21 -0
  88. package/dist/interfaces/data/material/IMaterialAbstractData.js.map +1 -0
  89. package/dist/interfaces/data/material/IMaterialSpecularGlossinessDataProperties.d.ts +19 -0
  90. package/dist/interfaces/data/material/IMaterialSpecularGlossinessDataProperties.d.ts.map +1 -0
  91. package/dist/interfaces/data/material/IMaterialSpecularGlossinessDataProperties.js +4 -0
  92. package/dist/interfaces/data/material/IMaterialSpecularGlossinessDataProperties.js.map +1 -0
  93. package/dist/interfaces/data/material/IMaterialStandardData.d.ts +67 -0
  94. package/dist/interfaces/data/material/IMaterialStandardData.d.ts.map +1 -0
  95. package/dist/interfaces/data/material/IMaterialStandardData.js +4 -0
  96. package/dist/interfaces/data/material/IMaterialStandardData.js.map +1 -0
  97. package/dist/interfaces/data/material/IMaterialUnlitData.d.ts +8 -0
  98. package/dist/interfaces/data/material/IMaterialUnlitData.d.ts.map +1 -0
  99. package/dist/interfaces/data/material/IMaterialUnlitData.js +4 -0
  100. package/dist/interfaces/data/material/IMaterialUnlitData.js.map +1 -0
  101. package/dist/interfaces/data/material/IMaterialVariantsData.d.ts +9 -0
  102. package/dist/interfaces/data/material/IMaterialVariantsData.d.ts.map +1 -0
  103. package/dist/interfaces/data/material/IMaterialVariantsData.js +3 -0
  104. package/dist/interfaces/data/material/IMaterialVariantsData.js.map +1 -0
  105. package/dist/interfaces/events/EventResponseMapping.d.ts +37 -0
  106. package/dist/interfaces/events/EventResponseMapping.d.ts.map +1 -0
  107. package/dist/interfaces/events/EventResponseMapping.js +4 -0
  108. package/dist/interfaces/events/EventResponseMapping.js.map +1 -0
  109. package/dist/interfaces/events/ICameraEvent.d.ts +5 -0
  110. package/dist/interfaces/events/ICameraEvent.d.ts.map +1 -0
  111. package/dist/{events → interfaces/events}/ICameraEvent.js +0 -0
  112. package/dist/interfaces/events/ICameraEvent.js.map +1 -0
  113. package/dist/interfaces/events/IDragEvent.d.ts +8 -0
  114. package/dist/interfaces/events/IDragEvent.d.ts.map +1 -0
  115. package/dist/interfaces/events/IDragEvent.js +3 -0
  116. package/dist/interfaces/events/IDragEvent.js.map +1 -0
  117. package/dist/interfaces/events/IHoverEvent.d.ts +6 -0
  118. package/dist/interfaces/events/IHoverEvent.d.ts.map +1 -0
  119. package/dist/interfaces/events/IHoverEvent.js +3 -0
  120. package/dist/interfaces/events/IHoverEvent.js.map +1 -0
  121. package/dist/interfaces/events/IMultiSelectEvent.d.ts +7 -0
  122. package/dist/interfaces/events/IMultiSelectEvent.d.ts.map +1 -0
  123. package/dist/{events/IEnvironmentEvent.js → interfaces/events/IMultiSelectEvent.js} +1 -1
  124. package/dist/interfaces/events/IMultiSelectEvent.js.map +1 -0
  125. package/dist/interfaces/events/ISceneEvent.d.ts +9 -0
  126. package/dist/interfaces/events/ISceneEvent.d.ts.map +1 -0
  127. package/dist/{events → interfaces/events}/ISceneEvent.js +0 -0
  128. package/dist/interfaces/events/ISceneEvent.js.map +1 -0
  129. package/dist/interfaces/events/ISelectEvent.d.ts +6 -0
  130. package/dist/interfaces/events/ISelectEvent.d.ts.map +1 -0
  131. package/dist/interfaces/events/ISelectEvent.js +3 -0
  132. package/dist/interfaces/events/ISelectEvent.js.map +1 -0
  133. package/dist/{events → interfaces/events}/ISessionEvent.d.ts +0 -0
  134. package/dist/interfaces/events/ISessionEvent.d.ts.map +1 -0
  135. package/dist/{events → interfaces/events}/ISessionEvent.js +0 -0
  136. package/dist/interfaces/events/ISessionEvent.js.map +1 -0
  137. package/dist/{events → interfaces/events}/ITaskEvent.d.ts +3 -3
  138. package/dist/interfaces/events/ITaskEvent.d.ts.map +1 -0
  139. package/dist/interfaces/events/ITaskEvent.js +15 -0
  140. package/dist/interfaces/events/ITaskEvent.js.map +1 -0
  141. package/dist/interfaces/events/IViewportEvent.d.ts +5 -0
  142. package/dist/interfaces/events/IViewportEvent.d.ts.map +1 -0
  143. package/dist/interfaces/events/IViewportEvent.js +3 -0
  144. package/dist/interfaces/events/IViewportEvent.js.map +1 -0
  145. package/dist/interfaces/sdtf/ISDTFAttributeVisualizationData.d.ts +7 -0
  146. package/dist/interfaces/sdtf/ISDTFAttributeVisualizationData.d.ts.map +1 -0
  147. package/dist/interfaces/sdtf/ISDTFAttributeVisualizationData.js +3 -0
  148. package/dist/interfaces/sdtf/ISDTFAttributeVisualizationData.js.map +1 -0
  149. package/dist/interfaces/sdtf/ISDTFAttributesData.d.ts +13 -0
  150. package/dist/interfaces/sdtf/ISDTFAttributesData.d.ts.map +1 -0
  151. package/dist/interfaces/sdtf/ISDTFAttributesData.js +3 -0
  152. package/dist/interfaces/sdtf/ISDTFAttributesData.js.map +1 -0
  153. package/dist/interfaces/sdtf/ISDTFItemData.d.ts +12 -0
  154. package/dist/interfaces/sdtf/ISDTFItemData.d.ts.map +1 -0
  155. package/dist/interfaces/sdtf/ISDTFItemData.js +3 -0
  156. package/dist/interfaces/sdtf/ISDTFItemData.js.map +1 -0
  157. package/dist/interfaces/sdtf/ISDTFOverviewData.d.ts +17 -0
  158. package/dist/interfaces/sdtf/ISDTFOverviewData.d.ts.map +1 -0
  159. package/dist/interfaces/sdtf/ISDTFOverviewData.js +4 -0
  160. package/dist/interfaces/sdtf/ISDTFOverviewData.js.map +1 -0
  161. package/package.json +13 -10
  162. package/src/implementation/data/AnimationData.ts +286 -0
  163. package/src/implementation/data/BoneData.ts +31 -0
  164. package/src/implementation/data/CustomData.ts +51 -0
  165. package/src/implementation/data/GeometryData.ts +399 -0
  166. package/src/implementation/data/HTMLElementAnchorData.ts +365 -0
  167. package/src/implementation/material/AbstractMaterialData.ts +233 -0
  168. package/src/implementation/material/MapData.ts +108 -0
  169. package/src/implementation/material/MaterialSpecularGlossinessData.ts +166 -0
  170. package/src/implementation/material/MaterialStandardData.ts +478 -0
  171. package/src/implementation/material/MaterialUnlitData.ts +91 -0
  172. package/src/implementation/material/MaterialVariantsData.ts +60 -0
  173. package/src/implementation/sdtf/SDTFAttributesData.ts +118 -0
  174. package/src/implementation/sdtf/SDTFItemData.ts +64 -0
  175. package/src/implementation/sdtf/SDTFOverviewData.ts +79 -0
  176. package/src/index.ts +72 -0
  177. package/src/interfaces/data/IAnimationData.ts +42 -0
  178. package/src/interfaces/data/IBoneData.ts +9 -0
  179. package/src/interfaces/data/ICustomData.ts +15 -0
  180. package/src/interfaces/data/IGeometryData.ts +87 -0
  181. package/src/interfaces/data/IHTMLElementAnchorData.ts +66 -0
  182. package/src/interfaces/data/material/IMapData.ts +42 -0
  183. package/src/interfaces/data/material/IMaterialAbstractData.ts +76 -0
  184. package/src/interfaces/data/material/IMaterialSpecularGlossinessDataProperties.ts +29 -0
  185. package/src/interfaces/data/material/IMaterialStandardData.ts +77 -0
  186. package/src/interfaces/data/material/IMaterialUnlitData.ts +12 -0
  187. package/src/interfaces/data/material/IMaterialVariantsData.ts +19 -0
  188. package/src/interfaces/events/EventResponseMapping.ts +37 -0
  189. package/src/interfaces/events/ICameraEvent.ts +5 -0
  190. package/src/interfaces/events/IDragEvent.ts +10 -0
  191. package/src/interfaces/events/IHoverEvent.ts +7 -0
  192. package/src/interfaces/events/IMultiSelectEvent.ts +8 -0
  193. package/src/interfaces/events/ISceneEvent.ts +6 -0
  194. package/src/interfaces/events/ISelectEvent.ts +7 -0
  195. package/src/interfaces/events/ISessionEvent.ts +5 -0
  196. package/src/interfaces/events/ITaskEvent.ts +20 -0
  197. package/src/interfaces/events/IViewportEvent.ts +5 -0
  198. package/src/interfaces/sdtf/ISDTFAttributeVisualizationData.ts +7 -0
  199. package/src/interfaces/sdtf/ISDTFAttributesData.ts +27 -0
  200. package/src/interfaces/sdtf/ISDTFItemData.ts +23 -0
  201. package/src/interfaces/sdtf/ISDTFOverviewData.ts +31 -0
  202. package/tsconfig.json +17 -0
  203. package/dist/data/AnimationData.d.ts +0 -39
  204. package/dist/data/AnimationData.d.ts.map +0 -1
  205. package/dist/data/AnimationData.js.map +0 -1
  206. package/dist/data/CustomData.d.ts.map +0 -1
  207. package/dist/data/CustomData.js.map +0 -1
  208. package/dist/data/GeometryData.d.ts.map +0 -1
  209. package/dist/data/GeometryData.js.map +0 -1
  210. package/dist/data/HTMLElementAnchorData.d.ts.map +0 -1
  211. package/dist/data/HTMLElementAnchorData.js.map +0 -1
  212. package/dist/data/material/AbstractMaterialData.d.ts +0 -96
  213. package/dist/data/material/AbstractMaterialData.d.ts.map +0 -1
  214. package/dist/data/material/AbstractMaterialData.js.map +0 -1
  215. package/dist/data/material/MapData.d.ts.map +0 -1
  216. package/dist/data/material/MapData.js.map +0 -1
  217. package/dist/data/material/MaterialSpecularGlossinessData.d.ts +0 -33
  218. package/dist/data/material/MaterialSpecularGlossinessData.d.ts.map +0 -1
  219. package/dist/data/material/MaterialSpecularGlossinessData.js.map +0 -1
  220. package/dist/data/material/MaterialStandardData.d.ts +0 -105
  221. package/dist/data/material/MaterialStandardData.d.ts.map +0 -1
  222. package/dist/data/material/MaterialStandardData.js.map +0 -1
  223. package/dist/data/material/MaterialUnlitData.d.ts +0 -16
  224. package/dist/data/material/MaterialUnlitData.d.ts.map +0 -1
  225. package/dist/data/material/MaterialUnlitData.js.map +0 -1
  226. package/dist/data/material/MaterialVariantsData.d.ts +0 -15
  227. package/dist/data/material/MaterialVariantsData.d.ts.map +0 -1
  228. package/dist/data/material/MaterialVariantsData.js.map +0 -1
  229. package/dist/data/sdtf/SDTFAttributeOverview.d.ts +0 -22
  230. package/dist/data/sdtf/SDTFAttributeOverview.d.ts.map +0 -1
  231. package/dist/data/sdtf/SDTFAttributeVisualization.d.ts +0 -22
  232. package/dist/data/sdtf/SDTFAttributeVisualization.d.ts.map +0 -1
  233. package/dist/data/sdtf/SDTFAttributeVisualization.js +0 -200
  234. package/dist/data/sdtf/SDTFAttributeVisualization.js.map +0 -1
  235. package/dist/data/sdtf/SDTFAttributesData.d.ts +0 -21
  236. package/dist/data/sdtf/SDTFAttributesData.d.ts.map +0 -1
  237. package/dist/data/sdtf/SDTFAttributesData.js.map +0 -1
  238. package/dist/data/sdtf/SDTFItemData.d.ts +0 -19
  239. package/dist/data/sdtf/SDTFItemData.d.ts.map +0 -1
  240. package/dist/data/sdtf/SDTFItemData.js.map +0 -1
  241. package/dist/events/ICameraEvent.d.ts +0 -5
  242. package/dist/events/ICameraEvent.d.ts.map +0 -1
  243. package/dist/events/ICameraEvent.js.map +0 -1
  244. package/dist/events/IEnvironmentEvent.d.ts +0 -5
  245. package/dist/events/IEnvironmentEvent.d.ts.map +0 -1
  246. package/dist/events/IEnvironmentEvent.js.map +0 -1
  247. package/dist/events/ISceneEvent.d.ts +0 -9
  248. package/dist/events/ISceneEvent.d.ts.map +0 -1
  249. package/dist/events/ISceneEvent.js.map +0 -1
  250. package/dist/events/ISessionEvent.d.ts.map +0 -1
  251. package/dist/events/ISessionEvent.js.map +0 -1
  252. package/dist/events/ISettingsEvent.d.ts +0 -24
  253. package/dist/events/ISettingsEvent.d.ts.map +0 -1
  254. package/dist/events/ISettingsEvent.js.map +0 -1
  255. package/dist/events/ITaskEvent.d.ts.map +0 -1
  256. package/dist/events/ITaskEvent.js +0 -15
  257. package/dist/events/ITaskEvent.js.map +0 -1
  258. package/dist/events/IViewerEvent.d.ts +0 -5
  259. package/dist/events/IViewerEvent.d.ts.map +0 -1
  260. package/dist/events/IViewerEvent.js.map +0 -1
@@ -0,0 +1,399 @@
1
+ import { mat4, vec3 } from 'gl-matrix'
2
+ import { AbstractTreeNodeData, ITreeNode, ITreeNodeData } from '@shapediver/viewer.shared.node-tree'
3
+ import { Box, IBox } from '@shapediver/viewer.shared.math'
4
+ import { IAttributeData, IGeometryData, IPrimitiveData, PRIMITIVE_MODE } from '../../interfaces/data/IGeometryData';
5
+ import { IMaterialAbstractData } from '../../interfaces/data/material/IMaterialAbstractData';
6
+
7
+
8
+ export class AttributeData extends AbstractTreeNodeData implements IAttributeData {
9
+ // #region Properties (13)
10
+
11
+ readonly #morphAttributeData: IAttributeData[] = [];
12
+ readonly #array: Int8Array | Uint8Array | Int16Array | Uint16Array | Uint32Array | Float32Array;
13
+ readonly #byteOffset: number;
14
+ readonly #byteStride?: number;
15
+ readonly #count: number;
16
+ readonly #elementBytes: number;
17
+ readonly #itemBytes: number;
18
+ readonly #itemSize: number;
19
+ readonly #max: number[] = [];
20
+ readonly #min: number[] = [];
21
+ readonly #normalized: boolean;
22
+ readonly #sparse?: boolean;
23
+ readonly #sparseIndices?: Int8Array | Uint8Array | Int16Array | Uint16Array | Uint32Array | Float32Array;
24
+ readonly #sparseValues?: Int8Array | Uint8Array | Int16Array | Uint16Array | Uint32Array | Float32Array;
25
+
26
+ // #endregion Properties (13)
27
+
28
+ // #region Constructors (1)
29
+
30
+ /**
31
+ * Creates an attribute data object.
32
+ *
33
+ * @param _array the array of the data
34
+ * @param _itemSize the size
35
+ * @param _hasOffset notifier if there is an offset
36
+ * @param _offset the offset
37
+ * @param _stride the stride
38
+ * @param _normalized boolean if the data is normalized
39
+ */
40
+ constructor(
41
+ array: Int8Array | Uint8Array | Int16Array | Uint16Array | Uint32Array | Float32Array,
42
+ itemSize: number,
43
+ itemBytes: number,
44
+ byteOffset: number,
45
+ elementBytes: number,
46
+ normalized: boolean,
47
+ count: number,
48
+ min: number[] = [],
49
+ max: number[] = [],
50
+ byteStride?: number,
51
+ sparse?: boolean,
52
+ sparseIndices?: Int8Array | Uint8Array | Int16Array | Uint16Array | Uint32Array | Float32Array,
53
+ sparseValues?: Int8Array | Uint8Array | Int16Array | Uint16Array | Uint32Array | Float32Array,
54
+ morphAttributeData: IAttributeData[] = []
55
+ ) {
56
+ super();
57
+ this.#array = array;
58
+ this.#itemSize = itemSize;
59
+ this.#itemBytes = itemBytes;
60
+ this.#byteOffset = byteOffset;
61
+ this.#elementBytes = elementBytes;
62
+ this.#normalized = normalized;
63
+ this.#count = count;
64
+ this.#min = min;
65
+ this.#max = max;
66
+ this.#byteStride = byteStride;
67
+ this.#sparse = sparse;
68
+ this.#sparseIndices = sparseIndices;
69
+ this.#sparseValues = sparseValues;
70
+ this.#morphAttributeData = morphAttributeData;
71
+ }
72
+
73
+ // #endregion Constructors (1)
74
+
75
+ // #region Public Accessors (13)
76
+
77
+ public get array(): Int8Array | Uint8Array | Int16Array | Uint16Array | Uint32Array | Float32Array {
78
+ return this.#array;
79
+ }
80
+
81
+ public get byteOffset(): number {
82
+ return this.#byteOffset;
83
+ }
84
+
85
+ public get byteStride(): number | undefined {
86
+ return this.#byteStride;
87
+ }
88
+
89
+ public get count(): number {
90
+ return this.#count;
91
+ }
92
+
93
+ public get elementBytes(): number {
94
+ return this.#elementBytes;
95
+ }
96
+
97
+ public get itemBytes(): number {
98
+ return this.#itemBytes;
99
+ }
100
+
101
+ public get itemSize(): number {
102
+ return this.#itemSize;
103
+ }
104
+
105
+ public get max(): number[] {
106
+ return this.#max;
107
+ }
108
+
109
+ public get min(): number[] {
110
+ return this.#min;
111
+ }
112
+
113
+ public get morphAttributeData(): IAttributeData[] {
114
+ return this.#morphAttributeData;
115
+ }
116
+
117
+ public get normalized(): boolean {
118
+ return this.#normalized;
119
+ }
120
+
121
+ public get sparse(): boolean | undefined {
122
+ return this.#sparse;
123
+ }
124
+
125
+ public get sparseIndices(): Int8Array | Uint8Array | Int16Array | Uint16Array | Uint32Array | Float32Array | undefined {
126
+ return this.#sparseIndices;
127
+ }
128
+
129
+ public get sparseValues(): Int8Array | Uint8Array | Int16Array | Uint16Array | Uint32Array | Float32Array | undefined {
130
+ return this.#sparseValues;
131
+ }
132
+
133
+ // #endregion Public Accessors (13)
134
+
135
+ // #region Public Methods (1)
136
+
137
+ /**
138
+ * Clones the attribute data.
139
+ */
140
+ public clone(): IAttributeData {
141
+ let array = this.#array.slice(0, this.#array.length);
142
+ array.set(this.#array);
143
+ return new AttributeData(
144
+ array,
145
+ this.#itemSize,
146
+ this.#itemBytes,
147
+ this.#byteOffset,
148
+ this.#elementBytes,
149
+ this.#normalized,
150
+ this.#count,
151
+ this.#min,
152
+ this.#max,
153
+ this.#byteStride,
154
+ this.#sparse,
155
+ this.#sparseIndices,
156
+ this.#sparseValues,
157
+ this.#morphAttributeData
158
+ );
159
+ }
160
+
161
+ // #endregion Public Methods (1)
162
+ }
163
+
164
+ export class PrimitiveData extends AbstractTreeNodeData implements IPrimitiveData {
165
+ // #region Properties (5)
166
+
167
+ readonly #attributes: {
168
+ [key: string]: IAttributeData
169
+ } = {};
170
+ readonly #mode: PRIMITIVE_MODE = PRIMITIVE_MODE.TRIANGLES;
171
+
172
+ #boundingBox: Box = new Box();
173
+ #indices: IAttributeData | null = null;
174
+ #material: IMaterialAbstractData | null = null;
175
+ #standardMaterial: IMaterialAbstractData | null = null;
176
+ #effectMaterials: { material: IMaterialAbstractData, token: string }[] = [];
177
+ #materialVariants: { material: IMaterialAbstractData, variant: number }[] = [];
178
+ #attributeMaterial: IMaterialAbstractData | null = null;
179
+
180
+ // #endregion Properties (5)
181
+
182
+ // #region Constructors (1)
183
+
184
+ /**
185
+ * Creates a primitive data object.
186
+ *
187
+ * @param _attributes the attributes as key-value pairs
188
+ * @param _indices the indices
189
+ */
190
+ constructor(
191
+ attributes: {
192
+ [key: string]: IAttributeData
193
+ } = {},
194
+ mode: PRIMITIVE_MODE = PRIMITIVE_MODE.TRIANGLES,
195
+ indices: IAttributeData | null = null,
196
+ material: IMaterialAbstractData | null = null,
197
+ attributeMaterial: IMaterialAbstractData | null = null,
198
+ ) {
199
+ super();
200
+ this.#attributes = attributes;
201
+ this.#mode = mode;
202
+
203
+ this.#indices = indices;
204
+ this.#material = material;
205
+ this.#standardMaterial = material;
206
+ this.#attributeMaterial = attributeMaterial;
207
+
208
+ if (this.#attributes['POSITION']) {
209
+ if (this.#attributes['POSITION'].min.length === 3 && this.#attributes['POSITION'].max.length === 3) {
210
+ this.#boundingBox = new Box(vec3.fromValues(this.#attributes['POSITION'].min[0], this.#attributes['POSITION'].min[1], this.#attributes['POSITION'].min[2]), vec3.fromValues(this.#attributes['POSITION'].max[0], this.#attributes['POSITION'].max[1], this.#attributes['POSITION'].max[2]));
211
+ } else {
212
+ this.#boundingBox.setFromAttributeArray(this.#attributes['POSITION'].array);
213
+ }
214
+ }
215
+ }
216
+
217
+ // #endregion Constructors (1)
218
+
219
+ // #region Public Accessors (7)
220
+
221
+ public get attributes(): {
222
+ [key: string]: IAttributeData
223
+ } {
224
+ return this.#attributes;
225
+ }
226
+
227
+ public get boundingBox(): IBox {
228
+ return this.#boundingBox;
229
+ }
230
+
231
+ public get indices(): IAttributeData | null {
232
+ return this.#indices;
233
+ }
234
+
235
+ public set indices(value: IAttributeData | null) {
236
+ this.#indices = value
237
+ }
238
+
239
+ public get standardMaterial(): IMaterialAbstractData | null {
240
+ return this.#standardMaterial;
241
+ }
242
+
243
+ public set standardMaterial(value: IMaterialAbstractData | null) {
244
+ this.#standardMaterial = value;
245
+ }
246
+
247
+ public get material(): IMaterialAbstractData | null {
248
+ return this.#material;
249
+ }
250
+
251
+ public set material(value: IMaterialAbstractData | null) {
252
+ this.#material = value;
253
+ }
254
+
255
+ public get effectMaterials(): { material: IMaterialAbstractData, token: string }[] {
256
+ return this.#effectMaterials;
257
+ }
258
+
259
+ public get materialVariants(): { material: IMaterialAbstractData, variant: number }[] {
260
+ return this.#materialVariants;
261
+ }
262
+
263
+ public get attributeMaterial(): IMaterialAbstractData | null {
264
+ return this.#attributeMaterial;
265
+ }
266
+
267
+ public set attributeMaterial(value: IMaterialAbstractData | null) {
268
+ this.#attributeMaterial = value;
269
+ }
270
+
271
+ public get mode(): PRIMITIVE_MODE {
272
+ return this.#mode;
273
+ }
274
+
275
+ // #endregion Public Accessors (7)
276
+
277
+ // #region Public Methods (1)
278
+
279
+ /**
280
+ * Clones the primitive data.
281
+ */
282
+ public clone(): IPrimitiveData {
283
+ let attributes: {
284
+ [key: string]: IAttributeData
285
+ } = {};
286
+ for (let attribute in this.#attributes)
287
+ attributes[attribute] = <IAttributeData>this.#attributes[attribute].clone();
288
+ return new PrimitiveData(attributes, this.#mode, <AttributeData>this.#indices?.clone(), <IMaterialAbstractData>this.#material?.clone(), <IMaterialAbstractData>this.#attributeMaterial?.clone());
289
+ }
290
+
291
+ // #endregion Public Methods (1)
292
+ }
293
+
294
+ export class GeometryData extends AbstractTreeNodeData implements IGeometryData {
295
+ // #region Properties (4)
296
+
297
+ readonly #matrix: mat4;
298
+ readonly #primitive: IPrimitiveData;
299
+
300
+ #boundingBox: IBox = new Box();
301
+ #renderOrder: number = 0;
302
+ #morphWeights: number[] = [];
303
+ #bones: ITreeNode[] = [];
304
+ #boneInverses: mat4[] = [];
305
+
306
+ // #endregion Properties (4)
307
+
308
+ // #region Constructors (1)
309
+
310
+ /**
311
+ * Creates a geometry data object.
312
+ *
313
+ * @param _primitive the primitive
314
+ * @param _matrix the matrix to apply
315
+ * @param id the id
316
+ */
317
+ constructor(
318
+ primitive: IPrimitiveData,
319
+ matrix: mat4 = mat4.create(),
320
+ id?: string,
321
+ morphWeights: number[] = [],
322
+ bones: ITreeNode[] = [],
323
+ boneInverses: mat4[] = []
324
+ ) {
325
+ super(id);
326
+ this.#primitive = primitive;
327
+ this.#matrix = matrix;
328
+ this.#boundingBox = this.primitive.boundingBox.clone();
329
+ this.#morphWeights = morphWeights;
330
+ this.#bones = bones;
331
+ this.#boneInverses = boneInverses;
332
+ }
333
+
334
+ // #endregion Constructors (1)
335
+
336
+ // #region Public Accessors (5)
337
+
338
+ public get boundingBox(): IBox {
339
+ return this.#boundingBox;
340
+ }
341
+
342
+ public get matrix(): mat4 {
343
+ return this.#matrix;
344
+ }
345
+
346
+ public get primitive(): IPrimitiveData {
347
+ return this.#primitive;
348
+ }
349
+
350
+ public get renderOrder(): number {
351
+ return this.#renderOrder;
352
+ }
353
+
354
+ public set renderOrder(value: number) {
355
+ this.#renderOrder = value;
356
+ }
357
+
358
+ public get morphWeights(): number[] {
359
+ return this.#morphWeights;
360
+ }
361
+
362
+ public set morphWeights(value: number[]) {
363
+ this.#morphWeights = value
364
+ }
365
+
366
+ public get bones(): ITreeNode[] {
367
+ return this.#bones;
368
+ }
369
+
370
+ public set bones(value: ITreeNode[]) {
371
+ this.#bones = value
372
+ }
373
+
374
+ public get boneInverses(): mat4[] {
375
+ return this.#boneInverses;
376
+ }
377
+
378
+ public set boneInverses(value: mat4[]) {
379
+ this.#boneInverses = value
380
+ }
381
+
382
+ // #endregion Public Accessors (5)
383
+
384
+ // #region Public Methods (2)
385
+
386
+ /**
387
+ * Clones the scene graph data.
388
+ */
389
+ public clone(): IGeometryData {
390
+ return new GeometryData(this.#primitive.clone(), mat4.clone(this.matrix), this.id, this.#morphWeights, this.#bones, this.#boneInverses);
391
+ }
392
+
393
+ public intersect(origin: vec3, direction: vec3): number | null {
394
+ if (this.primitive.mode !== PRIMITIVE_MODE.TRIANGLES) return null;
395
+ return this.boundingBox.intersect(origin, direction);
396
+ }
397
+
398
+ // #endregion Public Methods (2)
399
+ }