@needle-tools/engine 3.3.0-alpha → 3.5.0-alpha

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 (149) hide show
  1. package/CHANGELOG.md +19 -0
  2. package/dist/needle-engine.js +62620 -61118
  3. package/dist/needle-engine.min.js +434 -410
  4. package/dist/needle-engine.umd.cjs +435 -411
  5. package/lib/engine/api.d.ts +1 -0
  6. package/lib/engine/api.js +1 -0
  7. package/lib/engine/api.js.map +1 -1
  8. package/lib/engine/codegen/register_types.js +50 -2
  9. package/lib/engine/codegen/register_types.js.map +1 -1
  10. package/lib/engine/engine_context.d.ts +1 -1
  11. package/lib/engine/engine_context.js +21 -15
  12. package/lib/engine/engine_context.js.map +1 -1
  13. package/lib/engine/engine_context_registry.d.ts +5 -3
  14. package/lib/engine/engine_context_registry.js +10 -2
  15. package/lib/engine/engine_context_registry.js.map +1 -1
  16. package/lib/engine/engine_element.js.map +1 -1
  17. package/lib/engine/engine_element_loading.js +2 -3
  18. package/lib/engine/engine_element_loading.js.map +1 -1
  19. package/lib/engine/engine_gameobject.d.ts +1 -1
  20. package/lib/engine/engine_gameobject.js +4 -2
  21. package/lib/engine/engine_gameobject.js.map +1 -1
  22. package/lib/engine/engine_input.d.ts +2 -2
  23. package/lib/engine/engine_physics.d.ts +20 -93
  24. package/lib/engine/engine_physics.js +20 -892
  25. package/lib/engine/engine_physics.js.map +1 -1
  26. package/lib/engine/engine_physics.types.js.map +1 -1
  27. package/lib/engine/engine_physics_rapier.d.ts +103 -0
  28. package/lib/engine/engine_physics_rapier.js +1003 -0
  29. package/lib/engine/engine_physics_rapier.js.map +1 -0
  30. package/lib/engine/engine_three_utils.js +2 -2
  31. package/lib/engine/engine_three_utils.js.map +1 -1
  32. package/lib/engine/engine_types.d.ts +50 -1
  33. package/lib/engine/engine_types.js +8 -0
  34. package/lib/engine/engine_types.js.map +1 -1
  35. package/lib/engine-components/Animation.js +4 -0
  36. package/lib/engine-components/Animation.js.map +1 -1
  37. package/lib/engine-components/Collider.js +6 -6
  38. package/lib/engine-components/Collider.js.map +1 -1
  39. package/lib/engine-components/Joints.js +2 -2
  40. package/lib/engine-components/Joints.js.map +1 -1
  41. package/lib/engine-components/RigidBody.d.ts +0 -1
  42. package/lib/engine-components/RigidBody.js +24 -30
  43. package/lib/engine-components/RigidBody.js.map +1 -1
  44. package/lib/engine-components/codegen/components.d.ts +25 -1
  45. package/lib/engine-components/codegen/components.js +25 -1
  46. package/lib/engine-components/codegen/components.js.map +1 -1
  47. package/lib/engine-components/export/usdz/Extension.d.ts +4 -4
  48. package/lib/engine-components/export/usdz/ThreeUSDZExporter.d.ts +86 -0
  49. package/lib/engine-components/export/usdz/ThreeUSDZExporter.js +858 -0
  50. package/lib/engine-components/export/usdz/ThreeUSDZExporter.js.map +1 -0
  51. package/lib/engine-components/export/usdz/USDZExporter.d.ts +6 -3
  52. package/lib/engine-components/export/usdz/USDZExporter.js +34 -11
  53. package/lib/engine-components/export/usdz/USDZExporter.js.map +1 -1
  54. package/lib/engine-components/export/usdz/extensions/Animation.d.ts +15 -15
  55. package/lib/engine-components/export/usdz/extensions/Animation.js +24 -29
  56. package/lib/engine-components/export/usdz/extensions/Animation.js.map +1 -1
  57. package/lib/engine-components/export/usdz/extensions/DocumentExtension.d.ts +5 -0
  58. package/lib/engine-components/export/usdz/extensions/DocumentExtension.js +7 -0
  59. package/lib/engine-components/export/usdz/extensions/DocumentExtension.js.map +1 -0
  60. package/lib/engine-components/export/usdz/extensions/USDZText.d.ts +47 -0
  61. package/lib/engine-components/export/usdz/extensions/USDZText.js +114 -0
  62. package/lib/engine-components/export/usdz/extensions/USDZText.js.map +1 -0
  63. package/lib/engine-components/export/usdz/extensions/behavior/Actions.d.ts +30 -0
  64. package/lib/engine-components/export/usdz/extensions/behavior/Actions.js +89 -0
  65. package/lib/engine-components/export/usdz/extensions/behavior/Actions.js.map +1 -0
  66. package/lib/engine-components/export/usdz/extensions/behavior/Behaviour.d.ts +23 -0
  67. package/lib/engine-components/export/usdz/extensions/behavior/Behaviour.js +114 -0
  68. package/lib/engine-components/export/usdz/extensions/behavior/Behaviour.js.map +1 -0
  69. package/lib/engine-components/export/usdz/extensions/behavior/BehaviourComponents.d.ts +102 -0
  70. package/lib/engine-components/export/usdz/extensions/behavior/BehaviourComponents.js +458 -0
  71. package/lib/engine-components/export/usdz/extensions/behavior/BehaviourComponents.js.map +1 -0
  72. package/lib/engine-components/export/usdz/extensions/behavior/BehavioursBuilder.d.ts +111 -0
  73. package/lib/engine-components/export/usdz/extensions/behavior/BehavioursBuilder.js +409 -0
  74. package/lib/engine-components/export/usdz/extensions/behavior/BehavioursBuilder.js.map +1 -0
  75. package/lib/engine-components/postprocessing/PostProcessingHandler.js.map +1 -1
  76. package/lib/engine-components/ui/BaseUIComponent.d.ts +2 -0
  77. package/lib/engine-components/ui/BaseUIComponent.js +6 -0
  78. package/lib/engine-components/ui/BaseUIComponent.js.map +1 -1
  79. package/lib/engine-components/ui/Canvas.d.ts +11 -1
  80. package/lib/engine-components/ui/Canvas.js +72 -3
  81. package/lib/engine-components/ui/Canvas.js.map +1 -1
  82. package/lib/engine-components/ui/Graphic.js.map +1 -1
  83. package/lib/engine-components/ui/Image.js +4 -4
  84. package/lib/engine-components/ui/Image.js.map +1 -1
  85. package/lib/engine-components/ui/Interfaces.d.ts +11 -0
  86. package/lib/engine-components/ui/Interfaces.js +11 -0
  87. package/lib/engine-components/ui/Interfaces.js.map +1 -1
  88. package/lib/engine-components/ui/Layout.d.ts +65 -3
  89. package/lib/engine-components/ui/Layout.js +304 -3
  90. package/lib/engine-components/ui/Layout.js.map +1 -1
  91. package/lib/engine-components/ui/RectTransform.d.ts +8 -7
  92. package/lib/engine-components/ui/RectTransform.js +66 -36
  93. package/lib/engine-components/ui/RectTransform.js.map +1 -1
  94. package/lib/engine-components/utils/LookAt.d.ts +7 -1
  95. package/lib/engine-components/utils/LookAt.js +43 -6
  96. package/lib/engine-components/utils/LookAt.js.map +1 -1
  97. package/lib/engine-components/webxr/WebXRImageTracking.d.ts +4 -3
  98. package/lib/engine-components/webxr/WebXRImageTracking.js +81 -25
  99. package/lib/engine-components/webxr/WebXRImageTracking.js.map +1 -1
  100. package/lib/tsconfig.tsbuildinfo +1 -1
  101. package/package.json +1 -1
  102. package/plugins/vite/config.js +2 -1
  103. package/plugins/vite/defines.js +30 -0
  104. package/plugins/vite/dependency-watcher.js +173 -0
  105. package/plugins/vite/editor-connection.js +37 -39
  106. package/plugins/vite/index.js +5 -1
  107. package/plugins/vite/reload.js +16 -3
  108. package/src/engine/api.ts +1 -0
  109. package/src/engine/codegen/register_types.js +50 -2
  110. package/src/engine/engine_context.ts +32 -23
  111. package/src/engine/engine_context_registry.ts +13 -6
  112. package/src/engine/engine_element.ts +2 -1
  113. package/src/engine/engine_element_loading.ts +2 -3
  114. package/src/engine/engine_gameobject.ts +3 -2
  115. package/src/engine/engine_input.ts +2 -2
  116. package/src/engine/engine_physics.ts +25 -1020
  117. package/src/engine/engine_physics.types.ts +1 -3
  118. package/src/engine/engine_physics_rapier.ts +1127 -0
  119. package/src/engine/engine_three_utils.ts +2 -2
  120. package/src/engine/engine_types.ts +66 -4
  121. package/src/engine-components/Animation.ts +4 -0
  122. package/src/engine-components/Collider.ts +6 -6
  123. package/src/engine-components/Joints.ts +2 -2
  124. package/src/engine-components/RigidBody.ts +24 -31
  125. package/src/engine-components/codegen/components.ts +25 -1
  126. package/src/engine-components/export/usdz/Extension.ts +4 -5
  127. package/src/engine-components/export/usdz/ThreeUSDZExporter.ts +1312 -0
  128. package/src/engine-components/export/usdz/USDZExporter.ts +39 -17
  129. package/src/engine-components/export/usdz/extensions/Animation.ts +37 -45
  130. package/src/engine-components/export/usdz/extensions/DocumentExtension.ts +10 -0
  131. package/src/engine-components/export/usdz/extensions/USDZText.ts +142 -0
  132. package/src/engine-components/export/usdz/extensions/behavior/Actions.ts +99 -0
  133. package/src/engine-components/export/usdz/extensions/behavior/Behaviour.ts +181 -0
  134. package/src/engine-components/export/usdz/extensions/behavior/BehaviourComponents.ts +545 -0
  135. package/src/engine-components/export/usdz/extensions/behavior/BehavioursBuilder.ts +459 -0
  136. package/src/engine-components/postprocessing/PostProcessingHandler.ts +1 -1
  137. package/src/engine-components/ui/BaseUIComponent.ts +7 -1
  138. package/src/engine-components/ui/Canvas.ts +80 -5
  139. package/src/engine-components/ui/Graphic.ts +2 -0
  140. package/src/engine-components/ui/Image.ts +3 -3
  141. package/src/engine-components/ui/Interfaces.ts +30 -6
  142. package/src/engine-components/ui/Layout.ts +303 -4
  143. package/src/engine-components/ui/RectTransform.ts +67 -41
  144. package/src/engine-components/utils/LookAt.ts +60 -7
  145. package/src/engine-components/webxr/WebXRImageTracking.ts +100 -27
  146. package/lib/engine-components/export/usdz/types.d.ts +0 -34
  147. package/lib/engine-components/export/usdz/types.js +0 -2
  148. package/lib/engine-components/export/usdz/types.js.map +0 -1
  149. package/src/engine-components/export/usdz/types.ts +0 -39
@@ -0,0 +1,181 @@
1
+ import { Behaviour, GameObject } from "../../../../Component";
2
+ import { USDZExporter } from "../../USDZExporter";
3
+ import { IUSDExporterExtension } from "../../Extension";
4
+ import { USDObject, USDWriter } from "../../ThreeUSDZExporter";
5
+ import { BehaviorModel } from "./BehavioursBuilder";
6
+ import { IContext } from "../../../../../engine/engine_types";
7
+
8
+ export interface UsdzBehaviour {
9
+ createBehaviours?(ext: BehaviorExtension, model: USDObject, context: IContext): void;
10
+ beforeCreateDocument?(ext: BehaviorExtension, context: IContext): void;
11
+ afterCreateDocument?(ext: BehaviorExtension, context: IContext): void;
12
+ }
13
+
14
+ export class USDZBehaviours extends Behaviour {
15
+ start() {
16
+ const exporter = GameObject.findObjectOfType(USDZExporter);
17
+ if (exporter) {
18
+ exporter.extensions.push(new BehaviorExtension());
19
+ }
20
+ }
21
+ }
22
+
23
+ export class BehaviorExtension implements IUSDExporterExtension {
24
+
25
+ get extensionName(): string {
26
+ return "Behaviour";
27
+ }
28
+
29
+ private behaviours: BehaviorModel[] = [];
30
+
31
+ addBehavior(beh: BehaviorModel) {
32
+ this.behaviours.push(beh);
33
+ }
34
+
35
+ behaviourComponents: Array<UsdzBehaviour> = [];
36
+
37
+
38
+ onBeforeBuildDocument(context) {
39
+ context.root.traverse(e => {
40
+ GameObject.foreachComponent(e, (comp) => {
41
+ const c = comp as unknown as UsdzBehaviour;
42
+ if (
43
+ typeof c.createBehaviours === "function" ||
44
+ typeof c.beforeCreateDocument === "function" ||
45
+ typeof c.afterCreateDocument === "function"
46
+ ) {
47
+ this.behaviourComponents.push(c);
48
+ c.beforeCreateDocument?.call(c, this, context);
49
+ }
50
+ }, false);
51
+ });
52
+ }
53
+
54
+ onExportObject(_object, model: USDObject, context) {
55
+
56
+ for (const beh of this.behaviourComponents) {
57
+ beh.createBehaviours?.call(beh, this, model, context);
58
+ }
59
+ }
60
+
61
+ onAfterBuildDocument(context) {
62
+ for (const beh of this.behaviourComponents) {
63
+ if (typeof beh.afterCreateDocument === "function")
64
+ beh.afterCreateDocument(this, context);
65
+ }
66
+ this.behaviourComponents.length = 0;
67
+ }
68
+
69
+ onAfterHierarchy(context, writer : USDWriter) {
70
+ if (this.behaviours?.length) {
71
+
72
+ // this.combineBehavioursWithSameTapActions();
73
+
74
+ writer.beginBlock('def Scope "Behaviors"');
75
+
76
+ for (const beh of this.behaviours)
77
+ beh.writeTo(this, context.document, writer);
78
+
79
+ writer.closeBlock();
80
+ }
81
+ }
82
+
83
+ // combine behaviours that have tap triggers on the same object
84
+ // private combineBehavioursWithSameTapActions() {
85
+ // // TODO: if behaviours have different settings (e.g. one is exclusive and another one is not) this wont work - we need more logic for that
86
+
87
+ // const combined: { [key: string]: { behaviorId: string, trigger: TriggerModel, actions: IBehaviorElement[] } } = {};
88
+
89
+ // for (let i = this.behaviours.length - 1; i >= 0; i--) {
90
+ // const beh = this.behaviours[i];
91
+ // const trigger = beh.trigger as TriggerModel;
92
+ // if (!Array.isArray(trigger) && TriggerBuilder.isTapTrigger(trigger)) {
93
+ // const targetObject = trigger.targetId;
94
+ // if (!targetObject) continue;
95
+ // if (!combined[targetObject]) {
96
+ // combined[targetObject] = { behaviorId: beh.id, trigger: trigger, actions: [] };
97
+ // }
98
+ // const action = beh.action;
99
+ // combined[targetObject].actions.push(action);
100
+ // this.behaviours.splice(i, 1);
101
+ // }
102
+ // }
103
+ // for (const key in combined) {
104
+ // const val = combined[key];
105
+ // console.log("Combine " + val.actions.length + " actions on " + val.trigger.id, val.actions);
106
+ // const beh = new BehaviorModel(val.behaviorId, val.trigger, ActionBuilder.sequence(...val.actions));
107
+ // this.behaviours.push(beh);
108
+ // }
109
+ // }
110
+ }
111
+
112
+
113
+
114
+
115
+ // const playAnimationOnTap = new BehaviorModel("b_" + model.name + "_playanim", TriggerBuilder.tapTrigger(model),
116
+ // ActionBuilder.parallel(
117
+ // ActionBuilder.lookAtCameraAction(model),
118
+ // ActionBuilder.sequence(
119
+ // //ActionBuilder.startAnimationAction(model, 0, 0, 1, false, true),
120
+ // ActionBuilder.emphasize(model, 1, MotionType.Float),
121
+ // ActionBuilder.waitAction(1),
122
+ // ActionBuilder.emphasize(model, 1, MotionType.Blink),
123
+ // ActionBuilder.waitAction(1),
124
+ // ActionBuilder.emphasize(model, 1, MotionType.Jiggle),
125
+ // ActionBuilder.waitAction(1),
126
+ // ActionBuilder.emphasize(model, 1, MotionType.Pulse),
127
+ // ActionBuilder.waitAction(1),
128
+ // ActionBuilder.emphasize(model, 1, MotionType.Spin),
129
+ // ActionBuilder.waitAction(1),
130
+ // ActionBuilder.emphasize(model, 1, MotionType.Bounce),
131
+ // ActionBuilder.waitAction(1),
132
+ // ActionBuilder.emphasize(model, 1, MotionType.Flip),
133
+ // ActionBuilder.waitAction(1),
134
+ // ).makeLooping()
135
+ // ).makeLooping()
136
+ // );
137
+ // this.behaviours.push(playAnimationOnTap);
138
+ // return;
139
+
140
+ // const identityMatrix = new Matrix4().identity();
141
+
142
+ // const emptyParent = new USDZObject(model.name + "_empty", model.matrix);
143
+ // const parent = model.parent;
144
+ // parent.add(emptyParent);
145
+ // model.matrix = identityMatrix;
146
+ // emptyParent.add(model);
147
+
148
+
149
+ // const geometry = new THREE.SphereGeometry(.6, 32, 16);
150
+ // const modelVariant = new USDZObject(model.name + "_variant", identityMatrix, geometry, new MeshStandardMaterial({ color: 0xff0000 }));
151
+ // emptyParent.add(modelVariant);
152
+
153
+ // const matrix2 = new Matrix4();
154
+ // matrix2.makeTranslation(.5, 0, 0);
155
+ // const modelVariant2 = new USDZObject(model.name + "_variant2", matrix2, geometry, new MeshStandardMaterial({ color: 0xffff00 }));
156
+ // emptyParent.add(modelVariant2);
157
+
158
+ // const hideVariantOnStart = new BehaviorModel("b_" + model.name + "_start", TriggerBuilder.sceneStartTrigger(), ActionBuilder.fadeAction(modelVariant, 0, false));
159
+ // this.behaviours.push(hideVariantOnStart);
160
+
161
+ // const showVariant = new BehaviorModel("b_" + model.name + "_show_variant", [TriggerBuilder.tapTrigger(model)], new GroupActionModel("group", [
162
+ // ActionBuilder.fadeAction(model, 0, false),
163
+ // ActionBuilder.fadeAction(modelVariant, 0, true),
164
+ // ]));
165
+ // this.behaviours.push(showVariant);
166
+
167
+ // const showOriginal = new BehaviorModel("b_" + model.name + "_show_original", [
168
+ // TriggerBuilder.tapTrigger(modelVariant),
169
+ // TriggerBuilder.tapTrigger(modelVariant2)
170
+ // ],
171
+ // new GroupActionModel("group", [
172
+ // ActionBuilder.fadeAction([modelVariant, modelVariant2], 0, false),
173
+ // //ActionBuilder.waitAction(1),
174
+ // ActionBuilder.fadeAction(model, 0, true),
175
+ // //ActionBuilder.waitAction(.2),
176
+ // ActionBuilder.startAnimationAction(model, 0, 1000, 1, false, true),
177
+ // //ActionBuilder.lookAtCameraAction(model, 2, Vec3.forward, Vec3.up),
178
+ // //ActionBuilder.waitAction(1),
179
+ // //ActionBuilder.fadeAction(modelVariant2, 0, true),
180
+ // ]).makeSequence());
181
+ // this.behaviours.push(showOriginal);