@galacean/engine-ui 2.0.0-alpha.2 → 2.0.0-alpha.5

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.
package/dist/module.js CHANGED
@@ -1498,7 +1498,18 @@ var UICanvas = /*#__PURE__*/ function(Component) {
1498
1498
  /**
1499
1499
  * @internal
1500
1500
  */ _proto._canRender = function _canRender(camera) {
1501
- return this._renderMode !== CanvasRenderMode.ScreenSpaceCamera || this._renderCamera === camera;
1501
+ return this._realRenderMode !== CanvasRenderMode.ScreenSpaceCamera || this._camera === camera;
1502
+ };
1503
+ /**
1504
+ * @internal
1505
+ */ _proto._canDispatchEvent = function _canDispatchEvent(camera) {
1506
+ var realMode = this._realRenderMode;
1507
+ if (realMode === CanvasRenderMode.ScreenSpaceOverlay) {
1508
+ return true;
1509
+ }
1510
+ var assignedCamera = this._camera;
1511
+ // @ts-ignore
1512
+ return !assignedCamera || !assignedCamera._phasedActiveInScene || assignedCamera === camera;
1502
1513
  };
1503
1514
  /**
1504
1515
  * @internal
@@ -1600,13 +1611,13 @@ var UICanvas = /*#__PURE__*/ function(Component) {
1600
1611
  * @internal
1601
1612
  */ _proto._cloneTo = function _cloneTo(target, srcRoot, targetRoot) {
1602
1613
  target.renderMode = this._renderMode;
1603
- var renderCamera = this._renderCamera;
1604
- if (renderCamera) {
1614
+ var camera = this._camera;
1615
+ if (camera) {
1605
1616
  var paths = UICanvas._targetTempPath;
1606
1617
  // @ts-ignore
1607
- var success = Entity._getEntityHierarchyPath(srcRoot, renderCamera.entity, paths);
1618
+ var success = Entity._getEntityHierarchyPath(srcRoot, camera.entity, paths);
1608
1619
  // @ts-ignore
1609
- target.renderCamera = success ? Entity._getEntityByHierarchyPath(targetRoot, paths).getComponent(Camera) : renderCamera;
1620
+ target.camera = success ? Entity._getEntityByHierarchyPath(targetRoot, paths).getComponent(Camera) : camera;
1610
1621
  }
1611
1622
  };
1612
1623
  _proto._getRenderers = function _getRenderers() {
@@ -1624,7 +1635,7 @@ var UICanvas = /*#__PURE__*/ function(Component) {
1624
1635
  var transform = this.entity.transform;
1625
1636
  var realRenderMode = this._realRenderMode;
1626
1637
  if (realRenderMode === CanvasRenderMode.ScreenSpaceCamera) {
1627
- var cameraEntity = this._renderCamera.entity;
1638
+ var cameraEntity = this._camera.entity;
1628
1639
  if (!this._isSameOrChildEntity(cameraEntity)) {
1629
1640
  var cameraTransform = cameraEntity.transform;
1630
1641
  var cameraWorldPosition = cameraTransform.worldPosition, cameraWorldForward = cameraTransform.worldForward;
@@ -1645,9 +1656,9 @@ var UICanvas = /*#__PURE__*/ function(Component) {
1645
1656
  var curWidth;
1646
1657
  var curHeight;
1647
1658
  if (realRenderMode === CanvasRenderMode.ScreenSpaceCamera) {
1648
- var renderCamera = this._renderCamera;
1649
- curHeight = renderCamera.isOrthographic ? renderCamera.orthographicSize * 2 : 2 * (Math.tan(MathUtil.degreeToRadian(renderCamera.fieldOfView * 0.5)) * this._distance);
1650
- curWidth = renderCamera.aspectRatio * curHeight;
1659
+ var camera = this._camera;
1660
+ curHeight = camera.isOrthographic ? camera.orthographicSize * 2 : 2 * (Math.tan(MathUtil.degreeToRadian(camera.fieldOfView * 0.5)) * this._distance);
1661
+ curWidth = camera.aspectRatio * curHeight;
1651
1662
  } else {
1652
1663
  var canvas = this.engine.canvas;
1653
1664
  curHeight = canvas.height;
@@ -1717,7 +1728,7 @@ var UICanvas = /*#__PURE__*/ function(Component) {
1717
1728
  return depth;
1718
1729
  };
1719
1730
  _proto._updateCameraObserver = function _updateCameraObserver() {
1720
- var camera = this._isRootCanvas && this._renderMode === CanvasRenderMode.ScreenSpaceCamera ? this._renderCamera : null;
1731
+ var camera = this._isRootCanvas && this._renderMode === CanvasRenderMode.ScreenSpaceCamera ? this._camera : null;
1721
1732
  var preCamera = this._cameraObserver;
1722
1733
  if (preCamera !== camera) {
1723
1734
  this._cameraObserver = camera;
@@ -1743,10 +1754,10 @@ var UICanvas = /*#__PURE__*/ function(Component) {
1743
1754
  this._adapterSizeInScreenSpace();
1744
1755
  break;
1745
1756
  case CameraModifyFlags.FieldOfView:
1746
- !this._renderCamera.isOrthographic && this._adapterSizeInScreenSpace();
1757
+ !this._camera.isOrthographic && this._adapterSizeInScreenSpace();
1747
1758
  break;
1748
1759
  case CameraModifyFlags.OrthographicSize:
1749
- this._renderCamera.isOrthographic && this._adapterSizeInScreenSpace();
1760
+ this._camera.isOrthographic && this._adapterSizeInScreenSpace();
1750
1761
  break;
1751
1762
  case CameraModifyFlags.DisableInScene:
1752
1763
  this._setRealRenderMode(CanvasRenderMode.ScreenSpaceOverlay);
@@ -1817,9 +1828,10 @@ var UICanvas = /*#__PURE__*/ function(Component) {
1817
1828
  };
1818
1829
  _proto._getRealRenderMode = function _getRealRenderMode() {
1819
1830
  if (this._isRootCanvas) {
1820
- var _this__renderCamera;
1831
+ var _this__camera;
1821
1832
  var mode = this._renderMode;
1822
- if (mode === CanvasRenderMode.ScreenSpaceCamera && !((_this__renderCamera = this._renderCamera) == null ? void 0 : _this__renderCamera.enabled)) {
1833
+ // @ts-ignore
1834
+ if (mode === CanvasRenderMode.ScreenSpaceCamera && !((_this__camera = this._camera) == null ? void 0 : _this__camera._phasedActiveInScene)) {
1823
1835
  return CanvasRenderMode.ScreenSpaceOverlay;
1824
1836
  } else {
1825
1837
  return mode;
@@ -1909,18 +1921,22 @@ var UICanvas = /*#__PURE__*/ function(Component) {
1909
1921
  }
1910
1922
  },
1911
1923
  {
1912
- key: "renderCamera",
1924
+ key: "camera",
1913
1925
  get: /**
1914
- * The camera used to render the UI canvas in `ScreenSpaceCamera` mode.
1915
- * @remarks If set `ScreenSpaceCamera` but no corresponding camera is assigned, the actual rendering mode defaults to `ScreenSpaceOverlay`.
1926
+ * The camera associated with this canvas.
1927
+ * @remarks
1928
+ * - `ScreenSpaceCamera` mode: Used for rendering adaptation. Defaults to `ScreenSpaceOverlay` if not assigned.
1929
+ * - `WorldSpace` mode: Used for event detection. If not assigned, events are handled by the highest-priority camera.
1916
1930
  */ function get() {
1917
- return this._renderCamera;
1931
+ return this._camera;
1918
1932
  },
1919
1933
  set: function set(value) {
1920
- var preCamera = this._renderCamera;
1934
+ var preCamera = this._camera;
1921
1935
  if (preCamera !== value) {
1922
- value && this._isSameOrChildEntity(value.entity) && Logger.warn("Camera entity matching or nested within the canvas entity disables canvas auto-adaptation in ScreenSpaceCamera mode.");
1923
- this._renderCamera = value;
1936
+ if (value && this._isSameOrChildEntity(value.entity)) {
1937
+ Logger.warn("Camera entity matching or nested within the canvas entity disables canvas auto-adaptation in ScreenSpaceCamera mode.");
1938
+ }
1939
+ this._camera = value;
1924
1940
  this._updateCameraObserver();
1925
1941
  var preRenderMode = this._realRenderMode;
1926
1942
  var curRenderMode = this._getRealRenderMode();
@@ -1935,6 +1951,17 @@ var UICanvas = /*#__PURE__*/ function(Component) {
1935
1951
  }
1936
1952
  }
1937
1953
  },
1954
+ {
1955
+ key: "renderCamera",
1956
+ get: /**
1957
+ * @deprecated Use {@link camera} instead.
1958
+ */ function get() {
1959
+ return this.camera;
1960
+ },
1961
+ set: function set(value) {
1962
+ this.camera = value;
1963
+ }
1964
+ },
1938
1965
  {
1939
1966
  key: "resolutionAdaptationMode",
1940
1967
  get: /**
@@ -2030,7 +2057,7 @@ __decorate([
2030
2057
  ], UICanvas.prototype, "_renderMode", void 0);
2031
2058
  __decorate([
2032
2059
  ignoreClone
2033
- ], UICanvas.prototype, "_renderCamera", void 0);
2060
+ ], UICanvas.prototype, "_camera", void 0);
2034
2061
  __decorate([
2035
2062
  ignoreClone
2036
2063
  ], UICanvas.prototype, "_cameraObserver", void 0);
@@ -2142,6 +2169,7 @@ __decorate([
2142
2169
  var _this;
2143
2170
  _this = UIRenderer1.call(this, entity) || this, _this._sprite = null, _this._tileMode = SpriteTileMode.Continuous, _this._tiledAdaptiveThreshold = 0.5;
2144
2171
  _this.drawMode = SpriteDrawMode.Simple;
2172
+ // @ts-ignore
2145
2173
  _this.setMaterial(_this._engine._getUIDefaultMaterial());
2146
2174
  _this._onSpriteChange = _this._onSpriteChange.bind(_this);
2147
2175
  return _this;
@@ -2193,6 +2221,7 @@ __decorate([
2193
2221
  }
2194
2222
  // @todo: This question needs to be raised rather than hidden.
2195
2223
  if (material.destroyed) {
2224
+ // @ts-ignore
2196
2225
  material = this._engine._getUIDefaultMaterial();
2197
2226
  }
2198
2227
  var alpha = this._getGlobalAlpha();
@@ -2400,7 +2429,7 @@ __decorate([
2400
2429
  _inherits(Text, UIRenderer1);
2401
2430
  function Text(entity) {
2402
2431
  var _this;
2403
- _this = UIRenderer1.call(this, entity) || this, _this._textChunks = Array(), _this._subFont = null, _this._text = "", _this._localBounds = new BoundingBox(), _this._font = null, _this._fontSize = 24, _this._fontStyle = FontStyle.None, _this._lineSpacing = 0, _this._horizontalAlignment = TextHorizontalAlignment.Center, _this._verticalAlignment = TextVerticalAlignment.Center, _this._enableWrapping = false, _this._overflowMode = OverflowMode.Overflow;
2432
+ _this = UIRenderer1.call(this, entity) || this, _this._textChunks = Array(), _this._subFont = null, _this._text = "", _this._localBounds = new BoundingBox(), _this._font = null, _this._fontSize = 24, _this._fontStyle = FontStyle.None, _this._lineSpacing = 0, _this._characterSpacing = 0, _this._horizontalAlignment = TextHorizontalAlignment.Center, _this._verticalAlignment = TextVerticalAlignment.Center, _this._enableWrapping = false, _this._overflowMode = OverflowMode.Overflow;
2404
2433
  var engine = _this.engine;
2405
2434
  // @ts-ignore
2406
2435
  _this.font = engine._textDefaultFont;
@@ -2577,7 +2606,8 @@ __decorate([
2577
2606
  var rendererHeight = size.y;
2578
2607
  var offsetWidth = rendererWidth * (0.5 - pivot.x);
2579
2608
  var offsetHeight = rendererHeight * (0.5 - pivot.y);
2580
- var textMetrics = this.enableWrapping ? TextUtils.measureTextWithWrap(this, rendererWidth * pixelsPerResolution, rendererHeight * pixelsPerResolution, this._lineSpacing * pixelsPerResolution) : TextUtils.measureTextWithoutWrap(this, rendererHeight * pixelsPerResolution, this._lineSpacing * pixelsPerResolution);
2609
+ var characterSpacing = this._characterSpacing * this._fontSize;
2610
+ var textMetrics = this.enableWrapping ? TextUtils.measureTextWithWrap(this, rendererWidth * pixelsPerResolution, rendererHeight * pixelsPerResolution, this._lineSpacing * this._fontSize, characterSpacing) : TextUtils.measureTextWithoutWrap(this, rendererHeight * pixelsPerResolution, this._lineSpacing * this._fontSize, characterSpacing);
2581
2611
  var height = textMetrics.height, lines = textMetrics.lines, lineWidths = textMetrics.lineWidths, lineHeight = textMetrics.lineHeight, lineMaxSizes = textMetrics.lineMaxSizes;
2582
2612
  // @ts-ignore
2583
2613
  var charRenderInfoPool = this.engine._charRenderInfoPool;
@@ -2649,7 +2679,7 @@ __decorate([
2649
2679
  j === firstRow && (minX = Math.min(minX, left));
2650
2680
  maxX = Math.max(maxX, right);
2651
2681
  }
2652
- startX += charInfo.xAdvance + charInfo.offsetX;
2682
+ startX += charInfo.xAdvance + characterSpacing;
2653
2683
  }
2654
2684
  }
2655
2685
  startY -= lineHeight;
@@ -2821,7 +2851,7 @@ __decorate([
2821
2851
  {
2822
2852
  key: "lineSpacing",
2823
2853
  get: /**
2824
- * The space between two lines (in pixels).
2854
+ * The space between two lines, in em (ratio of fontSize).
2825
2855
  */ function get() {
2826
2856
  return this._lineSpacing;
2827
2857
  },
@@ -2832,6 +2862,20 @@ __decorate([
2832
2862
  }
2833
2863
  }
2834
2864
  },
2865
+ {
2866
+ key: "characterSpacing",
2867
+ get: /**
2868
+ * The space between two characters, in em (ratio of fontSize).
2869
+ */ function get() {
2870
+ return this._characterSpacing;
2871
+ },
2872
+ set: function set(value) {
2873
+ if (this._characterSpacing !== value) {
2874
+ this._characterSpacing = value;
2875
+ this._setDirtyFlagTrue(25);
2876
+ }
2877
+ }
2878
+ },
2835
2879
  {
2836
2880
  key: "horizontalAlignment",
2837
2881
  get: /**
@@ -2957,6 +3001,9 @@ __decorate([
2957
3001
  __decorate([
2958
3002
  assignmentClone
2959
3003
  ], Text.prototype, "_lineSpacing", void 0);
3004
+ __decorate([
3005
+ assignmentClone
3006
+ ], Text.prototype, "_characterSpacing", void 0);
2960
3007
  __decorate([
2961
3008
  assignmentClone
2962
3009
  ], Text.prototype, "_horizontalAlignment", void 0);
@@ -3374,7 +3421,7 @@ var UIPointerEventEmitter = /*#__PURE__*/ function(PointerEventEmitter1) {
3374
3421
  // Post-rendering first detection
3375
3422
  for(var k2 = 0, n2 = canvasElements.length; k2 < n2; k2++){
3376
3423
  var canvas = canvasElements.get(k2);
3377
- if (!canvas._canRender(camera)) continue;
3424
+ if (!canvas._canDispatchEvent(camera)) continue;
3378
3425
  if (canvas._raycast(ray, hitResult, farClipPlane)) {
3379
3426
  this._updateRaycast(hitResult.component, pointer);
3380
3427
  return;