@woosh/meep-engine 2.85.9 → 2.85.11

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 (48) hide show
  1. package/package.json +1 -1
  2. package/src/core/geom/Quaternion.d.ts.map +1 -1
  3. package/src/core/geom/Quaternion.js +3 -0
  4. package/src/core/geom/Vector3.d.ts.map +1 -1
  5. package/src/core/geom/Vector3.js +9 -4
  6. package/src/engine/EngineHarness.d.ts +3 -1
  7. package/src/engine/EngineHarness.d.ts.map +1 -1
  8. package/src/engine/EngineHarness.js +5 -3
  9. package/src/engine/animation/curve/Keyframe.d.ts.map +1 -1
  10. package/src/engine/animation/curve/Keyframe.js +14 -0
  11. package/src/engine/animation/curve/ecd_bind_animation_curve.d.ts +14 -4
  12. package/src/engine/animation/curve/ecd_bind_animation_curve.d.ts.map +1 -1
  13. package/src/engine/animation/curve/ecd_bind_animation_curve.js +309 -2
  14. package/src/engine/animation/curve/prototypeGLTF.d.ts +2 -0
  15. package/src/engine/animation/curve/prototypeGLTF.d.ts.map +1 -0
  16. package/src/engine/animation/curve/prototypeGLTF.js +81 -0
  17. package/src/engine/asset/Asset.d.ts.map +1 -1
  18. package/src/engine/asset/Asset.js +16 -0
  19. package/src/engine/asset/STATIC_ASSET_CACHE.d.ts +7 -0
  20. package/src/engine/asset/STATIC_ASSET_CACHE.d.ts.map +1 -0
  21. package/src/engine/asset/STATIC_ASSET_CACHE.js +19 -0
  22. package/src/engine/ecs/EntityManager.d.ts.map +1 -1
  23. package/src/engine/ecs/EntityManager.js +7 -2
  24. package/src/engine/graphics/ecs/mesh-v2/aggregate/SGMesh.d.ts.map +1 -1
  25. package/src/engine/graphics/ecs/mesh-v2/aggregate/SGMesh.js +13 -4
  26. package/src/engine/graphics/ecs/mesh-v2/aggregate/SGMeshAnimationController.d.ts +19 -0
  27. package/src/engine/graphics/ecs/mesh-v2/aggregate/SGMeshAnimationController.d.ts.map +1 -0
  28. package/src/engine/graphics/ecs/mesh-v2/aggregate/SGMeshAnimationController.js +23 -0
  29. package/src/engine/graphics/ecs/mesh-v2/aggregate/SGMeshAnimationControllerSystem.d.ts +24 -0
  30. package/src/engine/graphics/ecs/mesh-v2/aggregate/SGMeshAnimationControllerSystem.d.ts.map +1 -0
  31. package/src/engine/graphics/ecs/mesh-v2/aggregate/SGMeshAnimationControllerSystem.js +132 -0
  32. package/src/engine/graphics/ecs/mesh-v2/aggregate/SGMeshSystem.d.ts.map +1 -1
  33. package/src/engine/graphics/ecs/mesh-v2/aggregate/SGMeshSystem.js +34 -24
  34. package/src/engine/graphics/ecs/mesh-v2/aggregate/animation/AnimatedValueBinding.d.ts +27 -0
  35. package/src/engine/graphics/ecs/mesh-v2/aggregate/animation/AnimatedValueBinding.d.ts.map +1 -0
  36. package/src/engine/graphics/ecs/mesh-v2/aggregate/animation/AnimatedValueBinding.js +61 -0
  37. package/src/engine/graphics/ecs/mesh-v2/aggregate/animation/BoundQuaternionWriter.d.ts +7 -0
  38. package/src/engine/graphics/ecs/mesh-v2/aggregate/animation/BoundQuaternionWriter.d.ts.map +1 -0
  39. package/src/engine/graphics/ecs/mesh-v2/aggregate/animation/BoundQuaternionWriter.js +20 -0
  40. package/src/engine/graphics/ecs/mesh-v2/aggregate/animation/BoundValueWriter.d.ts +8 -0
  41. package/src/engine/graphics/ecs/mesh-v2/aggregate/animation/BoundValueWriter.d.ts.map +1 -0
  42. package/src/engine/graphics/ecs/mesh-v2/aggregate/animation/BoundValueWriter.js +10 -0
  43. package/src/engine/graphics/ecs/mesh-v2/aggregate/animation/BoundVector3Writer.d.ts +7 -0
  44. package/src/engine/graphics/ecs/mesh-v2/aggregate/animation/BoundVector3Writer.d.ts.map +1 -0
  45. package/src/engine/graphics/ecs/mesh-v2/aggregate/animation/BoundVector3Writer.js +19 -0
  46. package/src/engine/graphics/texture/sampler/Sampler2D.d.ts +4 -0
  47. package/src/generation/filtering/numeric/CellFilterCache.d.ts +0 -1
  48. package/src/generation/filtering/numeric/CellFilterCache.d.ts.map +1 -1
package/package.json CHANGED
@@ -5,7 +5,7 @@
5
5
  "description": "Fully featured ECS game engine written in JavaScript",
6
6
  "type": "module",
7
7
  "author": "Alexander Goldring",
8
- "version": "2.85.9",
8
+ "version": "2.85.11",
9
9
  "main": "build/meep.module.js",
10
10
  "module": "build/meep.module.js",
11
11
  "exports": {
@@ -1 +1 @@
1
- {"version":3,"file":"Quaternion.d.ts","sourceRoot":"","sources":["../../../../src/core/geom/Quaternion.js"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Quaternion.d.ts","sourceRoot":"","sources":["../../../../src/core/geom/Quaternion.js"],"names":[],"mappings":"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"}
@@ -1565,6 +1565,9 @@ class Quaternion {
1565
1565
  }
1566
1566
  }
1567
1567
 
1568
+ Quaternion.prototype.fromArray = Quaternion.prototype.readFromArray;
1569
+ Quaternion.prototype.toArray = Quaternion.prototype.writeToArray;
1570
+
1568
1571
  /**
1569
1572
  * @readonly
1570
1573
  * @type {Quaternion}
@@ -1 +1 @@
1
- {"version":3,"file":"Vector3.d.ts","sourceRoot":"","sources":["../../../../src/core/geom/Vector3.js"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Vector3.d.ts","sourceRoot":"","sources":["../../../../src/core/geom/Vector3.js"],"names":[],"mappings":"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"}
@@ -564,9 +564,9 @@ class Vector3 {
564
564
 
565
565
  const w = 1 / (m4[3] * x + m4[7] * y + m4[11] * z + m4[15]);
566
566
 
567
- const _x = (m4[0] * x + m4[4] * y + m4[8] * z + m4[12])* w;
568
- const _y = (m4[1] * x + m4[5] * y + m4[9] * z + m4[13])* w;
569
- const _z = (m4[2] * x + m4[6] * y + m4[10] * z + m4[14])* w;
567
+ const _x = (m4[0] * x + m4[4] * y + m4[8] * z + m4[12]) * w;
568
+ const _y = (m4[1] * x + m4[5] * y + m4[9] * z + m4[13]) * w;
569
+ const _z = (m4[2] * x + m4[6] * y + m4[10] * z + m4[14]) * w;
570
570
 
571
571
  this.set(_x, _y, _z);
572
572
  }
@@ -575,7 +575,7 @@ class Vector3 {
575
575
  * Assume current vector holds a direction, transform using a matrix to produce a new directional unit vector
576
576
  * @param {ArrayLike<number>|number[]|Float32Array} m4
577
577
  */
578
- applyDirectionMatrix4(m4){
578
+ applyDirectionMatrix4(m4) {
579
579
  const x = this.x, y = this.y, z = this.z;
580
580
 
581
581
  const _x = m4[0] * x + m4[4] * y + m4[8] * z;
@@ -967,7 +967,12 @@ class Vector3 {
967
967
  }
968
968
  }
969
969
 
970
+ // Aliases
971
+
970
972
  Vector3.prototype.lengthSq = Vector3.prototype.lengthSqr;
973
+ Vector3.prototype.fromArray = Vector3.prototype.readFromArray;
974
+ Vector3.prototype.toArray = Vector3.prototype.writeToArray;
975
+
971
976
 
972
977
  /**
973
978
  * @readonly
@@ -57,11 +57,13 @@ export class EngineHarness {
57
57
  * @param {Engine} param.engine
58
58
  * @param {EntityComponentDataset} [param.ecd]
59
59
  * @param {number} [param.shadowmapResolution]
60
+ * @param {boolean} [param.castShadow]
60
61
  */
61
- static buildLights({ engine, ecd, shadowmapResolution }: {
62
+ static buildLights({ engine, ecd, shadowmapResolution, castShadow }: {
62
63
  engine: Engine;
63
64
  ecd?: EntityComponentDataset;
64
65
  shadowmapResolution?: number;
66
+ castShadow?: boolean;
65
67
  }): Promise<void>;
66
68
  /**
67
69
  * @param {Object} param
@@ -1 +1 @@
1
- {"version":3,"file":"EngineHarness.d.ts","sourceRoot":"","sources":["../../../src/engine/EngineHarness.js"],"names":[],"mappings":"AAsDA;IAmBI;;;OAGG;IACH,6BAFW,MAAM,QAYhB;IAkED;;;;;;;;;;;;;OAaG;IACH;QAZyB,MAAM,EAApB,MAAM;QACyB,GAAG;QAClB,MAAM,GAAtB,OAAO;QACQ,QAAQ,GAAvB,MAAM;QACS,KAAK,GAApB,MAAM;QACS,GAAG,GAAlB,MAAM;QACU,QAAQ,GAAxB,OAAO;QACQ,WAAW,GAA1B,MAAM;QACS,WAAW,GAA1B,MAAM;QACS,WAAW,GAA1B,MAAM;QACJ,MAAM,CA+DlB;IAED;;;;;;;;;;;;;;;;;;;;OAoBG;IACH,oQAnBW,MAAM,iBAmFhB;IAGD;;;;;OAKG;IACH;QAJyB,MAAM,EAApB,MAAM;QACyB,GAAG;QACnB,mBAAmB,GAAlC,MAAM;sBAoDhB;IAED;;;;;;;OAOG;IACH;QAN0B,YAAY,GAA3B,MAAM;QACQ,MAAM,EAApB,MAAM;QACS,WAAW,GAA1B,MAAM;QACyB,GAAG;QAChC,MAAM,CA2ClB;IAGD;;;;;;;;;;;OAWG;IACH,mGAVW,MAAM,GAQJ,OAAO,CA0DnB;IAxbG;;;OAGG;IACH,QAFU,MAAM,CAEiC;IAMjD;;;OAGG;IACH,YAFU,eAAQ,IAAI,CAET;IAmBjB;;;;OAIG;IACH,8DAJmB,mBAAmB,UAAQ,MAAM,WAEvC,QAAQ,MAAM,CAAC,CA2D3B;CA0VJ;;IAID;;;OAGG;IACH,uCAMC;;mBAjfkB,aAAa;oCACI,0BAA0B;oBAX1C,yBAAyB;mBAK1B,iBAAiB;oBAEhB,8BAA8B"}
1
+ {"version":3,"file":"EngineHarness.d.ts","sourceRoot":"","sources":["../../../src/engine/EngineHarness.js"],"names":[],"mappings":"AAsDA;IAmBI;;;OAGG;IACH,6BAFW,MAAM,QAYhB;IAkED;;;;;;;;;;;;;OAaG;IACH;QAZyB,MAAM,EAApB,MAAM;QACyB,GAAG;QAClB,MAAM,GAAtB,OAAO;QACQ,QAAQ,GAAvB,MAAM;QACS,KAAK,GAApB,MAAM;QACS,GAAG,GAAlB,MAAM;QACU,QAAQ,GAAxB,OAAO;QACQ,WAAW,GAA1B,MAAM;QACS,WAAW,GAA1B,MAAM;QACS,WAAW,GAA1B,MAAM;QACJ,MAAM,CA+DlB;IAED;;;;;;;;;;;;;;;;;;;;OAoBG;IACH,oQAnBW,MAAM,iBAmFhB;IAGD;;;;;;OAMG;IACH;QALyB,MAAM,EAApB,MAAM;QACyB,GAAG;QACnB,mBAAmB,GAAlC,MAAM;QACU,UAAU,GAA1B,OAAO;sBAqDjB;IAED;;;;;;;OAOG;IACH;QAN0B,YAAY,GAA3B,MAAM;QACQ,MAAM,EAApB,MAAM;QACS,WAAW,GAA1B,MAAM;QACyB,GAAG;QAChC,MAAM,CA2ClB;IAGD;;;;;;;;;;;OAWG;IACH,mGAVW,MAAM,GAQJ,OAAO,CA0DnB;IA1bG;;;OAGG;IACH,QAFU,MAAM,CAEiC;IAMjD;;;OAGG;IACH,YAFU,eAAQ,IAAI,CAET;IAmBjB;;;;OAIG;IACH,8DAJmB,mBAAmB,UAAQ,MAAM,WAEvC,QAAQ,MAAM,CAAC,CA2D3B;CA4VJ;;IAID;;;OAGG;IACH,uCAMC;;mBAnfkB,aAAa;oCACI,0BAA0B;oBAX1C,yBAAyB;mBAK1B,iBAAiB;oBAEhB,8BAA8B"}
@@ -174,7 +174,7 @@ export class EngineHarness {
174
174
  pitch = 1.4,
175
175
  yaw = 0,
176
176
  autoClip = false,
177
- distanceMin = 0,
177
+ distanceMin = 0.01,
178
178
  distanceMax = 1000,
179
179
  fieldOfView = 45
180
180
  }
@@ -321,11 +321,13 @@ export class EngineHarness {
321
321
  * @param {Engine} param.engine
322
322
  * @param {EntityComponentDataset} [param.ecd]
323
323
  * @param {number} [param.shadowmapResolution]
324
+ * @param {boolean} [param.castShadow]
324
325
  */
325
326
  static async buildLights({
326
327
  engine,
327
328
  ecd = engine.entityManager.dataset,
328
- shadowmapResolution = 1024
329
+ shadowmapResolution = 1024,
330
+ castShadow = true
329
331
  }) {
330
332
  const em = engine.entityManager;
331
333
 
@@ -343,7 +345,7 @@ export class EngineHarness {
343
345
  key.type.set(Light.Type.DIRECTION);
344
346
  key.color.setRGB(1, 1, 1);
345
347
  key.intensity.set(0.8);
346
- key.castShadow.set(true);
348
+ key.castShadow.set(castShadow);
347
349
 
348
350
  const transform = new Transform();
349
351
  transform.position.set(30, 70, 30);
@@ -1 +1 @@
1
- {"version":3,"file":"Keyframe.d.ts","sourceRoot":"","sources":["../../../../../src/engine/animation/curve/Keyframe.js"],"names":[],"mappings":"AAAA;IA2BI;;;;;;;OAOG;IACH,kBANW,MAAM,SACN,MAAM,cACN,MAAM,eACN,MAAM,GACL,QAAQ,CAWnB;IA1CG;;;OAGG;IACH,OAFU,MAAM,CAEF;IAEd;;;OAGG;IACH,MAFU,MAAM,CAEH;IAEb;;;OAGG;IACH,WAFU,MAAM,CAEE;IAElB;;;OAGG;IACH,YAFU,MAAM,CAEG;IAsBvB;;;;;MAOC;IAED;;;;;aAQC;CAEJ"}
1
+ {"version":3,"file":"Keyframe.d.ts","sourceRoot":"","sources":["../../../../../src/engine/animation/curve/Keyframe.js"],"names":[],"mappings":"AAEA;IA2BI;;;;;;;OAOG;IACH,kBANW,MAAM,SACN,MAAM,cACN,MAAM,eACN,MAAM,GACL,QAAQ,CAuBnB;IAtDG;;;OAGG;IACH,OAFU,MAAM,CAEF;IAEd;;;OAGG;IACH,MAFU,MAAM,CAEH;IAEb;;;OAGG;IACH,WAFU,MAAM,CAEE;IAElB;;;OAGG;IACH,YAFU,MAAM,CAEG;IAkCvB;;;;;MAOC;IAED;;;;;aAQC;CAEJ"}
@@ -1,3 +1,5 @@
1
+ import { assert } from "../../../core/assert.js";
2
+
1
3
  export class Keyframe {
2
4
  constructor() {
3
5
  /**
@@ -34,6 +36,18 @@ export class Keyframe {
34
36
  * @return {Keyframe}
35
37
  */
36
38
  static from(time, value, inTangent = 0, outTangent = 0) {
39
+ assert.isNumber(time,'time');
40
+ assert.notNaN(time,'time');
41
+
42
+ assert.isNumber(value,'value');
43
+ assert.notNaN(value,'value');
44
+
45
+ assert.isNumber(inTangent,'inTangent');
46
+ assert.notNaN(inTangent,'inTangent');
47
+
48
+ assert.isNumber(outTangent,'outTangent');
49
+ assert.notNaN(outTangent,'outTangent');
50
+
37
51
  const r = new Keyframe();
38
52
 
39
53
  r.time = time;
@@ -1,8 +1,18 @@
1
1
  /**
2
- * Given a root node, bind animation curve to it
2
+ * Three.js clip to internal representation
3
3
  * @param {EntityNode} node
4
- * @param {string} path
5
- * @param {AnimationCurve} curve
4
+ * @param {AnimationClip} clip
6
5
  */
7
- export function entity_node_bind_animation_curve(node: EntityNode, path: string, curve: AnimationCurve): void;
6
+ export function convert_three_clip(node: EntityNode, clip: AnimationClip): EntityNodeAnimationClip;
7
+ export class EntityNodeAnimationClip {
8
+ name: string;
9
+ /**
10
+ *
11
+ * @type {AnimatedValueBinding[]}
12
+ */
13
+ tracks: AnimatedValueBinding[];
14
+ duration: number;
15
+ writeAt(time: any): void;
16
+ }
17
+ import { AnimatedValueBinding } from "../../graphics/ecs/mesh-v2/aggregate/animation/AnimatedValueBinding.js";
8
18
  //# sourceMappingURL=ecd_bind_animation_curve.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ecd_bind_animation_curve.d.ts","sourceRoot":"","sources":["../../../../../src/engine/animation/curve/ecd_bind_animation_curve.js"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,yEAHW,MAAM,+BAKhB"}
1
+ {"version":3,"file":"ecd_bind_animation_curve.d.ts","sourceRoot":"","sources":["../../../../../src/engine/animation/curve/ecd_bind_animation_curve.js"],"names":[],"mappings":"AAySA;;;;GAIG;AACH,mGAaC;AApCD;IACI,aAAS;IACT;;;OAGG;IACH,QAFU,oBAAoB,EAAE,CAErB;IACX,iBAAY;IAEZ,yBAMC;CACJ;qCAtSoC,wEAAwE"}
@@ -1,9 +1,316 @@
1
+ import Name from "../../../../../model/game/ecs/component/Name.js";
2
+ import { AnimatedValueBinding } from "../../graphics/ecs/mesh-v2/aggregate/animation/AnimatedValueBinding.js";
3
+ import { BoundQuaternionWriter } from "../../graphics/ecs/mesh-v2/aggregate/animation/BoundQuaternionWriter.js";
4
+ import { BoundValueWriter } from "../../graphics/ecs/mesh-v2/aggregate/animation/BoundValueWriter.js";
5
+ import { BoundVector3Writer } from "../../graphics/ecs/mesh-v2/aggregate/animation/BoundVector3Writer.js";
6
+ import { AnimationCurve } from "./AnimationCurve.js";
7
+ import { Keyframe } from "./Keyframe.js";
8
+
9
+ /**
10
+ *
11
+ * @param {EntityNode} root
12
+ * @param {string[]} path_parts
13
+ */
14
+ function entity_node_resolve_path(root, path_parts) {
15
+
16
+ let node = root;
17
+
18
+ main:for (let i = 0; i < path_parts.length; i++) {
19
+
20
+ const part = path_parts[i];
21
+
22
+ const children = node.children;
23
+
24
+ const child_count = children.length;
25
+
26
+
27
+ for (let j = 0; j < child_count; j++) {
28
+ /**
29
+ * @type {EntityNode}
30
+ */
31
+ const child = children[j];
32
+
33
+ const name = child.entity.getComponentSafe(Name);
34
+
35
+ if (name.getValue() === part) {
36
+ node = child;
37
+ continue main;
38
+ }
39
+ }
40
+
41
+ throw new Error(`Child '${part}' not found, at index ${i} of [${path_parts.join(', ')}]`);
42
+ }
43
+
44
+ return node;
45
+ }
46
+
1
47
  /**
2
- * Given a root node, bind animation curve to it
48
+ *
3
49
  * @param {EntityNode} node
4
50
  * @param {string} path
51
+ * @returns {BoundValueWriter}
52
+ */
53
+ function bind_property_writer(node, path) {
54
+ const path_parts = path.split('.');
55
+
56
+ const property_name = path_parts[path_parts.length - 1];
57
+
58
+ const parent = entity_node_resolve_path(node, path_parts.slice(0, path_parts.length - 1));
59
+
60
+ let writer;
61
+
62
+ switch (property_name) {
63
+ case "position":
64
+ writer = new BoundVector3Writer(parent.transform.position);
65
+ break;
66
+ case "quaternion":
67
+ writer = new BoundQuaternionWriter(parent.transform.rotation);
68
+ break;
69
+ case "scale":
70
+ writer = new BoundVector3Writer(parent.transform.scale);
71
+ break;
72
+ default:
73
+ console.log(`Unsupported property name: ${property_name}`);
74
+ // NO-OP
75
+ writer = new BoundValueWriter();
76
+ }
77
+
78
+ return writer;
79
+ }
80
+
81
+ const INTERPOLATION = {
82
+ DISCRETE: 0,
83
+ LINEAR: 1,
84
+ CUBIC_TANGENTS: 2
85
+ };
86
+
87
+ /**
88
+ *
89
+ * @param {THREE.KeyframeTrack} track
90
+ */
91
+ function track_to_interpolation(track) {
92
+ const name = track.createInterpolant.name;
93
+
94
+ switch (name) {
95
+ case "InterpolantFactoryMethodDiscrete":
96
+ return INTERPOLATION.DISCRETE;
97
+ case "InterpolantFactoryMethodLinear":
98
+ return INTERPOLATION.LINEAR;
99
+ case "InterpolantFactoryMethodGLTFCubicSpline":
100
+ return INTERPOLATION.CUBIC_TANGENTS;
101
+
102
+ default:
103
+
104
+ if (track.createInterpolant.isInterpolantFactoryMethodGLTFCubicSpline === true) {
105
+ // second attempt
106
+ return INTERPOLATION.CUBIC_TANGENTS;
107
+ }
108
+
109
+ // unsupported, default to linear
110
+ console.warn(`Unsupported interpolation type, defaulting to linear`);
111
+ return INTERPOLATION.LINEAR;
112
+ }
113
+ }
114
+
115
+ /**
116
+ *
117
+ * @param {THREE.KeyframeTrack} track
118
+ * @returns {AnimationCurve[]}
119
+ */
120
+ function convert_three_track_to_curves(track) {
121
+
122
+ const values = track.values;
123
+ const times = track.times;
124
+
125
+ const key_count = times.length;
126
+
127
+ const curves = [];
128
+
129
+ // figure out interpolation type
130
+ const interpolation = track_to_interpolation(track);
131
+
132
+ const values_per_key = values.length / key_count;
133
+
134
+ const component_count = interpolation === INTERPOLATION.CUBIC_TANGENTS ? values_per_key / 3 : values_per_key;
135
+
136
+ for (let component_index = 0; component_index < component_count; component_index++) {
137
+
138
+ const curve = new AnimationCurve();
139
+
140
+ component_curve_from_track(
141
+ curve,
142
+ interpolation,
143
+ values,
144
+ times,
145
+ component_count,
146
+ component_index
147
+ );
148
+
149
+ curves.push(curve);
150
+
151
+ }
152
+ return curves;
153
+ }
154
+
155
+ /**
156
+ *
157
+ * @param {AnimationCurve} curve
158
+ * @param {number[]} values
159
+ * @param {number[]} times
160
+ * @param {number} component_count
161
+ * @param {number} component_index
162
+ */
163
+ function curve_from_track_linear(curve, values, times, component_count, component_index) {
164
+
165
+ const key_count = times.length;
166
+
167
+ for (let k = 0; k < key_count; k++) {
168
+ const value = values[k * component_count + component_index];
169
+ const time = times[k];
170
+
171
+ curve.add(Keyframe.from(time, value));
172
+ }
173
+
174
+ for (let k = 0; k < key_count; k++) {
175
+ curve.alignTangents(k);
176
+ }
177
+ }
178
+
179
+ /**
180
+ *
181
+ * @param {AnimationCurve} curve
182
+ * @param {number[]} values
183
+ * @param {number[]} times
184
+ * @param {number} component_count
185
+ * @param {number} component_index
186
+ */
187
+ function curve_from_track_discrete(curve, values, times, component_count, component_index) {
188
+
189
+ const key_count = times.length;
190
+
191
+ for (let k = 0; k < key_count; k++) {
192
+ const value = values[k * component_count + component_index];
193
+ const time = times[k];
194
+
195
+ curve.add(Keyframe.from(time, value));
196
+ }
197
+
198
+ const keys = curve.keys;
199
+
200
+ for (let i = key_count - 1; i > 0; i--) {
201
+ const key = keys[i];
202
+ const prev = keys[i - 1];
203
+
204
+ keys.splice(i, 0, Keyframe.from(key.time, prev.value));
205
+ }
206
+ }
207
+
208
+ /**
209
+ *
210
+ * @param {AnimationCurve} curve
211
+ * @param {number[]} values
212
+ * @param {number[]} times
213
+ * @param {number} component_count
214
+ * @param {number} component_index
215
+ */
216
+ function curve_from_track_cubic_gltf(curve, values, times, component_count, component_index) {
217
+
218
+ const key_count = times.length;
219
+
220
+ for (let k = 0; k < key_count; k++) {
221
+ const component_position = k * component_count;
222
+
223
+ const base_offset = 3 * component_position;
224
+
225
+ // Layout of keyframe output values for CUBICSPLINE animations:
226
+ // [ inTangent_1, splineVertex_1, outTangent_1, inTangent_2, splineVertex_2, ... ]
227
+
228
+ const inTangent = values[base_offset + component_index];
229
+ const value = values[base_offset + component_count + component_index];
230
+ const outTangent = values[base_offset + component_count * 2 + component_index];
231
+
232
+ const time = times[k];
233
+
234
+ curve.add(Keyframe.from(time, value, inTangent, outTangent));
235
+ }
236
+
237
+ }
238
+
239
+
240
+ /**
241
+ *
5
242
  * @param {AnimationCurve} curve
243
+ * @param {INTERPOLATION} type
244
+ * @param {number[]} values
245
+ * @param {number[]} times
246
+ * @param {number} component_count
247
+ * @param {number} component_index
248
+ */
249
+ function component_curve_from_track(curve, type, values, times, component_count, component_index) {
250
+ switch (type) {
251
+ case INTERPOLATION.DISCRETE:
252
+ return curve_from_track_discrete(curve, values, times, component_count, component_index);
253
+ case INTERPOLATION.LINEAR:
254
+ return curve_from_track_linear(curve, values, times, component_count, component_index);
255
+ case INTERPOLATION.CUBIC_TANGENTS:
256
+ return curve_from_track_cubic_gltf(curve, values, times, component_count, component_index);
257
+ default:
258
+ throw new Error(`Unsupported type '${type}'`);
259
+ }
260
+
261
+ }
262
+
263
+ /**
264
+ *
265
+ * @param {THREE.KeyframeTrack} track
266
+ * @param {EntityNode} node
267
+ */
268
+ function convert_three_track(track, node) {
269
+
270
+
271
+ const track_name = track.name;
272
+
273
+ const writer = bind_property_writer(node, track_name);
274
+ // last part is the property
275
+ const curves = convert_three_track_to_curves(track);
276
+
277
+ return AnimatedValueBinding.from(writer, curves);
278
+ }
279
+
280
+ export class EntityNodeAnimationClip {
281
+ name = ""
282
+ /**
283
+ *
284
+ * @type {AnimatedValueBinding[]}
285
+ */
286
+ tracks = []
287
+ duration = 0
288
+
289
+ writeAt(time) {
290
+ for (let i = 0; i < this.tracks.length; i++) {
291
+ const track = this.tracks[i];
292
+
293
+ track.writeAt(time);
294
+ }
295
+ }
296
+ }
297
+
298
+ /**
299
+ * Three.js clip to internal representation
300
+ * @param {EntityNode} node
301
+ * @param {AnimationClip} clip
6
302
  */
7
- export function entity_node_bind_animation_curve(node, path, curve) {
303
+ export function convert_three_clip(node, clip) {
304
+ const three_tracks = clip.tracks;
305
+
306
+ const tracks = three_tracks.map(t => convert_three_track(t, node));
307
+
308
+
309
+ const r = new EntityNodeAnimationClip();
310
+
311
+ r.name = clip.name;
312
+ r.tracks = tracks;
313
+ r.duration = clip.duration;
8
314
 
315
+ return r;
9
316
  }
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=prototypeGLTF.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prototypeGLTF.d.ts","sourceRoot":"","sources":["../../../../../src/engine/animation/curve/prototypeGLTF.js"],"names":[],"mappings":""}
@@ -0,0 +1,81 @@
1
+ import { initializeEditor } from "../../../../../model/game/initializeEditor.js";
2
+ import { enableEditor } from "../../../../editor/enableEditor.js";
3
+ import { GameAssetType } from "../../asset/GameAssetType.js";
4
+ import { GLTFAssetLoader } from "../../asset/loaders/GLTFAssetLoader.js";
5
+ import Entity from "../../ecs/Entity.js";
6
+ import { Transform } from "../../ecs/transform/Transform.js";
7
+ import { EngineHarness } from "../../EngineHarness.js";
8
+ import { SGMesh } from "../../graphics/ecs/mesh-v2/aggregate/SGMesh.js";
9
+ import {
10
+ AnimationPlayback,
11
+ SGMeshAnimationController
12
+ } from "../../graphics/ecs/mesh-v2/aggregate/SGMeshAnimationController.js";
13
+ import {
14
+ SGMeshAnimationControllerSystem
15
+ } from "../../graphics/ecs/mesh-v2/aggregate/SGMeshAnimationControllerSystem.js";
16
+ import { SGMeshSystem } from "../../graphics/ecs/mesh-v2/aggregate/SGMeshSystem.js";
17
+ import { ShadedGeometrySystem } from "../../graphics/ecs/mesh-v2/ShadedGeometrySystem.js";
18
+
19
+ const harness = new EngineHarness();
20
+
21
+ /**
22
+ *
23
+ * @param {Engine} engine
24
+ * @returns {Promise<void>}
25
+ */
26
+ async function main(engine) {
27
+
28
+ enableEditor(engine, initializeEditor);
29
+
30
+ await EngineHarness.buildBasics({
31
+ engine,
32
+ enableTerrain: false,
33
+ cameraFarDistance: 100,
34
+ focus: {
35
+ "x": 0,
36
+ "y": 4,
37
+ "z": 10.244190535355157
38
+ },
39
+ cameraAutoClip: false,
40
+ pitch: 0.030000000000008027,
41
+ yaw: 3.123185307179593,
42
+ });
43
+
44
+ const controller = new SGMeshAnimationController();
45
+
46
+ [
47
+ 'Step Scale',
48
+ 'Linear Scale',
49
+ 'CubicSpline Scale',
50
+ 'Step Rotation',
51
+ 'CubicSpline Rotation',
52
+ 'Linear Rotation',
53
+ 'Step Translation',
54
+ 'CubicSpline Translation',
55
+ 'Linear Translation'
56
+ ].forEach(name => {
57
+
58
+ const playback = new AnimationPlayback();
59
+ playback.clip_name = name;
60
+ playback.loop = true;
61
+
62
+ controller.active.push(playback)
63
+
64
+ })
65
+
66
+ new Entity()
67
+ .add(SGMesh.fromURL('data/models/samples/InterpolationTest.glb'))
68
+ .add(controller)
69
+ .add(new Transform())
70
+ .build(engine.entityManager.dataset);
71
+
72
+ }
73
+
74
+ harness.initialize({
75
+ configuration(config, engine) {
76
+ config.addLoader(GameAssetType.ModelGLTF, new GLTFAssetLoader());
77
+ config.addSystem(new SGMeshAnimationControllerSystem(engine));
78
+ config.addSystem(new SGMeshSystem(engine));
79
+ config.addSystem(new ShadedGeometrySystem(engine));
80
+ }
81
+ }).then(main);
@@ -1 +1 @@
1
- {"version":3,"file":"Asset.d.ts","sourceRoot":"","sources":["../../../../src/engine/asset/Asset.js"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH;IACI;;;;;OAKG;IACH,0CAHW,MAAM,EA2BhB;IAvBG;;;OAGG;IACH,iBAAsB;IAEtB;;;OAGG;IACH,UAFU,MAAM,CAEQ;IAExB;;;OAGG;IACH,cAFU,uBAAuB,CAEX;IAEtB;;;OAGG;IACH,8BAAuB;IAG3B;;;OAGG;IACH,YAEC;CACJ"}
1
+ {"version":3,"file":"Asset.d.ts","sourceRoot":"","sources":["../../../../src/engine/asset/Asset.js"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH;IACI;;;;;OAKG;IACH,0CAHW,MAAM,EA2BhB;IAvBG;;;OAGG;IACH,iBAAsB;IAEtB;;;OAGG;IACH,UAFU,MAAM,CAEQ;IAExB;;;OAGG;IACH,cAFU,uBAAuB,CAEX;IAEtB;;;OAGG;IACH,8BAAuB;IAG3B;;;;OAIG;IACH,cAHW,KAAK,GACH,OAAO,CAOnB;IAED,YAEC;IAED;;;OAGG;IACH,YAEC;CACJ"}
@@ -39,6 +39,22 @@ export class Asset {
39
39
  this.description = null;
40
40
  }
41
41
 
42
+ /**
43
+ *
44
+ * @param {Asset} other
45
+ * @returns {boolean}
46
+ */
47
+ equals(other) {
48
+ return this === other
49
+ || this.description === other.description
50
+ || this.description.equals(other.description)
51
+ ;
52
+ }
53
+
54
+ hash() {
55
+ return this.description.hash();
56
+ }
57
+
42
58
  /**
43
59
  *
44
60
  * @returns {T}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Asset instance objects for read-only usage, so we can just keep 1 copy instead of calling {@link Asset#create} every time
3
+ * @type {Cache<Asset, any>}
4
+ */
5
+ export const STATIC_ASSET_CACHE: Cache<Asset, any>;
6
+ import { Cache } from "../../core/cache/Cache.js";
7
+ //# sourceMappingURL=STATIC_ASSET_CACHE.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"STATIC_ASSET_CACHE.d.ts","sourceRoot":"","sources":["../../../../src/engine/asset/STATIC_ASSET_CACHE.js"],"names":[],"mappings":"AAIA;;;GAGG;AACH,iCAFU,aAAa,GAAG,CAAC,CAYxB;sBAlBmB,2BAA2B"}