@needle-tools/engine 3.2.15-alpha → 3.4.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 (151) hide show
  1. package/CHANGELOG.md +23 -0
  2. package/dist/needle-engine.js +44005 -36382
  3. package/dist/needle-engine.min.js +706 -513
  4. package/dist/needle-engine.umd.cjs +685 -492
  5. package/lib/engine/codegen/register_types.js +54 -4
  6. package/lib/engine/codegen/register_types.js.map +1 -1
  7. package/lib/engine/engine_addressables.d.ts +3 -3
  8. package/lib/engine/engine_addressables.js +30 -9
  9. package/lib/engine/engine_addressables.js.map +1 -1
  10. package/lib/engine/engine_element.js +1 -1
  11. package/lib/engine/engine_element.js.map +1 -1
  12. package/lib/engine/engine_gameobject.d.ts +2 -1
  13. package/lib/engine/engine_gameobject.js +19 -0
  14. package/lib/engine/engine_gameobject.js.map +1 -1
  15. package/lib/engine/engine_input.js +10 -0
  16. package/lib/engine/engine_input.js.map +1 -1
  17. package/lib/engine/engine_math.d.ts +4 -0
  18. package/lib/engine/engine_math.js +6 -0
  19. package/lib/engine/engine_math.js.map +1 -1
  20. package/lib/engine/engine_three_utils.js +2 -2
  21. package/lib/engine/engine_three_utils.js.map +1 -1
  22. package/lib/engine-components/Animation.js +4 -0
  23. package/lib/engine-components/Animation.js.map +1 -1
  24. package/lib/engine-components/AnimatorController.js +7 -2
  25. package/lib/engine-components/AnimatorController.js.map +1 -1
  26. package/lib/engine-components/OrbitControls.js +13 -4
  27. package/lib/engine-components/OrbitControls.js.map +1 -1
  28. package/lib/engine-components/TransformGizmo.d.ts +8 -4
  29. package/lib/engine-components/TransformGizmo.js +62 -63
  30. package/lib/engine-components/TransformGizmo.js.map +1 -1
  31. package/lib/engine-components/codegen/components.d.ts +27 -2
  32. package/lib/engine-components/codegen/components.js +27 -2
  33. package/lib/engine-components/codegen/components.js.map +1 -1
  34. package/lib/engine-components/export/usdz/Extension.d.ts +4 -4
  35. package/lib/engine-components/export/usdz/ThreeUSDZExporter.d.ts +86 -0
  36. package/lib/engine-components/export/usdz/ThreeUSDZExporter.js +830 -0
  37. package/lib/engine-components/export/usdz/ThreeUSDZExporter.js.map +1 -0
  38. package/lib/engine-components/export/usdz/USDZExporter.d.ts +6 -3
  39. package/lib/engine-components/export/usdz/USDZExporter.js +34 -11
  40. package/lib/engine-components/export/usdz/USDZExporter.js.map +1 -1
  41. package/lib/engine-components/export/usdz/extensions/Animation.d.ts +15 -15
  42. package/lib/engine-components/export/usdz/extensions/Animation.js +24 -29
  43. package/lib/engine-components/export/usdz/extensions/Animation.js.map +1 -1
  44. package/lib/engine-components/export/usdz/extensions/DocumentExtension.d.ts +5 -0
  45. package/lib/engine-components/export/usdz/extensions/DocumentExtension.js +7 -0
  46. package/lib/engine-components/export/usdz/extensions/DocumentExtension.js.map +1 -0
  47. package/lib/engine-components/export/usdz/extensions/USDZText.d.ts +47 -0
  48. package/lib/engine-components/export/usdz/extensions/USDZText.js +114 -0
  49. package/lib/engine-components/export/usdz/extensions/USDZText.js.map +1 -0
  50. package/lib/engine-components/export/usdz/extensions/behavior/Actions.d.ts +30 -0
  51. package/lib/engine-components/export/usdz/extensions/behavior/Actions.js +89 -0
  52. package/lib/engine-components/export/usdz/extensions/behavior/Actions.js.map +1 -0
  53. package/lib/engine-components/export/usdz/extensions/behavior/Behaviour.d.ts +23 -0
  54. package/lib/engine-components/export/usdz/extensions/behavior/Behaviour.js +114 -0
  55. package/lib/engine-components/export/usdz/extensions/behavior/Behaviour.js.map +1 -0
  56. package/lib/engine-components/export/usdz/extensions/behavior/BehaviourComponents.d.ts +96 -0
  57. package/lib/engine-components/export/usdz/extensions/behavior/BehaviourComponents.js +421 -0
  58. package/lib/engine-components/export/usdz/extensions/behavior/BehaviourComponents.js.map +1 -0
  59. package/lib/engine-components/export/usdz/extensions/behavior/BehavioursBuilder.d.ts +111 -0
  60. package/lib/engine-components/export/usdz/extensions/behavior/BehavioursBuilder.js +409 -0
  61. package/lib/engine-components/export/usdz/extensions/behavior/BehavioursBuilder.js.map +1 -0
  62. package/lib/engine-components/postprocessing/PostProcessingHandler.js.map +1 -1
  63. package/lib/engine-components/ui/BaseUIComponent.d.ts +2 -0
  64. package/lib/engine-components/ui/BaseUIComponent.js +6 -0
  65. package/lib/engine-components/ui/BaseUIComponent.js.map +1 -1
  66. package/lib/engine-components/ui/Button.js +9 -5
  67. package/lib/engine-components/ui/Button.js.map +1 -1
  68. package/lib/engine-components/ui/Canvas.d.ts +23 -6
  69. package/lib/engine-components/ui/Canvas.js +167 -34
  70. package/lib/engine-components/ui/Canvas.js.map +1 -1
  71. package/lib/engine-components/ui/EventSystem.d.ts +6 -0
  72. package/lib/engine-components/ui/EventSystem.js +4 -4
  73. package/lib/engine-components/ui/EventSystem.js.map +1 -1
  74. package/lib/engine-components/ui/Graphic.d.ts +5 -2
  75. package/lib/engine-components/ui/Graphic.js +38 -7
  76. package/lib/engine-components/ui/Graphic.js.map +1 -1
  77. package/lib/engine-components/ui/Image.d.ts +1 -0
  78. package/lib/engine-components/ui/Image.js +14 -5
  79. package/lib/engine-components/ui/Image.js.map +1 -1
  80. package/lib/engine-components/ui/InputField.d.ts +1 -0
  81. package/lib/engine-components/ui/InputField.js +8 -0
  82. package/lib/engine-components/ui/InputField.js.map +1 -1
  83. package/lib/engine-components/ui/Interfaces.d.ts +19 -0
  84. package/lib/engine-components/ui/Interfaces.js +11 -0
  85. package/lib/engine-components/ui/Interfaces.js.map +1 -1
  86. package/lib/engine-components/ui/Layout.d.ts +65 -3
  87. package/lib/engine-components/ui/Layout.js +304 -3
  88. package/lib/engine-components/ui/Layout.js.map +1 -1
  89. package/lib/engine-components/ui/Outline.d.ts +7 -0
  90. package/lib/engine-components/ui/Outline.js +21 -0
  91. package/lib/engine-components/ui/Outline.js.map +1 -0
  92. package/lib/engine-components/ui/RectTransform.d.ts +32 -13
  93. package/lib/engine-components/ui/RectTransform.js +216 -56
  94. package/lib/engine-components/ui/RectTransform.js.map +1 -1
  95. package/lib/engine-components/ui/Text.d.ts +13 -10
  96. package/lib/engine-components/ui/Text.js +177 -246
  97. package/lib/engine-components/ui/Text.js.map +1 -1
  98. package/lib/engine-components/utils/LookAt.d.ts +13 -0
  99. package/lib/engine-components/utils/LookAt.js +66 -0
  100. package/lib/engine-components/utils/LookAt.js.map +1 -0
  101. package/lib/engine-components/webxr/WebXRImageTracking.d.ts +12 -3
  102. package/lib/engine-components/webxr/WebXRImageTracking.js +156 -24
  103. package/lib/engine-components/webxr/WebXRImageTracking.js.map +1 -1
  104. package/lib/tsconfig.tsbuildinfo +1 -1
  105. package/package.json +2 -2
  106. package/plugins/vite/reload.js +13 -2
  107. package/src/engine/codegen/register_types.js +56 -6
  108. package/src/engine/engine_addressables.ts +28 -10
  109. package/src/engine/engine_element.ts +1 -1
  110. package/src/engine/engine_gameobject.ts +19 -1
  111. package/src/engine/engine_input.ts +11 -0
  112. package/src/engine/engine_math.ts +10 -0
  113. package/src/engine/engine_three_utils.ts +2 -2
  114. package/src/engine-components/Animation.ts +4 -0
  115. package/src/engine-components/AnimatorController.ts +7 -1
  116. package/src/engine-components/OrbitControls.ts +14 -6
  117. package/src/engine-components/TransformGizmo.ts +64 -70
  118. package/src/engine-components/codegen/components.ts +27 -2
  119. package/src/engine-components/export/usdz/Extension.ts +4 -5
  120. package/src/engine-components/export/usdz/ThreeUSDZExporter.ts +1280 -0
  121. package/src/engine-components/export/usdz/USDZExporter.ts +39 -17
  122. package/src/engine-components/export/usdz/extensions/Animation.ts +37 -45
  123. package/src/engine-components/export/usdz/extensions/DocumentExtension.ts +10 -0
  124. package/src/engine-components/export/usdz/extensions/USDZText.ts +142 -0
  125. package/src/engine-components/export/usdz/extensions/behavior/Actions.ts +99 -0
  126. package/src/engine-components/export/usdz/extensions/behavior/Behaviour.ts +181 -0
  127. package/src/engine-components/export/usdz/extensions/behavior/BehaviourComponents.ts +503 -0
  128. package/src/engine-components/export/usdz/extensions/behavior/BehavioursBuilder.ts +459 -0
  129. package/src/engine-components/postprocessing/PostProcessingHandler.ts +1 -1
  130. package/src/engine-components/ui/BaseUIComponent.ts +7 -1
  131. package/src/engine-components/ui/Button.ts +14 -9
  132. package/src/engine-components/ui/Canvas.ts +178 -39
  133. package/src/engine-components/ui/EventSystem.ts +16 -9
  134. package/src/engine-components/ui/Graphic.ts +46 -8
  135. package/src/engine-components/ui/Image.ts +13 -4
  136. package/src/engine-components/ui/InputField.ts +9 -1
  137. package/src/engine-components/ui/Interfaces.ts +39 -3
  138. package/src/engine-components/ui/Layout.ts +303 -4
  139. package/src/engine-components/ui/Outline.ts +13 -0
  140. package/src/engine-components/ui/RectTransform.ts +236 -68
  141. package/src/engine-components/ui/Text.ts +284 -265
  142. package/src/engine-components/utils/LookAt.ts +74 -0
  143. package/src/engine-components/webxr/WebXRImageTracking.ts +179 -31
  144. package/lib/engine-components/export/usdz/types.d.ts +0 -34
  145. package/lib/engine-components/export/usdz/types.js +0 -2
  146. package/lib/engine-components/export/usdz/types.js.map +0 -1
  147. package/lib/engine-components/ui/Keyboard.d.ts +0 -31
  148. package/lib/engine-components/ui/Keyboard.js +0 -178
  149. package/lib/engine-components/ui/Keyboard.js.map +0 -1
  150. package/src/engine-components/export/usdz/types.ts +0 -39
  151. package/src/engine-components/ui/Keyboard.ts +0 -204
@@ -1,6 +1,8 @@
1
1
  import * as ThreeMeshUI from 'three-mesh-ui';
2
2
  import { BaseUIComponent } from "./BaseUIComponent";
3
- import { Vector3 } from "three";
3
+ import { DocumentedOptions as ThreeMeshUIEveryOptions } from "three-mesh-ui/build/types/core/elements/MeshUIBaseElement";
4
+ import { Quaternion, Vector2, Vector3 } from "three";
5
+ import { IRectTransform, IRectTransformChangedReceiver } from "./Interfaces";
4
6
  export declare class Size {
5
7
  width: number;
6
8
  height: number;
@@ -11,29 +13,46 @@ export declare class Rect {
11
13
  width: number;
12
14
  height: number;
13
15
  }
14
- export declare class RectTransform extends BaseUIComponent {
16
+ export declare class RectTransform extends BaseUIComponent implements IRectTransform, IRectTransformChangedReceiver {
15
17
  offset: number;
16
18
  get translation(): Vector3;
17
- get rotation(): import("three").Quaternion;
18
- get scale(): THREE.Vector3;
19
+ get rotation(): Quaternion;
20
+ get scale(): Vector3;
19
21
  private _anchoredPosition;
20
- private get anchoredPosition();
21
- rect?: Rect;
22
- sizeDelta: THREE.Vector2;
23
- anchoredPosition3D?: THREE.Vector3;
24
- pivot?: THREE.Vector2;
22
+ get anchoredPosition(): Vector3;
23
+ private set anchoredPosition(value);
24
+ private rect?;
25
+ sizeDelta: Vector2;
26
+ pivot?: Vector2;
27
+ anchorMin: Vector2;
28
+ anchorMax: Vector2;
29
+ offsetMin: Vector2;
30
+ offsetMax: Vector2;
31
+ get width(): any;
32
+ get height(): any;
25
33
  private lastMatrix;
26
34
  private rectBlock;
27
35
  private _transformNeedsUpdate;
28
36
  awake(): void;
29
37
  onEnable(): void;
30
38
  onDisable(): void;
31
- private applyTransform;
39
+ onParentRectTransformChanged(comp: IRectTransform): void;
40
+ get isDirty(): boolean;
32
41
  markDirty(): void;
33
- onBeforeRender(): void;
42
+ /** Will update the transforms if it changed or is dirty */
43
+ updateTransform(): void;
44
+ private _parentRectTransform?;
45
+ private _lastUpdateFrame;
46
+ private canUpdate;
47
+ private onApplyTransform;
48
+ /** applies the position offset to the passed in vector */
34
49
  private applyAnchoring;
35
- getBasicOptions(): ThreeMeshUI.BlockOptions;
50
+ /** applies the pivot offset to the passed in vector */
51
+ private applyPivot;
52
+ getBasicOptions(): ThreeMeshUIEveryOptions;
36
53
  private ensureValidSize;
37
54
  private _createdBlocks;
38
- createNewBlock(opts?: ThreeMeshUI.BlockOptions | object): ThreeMeshUI.Block;
55
+ private _createdTextBlocks;
56
+ createNewBlock(opts?: ThreeMeshUIEveryOptions | object): ThreeMeshUI.Block;
57
+ createNewText(opts?: ThreeMeshUIEveryOptions | object): ThreeMeshUI.Block;
39
58
  }
@@ -7,11 +7,13 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
7
7
  import * as ThreeMeshUI from 'three-mesh-ui';
8
8
  import { BaseUIComponent } from "./BaseUIComponent";
9
9
  import { serializable } from "../../engine/engine_serialization_decorator";
10
- import { Matrix4, Object3D, Vector2, Vector3 } from "three";
11
- import { EventSystem } from "./EventSystem";
10
+ import { Matrix4, Object3D, Quaternion, Vector2, Vector3 } from "three";
12
11
  import { getParam } from "../../engine/engine_utils";
13
12
  import { onChange } from "./Utils";
13
+ import { foreachComponentEnumerator } from "../../engine/engine_gameobject";
14
+ import { GameObject } from '../Component';
14
15
  const debug = getParam("debugui");
16
+ const debugLayout = getParam("debuguilayout");
15
17
  export class Size {
16
18
  width;
17
19
  height;
@@ -22,8 +24,11 @@ export class Rect {
22
24
  width;
23
25
  height;
24
26
  }
27
+ const tempVec = new Vector3();
28
+ const tempMatrix = new Matrix4();
29
+ const tempQuaternion = new Quaternion();
25
30
  export class RectTransform extends BaseUIComponent {
26
- offset = 0.01;
31
+ offset = 0.1;
27
32
  // @serializable(Object3D)
28
33
  // root? : Object3D;
29
34
  get translation() { return this.gameObject.position; }
@@ -35,10 +40,41 @@ export class RectTransform extends BaseUIComponent {
35
40
  this._anchoredPosition = new Vector3();
36
41
  return this._anchoredPosition;
37
42
  }
38
- rect;
43
+ set anchoredPosition(value) {
44
+ this._anchoredPosition = value;
45
+ }
46
+ rect; // TODO: should we use the rect or sizeDelta?
39
47
  sizeDelta;
40
- anchoredPosition3D;
41
48
  pivot;
49
+ anchorMin;
50
+ anchorMax;
51
+ offsetMin;
52
+ offsetMax;
53
+ get width() {
54
+ if (this.anchorMin.x !== this.anchorMax.x) {
55
+ if (this._parentRectTransform) {
56
+ const parentWidth = this._parentRectTransform.width;
57
+ const anchorWidth = this.anchorMax.x - this.anchorMin.x;
58
+ let width = parentWidth * anchorWidth;
59
+ width += this.sizeDelta.x;
60
+ return width;
61
+ }
62
+ }
63
+ return this.sizeDelta.x;
64
+ }
65
+ get height() {
66
+ if (this.anchorMin.y !== this.anchorMax.y) {
67
+ if (this._parentRectTransform) {
68
+ const parentHeight = this._parentRectTransform.height;
69
+ const anchorHeight = this.anchorMax.y - this.anchorMin.y;
70
+ let height = parentHeight * anchorHeight;
71
+ height += this.sizeDelta.y;
72
+ return height;
73
+ }
74
+ }
75
+ return this.sizeDelta.y;
76
+ }
77
+ // private lastMatrixWorld!: Matrix4;
42
78
  lastMatrix;
43
79
  rectBlock;
44
80
  _transformNeedsUpdate = false;
@@ -52,78 +88,175 @@ export class RectTransform extends BaseUIComponent {
52
88
  // this is required if an animator animated the transform anchoring
53
89
  if (!this._anchoredPosition)
54
90
  this._anchoredPosition = new Vector3();
55
- onChange(this, "_anchoredPosition", () => { this._transformNeedsUpdate = true; });
91
+ // TODO: we need to replace this with the watch that e.g. Rigibody is using (or the one in utils?)
92
+ // perhaps we can also just manually check the few properties in the update loops?
93
+ // TODO: check if value actually changed, this is called on assignment
94
+ onChange(this, "_anchoredPosition", () => { this.markDirty(); });
95
+ onChange(this, "sizeDelta", () => { this.markDirty(); });
96
+ onChange(this, "pivot", () => { this.markDirty(); });
97
+ // When exported with an anchored position offset we remove it here
98
+ // because it would otherwise be applied twice when the anchoring is animated
99
+ // Maybe we can get rid of this workaround if we just set the mesh ui position from the
100
+ // anchored position value but then we would have to make sure if a user/the engine updates
101
+ // "position" the change would also land in anchoredPosition
102
+ // Another solution would perhaps be to get rid of the extra "anchoredPosition" vector3
103
+ // and instead use the same vector3 instance on both "position" and "anchoredPosition"
104
+ // But I'm also not sure if this will not cause issues elsewhere later / be confusing?
105
+ // (that being said we can make anchoredPosition hidden)
106
+ if (!this.isRoot()) {
107
+ this.gameObject.position.x += this.anchoredPosition.x;
108
+ this.gameObject.position.y -= this.anchoredPosition.y;
109
+ }
56
110
  }
57
111
  onEnable() {
58
112
  super.onEnable();
59
113
  this.addShadowComponent(this.rectBlock);
60
114
  this._transformNeedsUpdate = true;
115
+ this.Canvas?.registerTransform(this);
61
116
  }
62
117
  onDisable() {
63
118
  super.onDisable();
64
119
  this.removeShadowComponent();
120
+ this.Canvas?.unregisterTransform(this);
121
+ }
122
+ onParentRectTransformChanged(comp) {
123
+ if (this._transformNeedsUpdate)
124
+ return;
125
+ // When the parent rect transform changes we have to to recalculate our transform
126
+ this.onApplyTransform(debugLayout ? `${comp.name} changed` : undefined);
65
127
  }
66
- applyTransform() {
128
+ get isDirty() {
129
+ if (!this._transformNeedsUpdate)
130
+ this._transformNeedsUpdate = !this.lastMatrix.equals(this.gameObject.matrix);
131
+ return this._transformNeedsUpdate;
132
+ }
133
+ // private _copyMatrixAfterRender: boolean = false;
134
+ markDirty() {
135
+ if (this._transformNeedsUpdate)
136
+ return;
137
+ if (debugLayout)
138
+ console.warn("RectTransform markDirty()", this.name);
139
+ this._transformNeedsUpdate = true;
140
+ // If mark dirty is called explictly we want to allow updating the transform again when updateTransform is called
141
+ // if we dont reset it here we get delayed layout updates
142
+ this._lastUpdateFrame = -1;
143
+ }
144
+ /** Will update the transforms if it changed or is dirty */
145
+ updateTransform() {
146
+ // TODO: instead of checking matrix again it would perhaps be better to test if position, rotation or scale have changed individually?
147
+ const transformChanged = this._transformNeedsUpdate || !this.lastMatrix.equals(this.gameObject.matrix); // || !this.lastMatrixWorld.equals(this.gameObject.matrixWorld);
148
+ if (transformChanged && this.canUpdate()) {
149
+ this.onApplyTransform(this._transformNeedsUpdate ? "Marked dirty" : "Matrix changed");
150
+ }
151
+ }
152
+ _parentRectTransform;
153
+ _lastUpdateFrame = -1;
154
+ canUpdate() {
155
+ return this._transformNeedsUpdate && this.activeAndEnabled && this._lastUpdateFrame !== this.context.time.frame;
156
+ }
157
+ onApplyTransform(reason) {
158
+ // TODO: need to improve the update logic, with this UI updates have some frame delay but dont happen exponentially per hierarchy
159
+ if (this.context.time.frameCount === this._lastUpdateFrame)
160
+ return;
161
+ this._lastUpdateFrame = this.context.time.frameCount;
67
162
  const uiobject = this.shadowComponent;
68
163
  if (!uiobject)
69
164
  return;
165
+ this._parentRectTransform = GameObject.getComponentInParent(this.gameObject.parent, RectTransform);
70
166
  this._transformNeedsUpdate = false;
167
+ this.lastMatrix.copy(this.gameObject.matrix);
168
+ if (debugLayout)
169
+ console.warn("RectTransform → ApplyTransform", this.name + " because " + reason);
71
170
  if (!this.isRoot()) {
72
- // this.gameObject transform has authority over three mesh ui shadow components
73
- // so we keep copy the transform to the threemesh ui components
74
- uiobject.position.copy(this.gameObject.position);
75
- uiobject.position.x *= -1;
76
- uiobject.position.z *= -1;
77
- // move slightly forward to avoid z fighting
78
- uiobject.position.z -= this.offset;
79
- uiobject.quaternion.copy(this.gameObject.quaternion);
80
- uiobject.rotation.x *= -1;
81
- // flip images
82
- uiobject.rotation.z *= -1;
83
- uiobject.scale.copy(this.gameObject.scale);
171
+ // Reset temp matrix
172
+ uiobject.matrix.identity();
173
+ uiobject.matrixAutoUpdate = false;
174
+ // calc pivot and apply
175
+ tempVec.set(0, 0, 0);
176
+ this.applyPivot(tempVec);
177
+ uiobject.matrix.setPosition(tempVec.x, tempVec.y, 0);
178
+ // calc rotation matrix and apply (we can skip this if it's not rotated)
179
+ if (this.gameObject.quaternion.x || this.gameObject.quaternion.y || this.gameObject.quaternion.z) {
180
+ tempQuaternion.copy(this.gameObject.quaternion);
181
+ tempQuaternion.x *= -1;
182
+ tempQuaternion.z *= -1;
183
+ tempMatrix.makeRotationFromQuaternion(tempQuaternion);
184
+ uiobject.matrix.premultiply(tempMatrix);
185
+ }
186
+ // calc anchors and offset and apply
187
+ tempVec.set(0, 0, 0);
188
+ this.applyAnchoring(tempVec);
189
+ tempVec.z += this.offset;
190
+ tempVec.z -= this.gameObject.position.z;
191
+ tempMatrix.identity();
192
+ tempMatrix.setPosition(tempVec.x, tempVec.y, tempVec.z);
193
+ uiobject.matrix.premultiply(tempMatrix);
194
+ // apply scale if necessary
195
+ uiobject.matrix.scale(this.gameObject.scale);
84
196
  }
85
197
  else {
86
- uiobject.rotation.y = Math.PI;
198
+ // We have to rotate the canvas when it's in worldspace
199
+ const canvas = this.Root;
200
+ if (!canvas.screenspace)
201
+ uiobject.rotation.y = Math.PI;
87
202
  }
88
- this.applyAnchoring(uiobject.position);
89
- this.lastMatrix.copy(this.gameObject.matrix);
90
- }
91
- markDirty() {
92
- this._transformNeedsUpdate = true;
93
- }
94
- onBeforeRender() {
95
- // only handle update here if this is not the canvas
96
- // the canvas component does inherit from this class but it only serves as a root
97
- // it does not emit any UI elements and therefor we dont want to change its transform
98
- // if (this._parentComponent)
99
- // {
100
- const transformChanged = this._transformNeedsUpdate || this.lastMatrix.equals(this.gameObject.matrix) === false;
101
- if (transformChanged) {
102
- if (debug)
103
- console.log("updating", this.name);
104
- this.applyTransform();
203
+ // iterate other components on this object that might need to know about the transform change
204
+ // e.g. Graphic components should update their width and height
205
+ const includeChildren = true;
206
+ for (const comp of foreachComponentEnumerator(this.gameObject, BaseUIComponent, includeChildren, 1)) {
207
+ if (comp === this)
208
+ continue;
209
+ if (!comp.activeAndEnabled)
210
+ continue;
211
+ const callback = comp;
212
+ if (callback.onParentRectTransformChanged) {
213
+ // if (debugLayout) console.log(`RectTransform ${this.name} → call`, comp.name + "/" + comp.constructor.name)
214
+ callback.onParentRectTransformChanged(this);
215
+ }
105
216
  }
106
- // }
107
- EventSystem.ensureUpdateMeshUI(ThreeMeshUI, this.context);
217
+ // const layout = GameObject.getComponentInParent(this.gameObject, ILayoutGroup);
108
218
  }
219
+ // onAfterRender() {
220
+ // if (this._copyMatrixAfterRender) {
221
+ // // can we only have this event when the transform changed in this frame? Otherwise all RectTransforms will be iterated. Not sure what is better
222
+ // this.lastMatrixWorld.copy(this.gameObject.matrixWorld);
223
+ // }
224
+ // }
225
+ /** applies the position offset to the passed in vector */
109
226
  applyAnchoring(pos) {
110
- if (this.pivot && this.sizeDelta) {
111
- let tx = (this.pivot.x * 2 - 1);
112
- let ty = (this.pivot.y * 2 - 1);
113
- tx -= this.anchoredPosition.x; // * .05;
114
- ty -= this.anchoredPosition.y; // * .05;
115
- const offx = tx;
116
- const offy = ty;
117
- // console.log(this.name, this.pivot, tx, ty, "offset", offx, offy);
118
- pos.x -= offx;
119
- pos.y -= offy;
120
- // TODO update size from anchoring, width, height, sizeDelta
121
- if (this.shadowComponent)
122
- // console.log(this.shadowComponent)
123
- this.set({ width: this.sizeDelta.x, height: this.sizeDelta.y });
227
+ pos.x += this.anchoredPosition.x;
228
+ pos.y += this.anchoredPosition.y;
229
+ const parent = this._parentRectTransform;
230
+ if (parent) {
231
+ // Calculate vertical offset
232
+ let oy = 0;
233
+ const vert = 1 - this.anchorMax.y - this.anchorMin.y;
234
+ oy -= (parent.height * .5) * vert;
235
+ pos.y += oy;
236
+ // calculate horizontal offset
237
+ let ox = 0;
238
+ const horz = 1 - this.anchorMax.x - this.anchorMin.x;
239
+ ox -= (parent.width * .5) * horz;
240
+ pos.x += ox;
241
+ }
242
+ }
243
+ /** applies the pivot offset to the passed in vector */
244
+ applyPivot(vec) {
245
+ if (this.pivot && !this.isRoot()) {
246
+ const pv = this.pivot.x - .5;
247
+ vec.x -= pv * this.sizeDelta.x * this.gameObject.scale.x;
248
+ const ph = this.pivot.y - .5;
249
+ vec.y -= ph * this.sizeDelta.y * this.gameObject.scale.y;
124
250
  }
125
251
  }
126
252
  getBasicOptions() {
253
+ // @TODO : instead of getBasicOptions for each component we could use once needleEngine initialized
254
+ // ThreeMeshUI.DefaultValues.set({
255
+ // backgroundOpacity: 1,
256
+ // borderWidth: 0, // if we dont specify width here a border will automatically propagated to child blocks
257
+ // borderRadius: 0,
258
+ // borderOpacity: 0,
259
+ // })
127
260
  const opts = {
128
261
  width: this.rect.width,
129
262
  height: this.rect.height,
@@ -132,6 +265,7 @@ export class RectTransform extends BaseUIComponent {
132
265
  borderWidth: 0,
133
266
  borderRadius: 0,
134
267
  borderOpacity: 0,
268
+ letterSpacing: -0.03,
135
269
  // justifyContent: 'center',
136
270
  // alignItems: 'center',
137
271
  // alignContent: 'center',
@@ -150,6 +284,7 @@ export class RectTransform extends BaseUIComponent {
150
284
  return opts;
151
285
  }
152
286
  _createdBlocks = [];
287
+ _createdTextBlocks = [];
153
288
  createNewBlock(opts) {
154
289
  opts = {
155
290
  ...this.getBasicOptions(),
@@ -161,17 +296,42 @@ export class RectTransform extends BaseUIComponent {
161
296
  this._createdBlocks.push(block);
162
297
  return block;
163
298
  }
299
+ createNewText(opts) {
300
+ if (debug)
301
+ console.log(opts);
302
+ opts = {
303
+ ...this.getBasicOptions(),
304
+ ...opts,
305
+ };
306
+ if (debug)
307
+ console.log(this.name, opts);
308
+ const block = new ThreeMeshUI.Text(opts);
309
+ this._createdTextBlocks.push(block);
310
+ return block;
311
+ }
164
312
  }
313
+ __decorate([
314
+ serializable(Vector3)
315
+ ], RectTransform.prototype, "anchoredPosition", null);
165
316
  __decorate([
166
317
  serializable(Rect)
167
318
  ], RectTransform.prototype, "rect", void 0);
168
319
  __decorate([
169
320
  serializable(Vector2)
170
321
  ], RectTransform.prototype, "sizeDelta", void 0);
171
- __decorate([
172
- serializable(Vector3)
173
- ], RectTransform.prototype, "anchoredPosition3D", void 0);
174
322
  __decorate([
175
323
  serializable(Vector2)
176
324
  ], RectTransform.prototype, "pivot", void 0);
325
+ __decorate([
326
+ serializable(Vector2)
327
+ ], RectTransform.prototype, "anchorMin", void 0);
328
+ __decorate([
329
+ serializable(Vector2)
330
+ ], RectTransform.prototype, "anchorMax", void 0);
331
+ __decorate([
332
+ serializable(Vector2)
333
+ ], RectTransform.prototype, "offsetMin", void 0);
334
+ __decorate([
335
+ serializable(Vector2)
336
+ ], RectTransform.prototype, "offsetMax", void 0);
177
337
  //# sourceMappingURL=RectTransform.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"RectTransform.js","sourceRoot":"","sources":["../../../src/engine-components/ui/RectTransform.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"RectTransform.js","sourceRoot":"","sources":["../../../src/engine-components/ui/RectTransform.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,KAAK,WAAW,MAAM,eAAe,CAAA;AAC5C,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEpD,OAAO,EAAE,YAAY,EAAE,MAAM,6CAA6C,CAAC;AAC3E,OAAO,EAAS,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAE/E,OAAO,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AACrD,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AACnC,OAAO,EAAE,0BAA0B,EAAE,MAAM,gCAAgC,CAAC;AAE5E,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE1C,MAAM,KAAK,GAAG,QAAQ,CAAC,SAAS,CAAC,CAAC;AAClC,MAAM,WAAW,GAAG,QAAQ,CAAC,eAAe,CAAC,CAAC;AAE9C,MAAM,OAAO,IAAI;IACb,KAAK,CAAU;IACf,MAAM,CAAU;CACnB;AAED,MAAM,OAAO,IAAI;IACb,CAAC,CAAU;IACX,CAAC,CAAU;IACX,KAAK,CAAU;IACf,MAAM,CAAU;CACnB;AAED,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;AAC9B,MAAM,UAAU,GAAG,IAAI,OAAO,EAAE,CAAC;AACjC,MAAM,cAAc,GAAG,IAAI,UAAU,EAAE,CAAC;AAExC,MAAM,OAAO,aAAc,SAAQ,eAAe;IAE9C,MAAM,GAAW,GAAG,CAAC;IAErB,0BAA0B;IAC1B,oBAAoB;IAEpB,IAAI,WAAW,KAAK,OAAO,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC;IACtD,IAAI,QAAQ,KAAK,OAAO,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,CAAC;IACrD,IAAI,KAAK,KAAc,OAAO,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC;IAE9C,iBAAiB,CAAW;IAGpC,IAAI,gBAAgB;QAChB,IAAI,CAAC,IAAI,CAAC,iBAAiB;YAAE,IAAI,CAAC,iBAAiB,GAAG,IAAI,OAAO,EAAE,CAAC;QACpE,OAAO,IAAI,CAAC,iBAAiB,CAAC;IAClC,CAAC;IACD,IAAY,gBAAgB,CAAC,KAAc;QACvC,IAAI,CAAC,iBAAiB,GAAG,KAAK,CAAC;IACnC,CAAC;IAGO,IAAI,CAAQ,CAAC,6CAA6C;IAGlE,SAAS,CAAW;IAGpB,KAAK,CAAW;IAGhB,SAAS,CAAW;IAEpB,SAAS,CAAW;IAGpB,SAAS,CAAW;IAEpB,SAAS,CAAW;IAEpB,IAAI,KAAK;QACL,IAAI,IAAI,CAAC,SAAS,CAAC,CAAC,KAAK,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE;YACvC,IAAI,IAAI,CAAC,oBAAoB,EAAE;gBAC3B,MAAM,WAAW,GAAG,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC;gBACpD,MAAM,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;gBACxD,IAAI,KAAK,GAAG,WAAW,GAAG,WAAW,CAAC;gBACtC,KAAK,IAAI,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;gBAC1B,OAAO,KAAK,CAAC;aAChB;SACJ;QACD,OAAO,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;IAC5B,CAAC;IACD,IAAI,MAAM;QACN,IAAI,IAAI,CAAC,SAAS,CAAC,CAAC,KAAK,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE;YACvC,IAAI,IAAI,CAAC,oBAAoB,EAAE;gBAC3B,MAAM,YAAY,GAAG,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC;gBACtD,MAAM,YAAY,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;gBACzD,IAAI,MAAM,GAAG,YAAY,GAAG,YAAY,CAAC;gBACzC,MAAM,IAAI,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;gBAC3B,OAAO,MAAM,CAAA;aAChB;SACJ;QACD,OAAO,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;IAC5B,CAAC;IAED,qCAAqC;IAC7B,UAAU,CAAW;IACrB,SAAS,CAAY;IACrB,qBAAqB,GAAY,KAAK,CAAC;IAE/C,KAAK;QACD,KAAK,CAAC,KAAK,EAAE,CAAC;QACd,IAAI,CAAC,UAAU,GAAG,IAAI,OAAO,EAAE,CAAC;QAChC,IAAI,CAAC,SAAS,GAAG,IAAI,QAAQ,EAAE,CAAC;QAAA,CAAC;QACjC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,GAAG,EAAE,CAAC;QAC/B,IAAI,CAAC,SAAS,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;QAEhC,mEAAmE;QACnE,IAAI,CAAC,IAAI,CAAC,iBAAiB;YAAE,IAAI,CAAC,iBAAiB,GAAG,IAAI,OAAO,EAAE,CAAC;QAEpE,kGAAkG;QAClG,kFAAkF;QAClF,sEAAsE;QACtE,QAAQ,CAAC,IAAI,EAAE,mBAAmB,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QACjE,QAAQ,CAAC,IAAI,EAAE,WAAW,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QACzD,QAAQ,CAAC,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QAErD,oEAAoE;QACpE,6EAA6E;QAC7E,uFAAuF;QACvF,2FAA2F;QAC3F,4DAA4D;QAC5D,wFAAwF;QACxF,sFAAsF;QACtF,sFAAsF;QACtF,wDAAwD;QACxD,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE;YAChB,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,IAAI,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC;YACtD,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,IAAI,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC;SACzD;IACL,CAAC;IAED,QAAQ;QACJ,KAAK,CAAC,QAAQ,EAAE,CAAC;QACjB,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACxC,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC;QAClC,IAAI,CAAC,MAAM,EAAE,iBAAiB,CAAC,IAAI,CAAC,CAAC;IACzC,CAAC;IAED,SAAS;QACL,KAAK,CAAC,SAAS,EAAE,CAAC;QAClB,IAAI,CAAC,qBAAqB,EAAE,CAAC;QAC7B,IAAI,CAAC,MAAM,EAAE,mBAAmB,CAAC,IAAI,CAAC,CAAC;IAC3C,CAAC;IAED,4BAA4B,CAAC,IAAoB;QAC7C,IAAI,IAAI,CAAC,qBAAqB;YAAE,OAAO;QACvC,iFAAiF;QACjF,IAAI,CAAC,gBAAgB,CAAC,WAAW,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;IAC5E,CAAC;IAED,IAAI,OAAO;QACP,IAAG,CAAC,IAAI,CAAC,qBAAqB;YAAE,IAAI,CAAC,qBAAqB,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;QAC7G,OAAO,IAAI,CAAC,qBAAqB,CAAC;IACtC,CAAC;IAED,mDAAmD;IAEnD,SAAS;QACL,IAAI,IAAI,CAAC,qBAAqB;YAAE,OAAO;QACvC,IAAI,WAAW;YAAE,OAAO,CAAC,IAAI,CAAC,2BAA2B,EAAE,IAAI,CAAC,IAAI,CAAC,CAAA;QACrE,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC;QAClC,iHAAiH;QACjH,yDAAyD;QACzD,IAAI,CAAC,gBAAgB,GAAG,CAAC,CAAC,CAAC;IAC/B,CAAC;IAGD,2DAA2D;IAC3D,eAAe;QACX,sIAAsI;QACtI,MAAM,gBAAgB,GAAG,IAAI,CAAC,qBAAqB,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAA,gEAAgE;QACvK,IAAI,gBAAgB,IAAI,IAAI,CAAC,SAAS,EAAE,EAAE;YACtC,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC;SACzF;IACL,CAAC;IAEO,oBAAoB,CAAiB;IACrC,gBAAgB,GAAW,CAAC,CAAC,CAAC;IAE9B,SAAS;QACb,OAAO,IAAI,CAAC,qBAAqB,IAAI,IAAI,CAAC,gBAAgB,IAAI,IAAI,CAAC,gBAAgB,KAAK,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC;IACpH,CAAC;IAEO,gBAAgB,CAAC,MAAe;QACpC,iIAAiI;QACjI,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,KAAK,IAAI,CAAC,gBAAgB;YAAE,OAAO;QACnE,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC;QAErD,MAAM,QAAQ,GAAG,IAAI,CAAC,eAAe,CAAC;QACtC,IAAI,CAAC,QAAQ;YAAE,OAAO;QACtB,IAAI,CAAC,oBAAoB,GAAG,UAAU,CAAC,oBAAoB,CAAC,IAAI,CAAC,UAAU,CAAC,MAAO,EAAE,aAAa,CAAkB,CAAC;QAErH,IAAI,CAAC,qBAAqB,GAAG,KAAK,CAAC;QACnC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;QAE7C,IAAI,WAAW;YAAE,OAAO,CAAC,IAAI,CAAC,gCAAgC,EAAE,IAAI,CAAC,IAAI,GAAG,WAAW,GAAG,MAAM,CAAC,CAAC;QAElG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE;YAChB,oBAAoB;YACpB,QAAQ,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;YAC3B,QAAQ,CAAC,gBAAgB,GAAG,KAAK,CAAC;YAClC,uBAAuB;YACvB,OAAO,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;YACrB,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;YACzB,QAAQ,CAAC,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YACrD,wEAAwE;YACxE,IAAI,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,EAAE;gBAC9F,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;gBAChD,cAAc,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;gBACvB,cAAc,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;gBACvB,UAAU,CAAC,0BAA0B,CAAC,cAAc,CAAC,CAAC;gBACtD,QAAQ,CAAC,MAAM,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;aAC3C;YACD,oCAAoC;YACpC,OAAO,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;YACrB,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;YAC7B,OAAO,CAAC,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC;YACzB,OAAO,CAAC,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC;YACxC,UAAU,CAAC,QAAQ,EAAE,CAAC;YACtB,UAAU,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;YACxD,QAAQ,CAAC,MAAM,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;YACxC,2BAA2B;YAC3B,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;SAChD;aACI;YACD,uDAAuD;YACvD,MAAM,MAAM,GAAG,IAAI,CAAC,IAAsB,CAAC;YAC3C,IAAI,CAAC,MAAM,CAAC,WAAW;gBAAE,QAAQ,CAAC,QAAQ,CAAC,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC;SAC1D;QAED,6FAA6F;QAC7F,+DAA+D;QAC/D,MAAM,eAAe,GAAG,IAAI,CAAC;QAC7B,KAAK,MAAM,IAAI,IAAI,0BAA0B,CAAC,IAAI,CAAC,UAAU,EAAE,eAAe,EAAE,eAAe,EAAE,CAAC,CAAC,EAAE;YACjG,IAAI,IAAI,KAAK,IAAI;gBAAE,SAAS;YAC5B,IAAI,CAAC,IAAI,CAAC,gBAAgB;gBAAE,SAAS;YACrC,MAAM,QAAQ,GAAG,IAA4C,CAAC;YAC9D,IAAI,QAAQ,CAAC,4BAA4B,EAAE;gBACvC,6GAA6G;gBAC7G,QAAQ,CAAC,4BAA4B,CAAC,IAAI,CAAC,CAAC;aAC/C;SACJ;QAED,iFAAiF;IACrF,CAAC;IAED,oBAAoB;IACpB,yCAAyC;IACzC,0JAA0J;IAC1J,kEAAkE;IAClE,QAAQ;IACR,IAAI;IAEJ,0DAA0D;IAClD,cAAc,CAAC,GAAY;QAC/B,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC;QACjC,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC;QAEjC,MAAM,MAAM,GAAG,IAAI,CAAC,oBAAoB,CAAC;QACzC,IAAI,MAAM,EAAE;YACR,4BAA4B;YAC5B,IAAI,EAAE,GAAG,CAAC,CAAC;YACX,MAAM,IAAI,GAAG,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;YACrD,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,EAAE,CAAC,GAAG,IAAI,CAAC;YAClC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;YAEZ,8BAA8B;YAC9B,IAAI,EAAE,GAAG,CAAC,CAAC;YACX,MAAM,IAAI,GAAG,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;YACrD,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK,GAAG,EAAE,CAAC,GAAG,IAAI,CAAC;YACjC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;SACf;IACL,CAAC;IAED,uDAAuD;IAC/C,UAAU,CAAC,GAAY;QAC3B,IAAI,IAAI,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE;YAC9B,MAAM,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,CAAC;YAC7B,GAAG,CAAC,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC;YACzD,MAAM,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,CAAC;YAC7B,GAAG,CAAC,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC;SAC5D;IACL,CAAC;IAED,eAAe;QAEX,mGAAmG;QACnG,kCAAkC;QAClC,4BAA4B;QAC5B,8GAA8G;QAC9G,uBAAuB;QACvB,wBAAwB;QACxB,KAAK;QAEL,MAAM,IAAI,GAAG;YACT,KAAK,EAAE,IAAI,CAAC,IAAK,CAAC,KAAK;YACvB,MAAM,EAAE,IAAI,CAAC,IAAK,CAAC,MAAM;YACzB,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,iBAAiB,EAAE,CAAC;YACpB,WAAW,EAAE,CAAC;YACd,YAAY,EAAE,CAAC;YACf,aAAa,EAAE,CAAC;YAChB,aAAa,EAAE,CAAC,IAAI;YACpB,4BAA4B;YAC5B,wBAAwB;YACxB,0BAA0B;YAC1B,uCAAuC;SAC1C,CAAC;QACF,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;QAC3B,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,0EAA0E;IAClE,eAAe,CAAC,IAAU,EAAE,aAAa,GAAG,MAAM;QACtD,IAAI,IAAI,CAAC,KAAK,IAAI,CAAC,EAAE;YACjB,IAAI,CAAC,KAAK,GAAG,aAAa,CAAC;SAC9B;QACD,IAAI,IAAI,CAAC,MAAM,IAAI,CAAC;YAAE,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QAC3C,OAAO,IAAI,CAAC;IAChB,CAAC;IAEO,cAAc,GAAwB,EAAE,CAAC;IACzC,kBAAkB,GAAuB,EAAE,CAAC;IAEpD,cAAc,CAAC,IAAuC;QAClD,IAAI,GAAG;YACH,GAAG,IAAI,CAAC,eAAe,EAAE;YACzB,GAAG,IAAI;SACV,CAAC;QACF,IAAI,KAAK;YACL,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QACjC,MAAM,KAAK,GAAG,IAAI,WAAW,CAAC,KAAK,CAAC,IAA+B,CAAC,CAAC;QACrE,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAChC,OAAO,KAAK,CAAC;IACjB,CAAC;IAED,aAAa,CAAC,IAAuC;QACjD,IAAI,KAAK;YACL,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;QACrB,IAAI,GAAG;YACH,GAAG,IAAI,CAAC,eAAe,EAAE;YACzB,GAAG,IAAI;SACV,CAAC;QACF,IAAI,KAAK;YACL,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QACjC,MAAM,KAAK,GAAG,IAAI,WAAW,CAAC,IAAI,CAAC,IAA+B,CAAC,CAAC;QACpE,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACpC,OAAO,KAAK,CAAC;IACjB,CAAC;CACJ;AAnTG;IADC,YAAY,CAAC,OAAO,CAAC;qDAIrB;AAMD;IADC,YAAY,CAAC,IAAI,CAAC;2CACC;AAGpB;IADC,YAAY,CAAC,OAAO,CAAC;gDACF;AAGpB;IADC,YAAY,CAAC,OAAO,CAAC;4CACN;AAGhB;IADC,YAAY,CAAC,OAAO,CAAC;gDACF;AAEpB;IADC,YAAY,CAAC,OAAO,CAAC;gDACF;AAGpB;IADC,YAAY,CAAC,OAAO,CAAC;gDACF;AAEpB;IADC,YAAY,CAAC,OAAO,CAAC;gDACF"}
@@ -19,7 +19,7 @@ declare enum HorizontalWrapMode {
19
19
  Wrap = 0,
20
20
  Overflow = 1
21
21
  }
22
- declare enum FontStyle {
22
+ export declare enum FontStyle {
23
23
  Normal = 0,
24
24
  Bold = 1,
25
25
  Italic = 2,
@@ -40,29 +40,32 @@ export declare class Text extends Graphic {
40
40
  get fontSize(): number;
41
41
  set fontSize(val: number);
42
42
  protected onColorChanged(): void;
43
- private _isWaitingForRebuild;
44
- private requestRebuild;
45
- private rebuildDelayedRoutine;
43
+ onParentRectTransformChanged(): void;
44
+ onBeforeRender(): void;
45
+ private updateOverflow;
46
46
  protected onCreate(_opts: any): void;
47
47
  onAfterAddedToScene(): void;
48
48
  private _text;
49
49
  private _fontSize;
50
50
  private _textMeshUi;
51
- private _textContainer;
52
51
  private getTextOpts;
53
52
  onEnable(): void;
54
- private createBlock;
55
53
  private getAlignment;
56
- private updateWidth;
57
- private ensureShadowComponentOwner;
58
- private createText;
54
+ private feedText;
59
55
  private _didHandleTextRenderOnTop;
60
56
  private handleTextRenderOnTop;
61
57
  private renderOnTopCoroutine;
62
58
  private handleTag;
63
59
  private getText;
64
60
  private getNextTag;
61
+ /**
62
+ * Update provided opts to have a proper fontDefinition : family+weight+style
63
+ * Ensure Family and Variant are registered in FontLibrary
64
+ *
65
+ * @param opts
66
+ * @param fontStyle
67
+ * @private
68
+ */
65
69
  private setFont;
66
- private getFontStyleName;
67
70
  }
68
71
  export {};