@galacean/engine-ui 1.4.0-beta.1 → 1.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/module.js CHANGED
@@ -1,4 +1,4 @@
1
- import { EntityModifyFlags, ignoreClone, assignmentClone, DisorderedArray, Component, deepClone, Vector2, Transform, Vector3, Matrix, Plane, ShaderProperty, dependentComponents, DependentMode, BatchUtils, ShaderMacroCollection, Renderer, Vector4, Color, RendererUpdateFlags, Script, MathUtil, CameraModifyFlags, SafeLoopArray, SpriteDrawMode, RenderQueueFlags, SpriteModifyFlags, SpriteTileMode, TiledSpriteAssembler, SlicedSpriteAssembler, SimpleSpriteAssembler, BoundingBox, ShaderData, ShaderDataGroup, TextUtils, Engine, TextVerticalAlignment, TextHorizontalAlignment, OverflowMode, CharRenderInfo, FontStyle, ReferResource, registerPointerEventEmitter, PointerEventEmitter, CameraClearFlags, ReflectionParser, Shader, ShaderPass, PipelineStage, Material, BlendFactor, BlendOperation, CullMode, RenderQueueType, Entity } from '@galacean/engine';
1
+ import { EntityModifyFlags, ignoreClone, assignmentClone, DisorderedArray, Component, deepClone, Vector2, Transform, Vector3, Matrix, Plane, ShaderProperty, dependentComponents, DependentMode, BatchUtils, ShaderMacroCollection, Renderer, Vector4, Color, RendererUpdateFlags, Script, MathUtil, CameraModifyFlags, SafeLoopArray, SpriteDrawMode, RenderQueueFlags, SpriteModifyFlags, SpriteTileMode, TiledSpriteAssembler, SlicedSpriteAssembler, SimpleSpriteAssembler, BoundingBox, ShaderData, ShaderDataGroup, TextUtils, Engine, TextVerticalAlignment, TextHorizontalAlignment, OverflowMode, CharRenderInfo, FontStyle, ReferResource, registerPointerEventEmitter, PointerEventEmitter, CameraClearFlags, ReflectionParser, Shader, ShaderPass, PipelineStage, Material, BlendFactor, BlendOperation, CullMode, RenderQueueType, Entity, Loader, Font } from '@galacean/engine';
2
2
 
3
3
  function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {
4
4
  try {
@@ -86,10 +86,6 @@ typeof SuppressedError === "function" ? SuppressedError : function (error, suppr
86
86
  return e.name = "SuppressedError", e.error = error, e.suppressed = suppressed, e;
87
87
  };
88
88
 
89
- var uiDefaultFs = "#define GLSLIFY 1\nuniform sampler2D renderer_UITexture;\n\nvarying vec2 v_uv;\nvarying vec4 v_color;\n\nvoid main() {\n vec4 baseColor = texture2D(renderer_UITexture, v_uv);\n gl_FragColor = baseColor * v_color;\n}\n"; // eslint-disable-line
90
-
91
- var uiDefaultVs = "#define GLSLIFY 1\nuniform mat4 renderer_MVPMat;\n\nattribute vec3 POSITION;\nattribute vec2 TEXCOORD_0;\nattribute vec4 COLOR_0;\n\nvarying vec2 v_uv;\nvarying vec4 v_color;\n\nvoid main() {\n gl_Position = renderer_MVPMat * vec4(POSITION, 1.0);\n\n v_uv = TEXCOORD_0;\n v_color = COLOR_0;\n}\n"; // eslint-disable-line
92
-
93
89
  function _defineProperties(target, props) {
94
90
  for (var i = 0; i < props.length; i++) {
95
91
  var descriptor = props[i];
@@ -905,7 +901,7 @@ UIRenderer = __decorate([
905
901
  _proto.onDestroy = function onDestroy() {
906
902
  Script.prototype.onDestroy.call(this);
907
903
  var transitions = this._transitions;
908
- for(var i = 0, n = transitions.length; i < n; i++){
904
+ for(var i = transitions.length - 1; i >= 0; i--){
909
905
  transitions[i].destroy();
910
906
  }
911
907
  };
@@ -1070,7 +1066,7 @@ var UICanvas = /*#__PURE__*/ function(Component) {
1070
1066
  _inherits(UICanvas, Component);
1071
1067
  function UICanvas(entity) {
1072
1068
  var _this;
1073
- _this = Component.call(this, entity) || this, /** @internal */ _this._canvasIndex = -1, /** @internal */ _this._indexInRootCanvas = -1, /** @internal */ _this._isRootCanvasDirty = false, /** @internal */ _this._rootCanvasListeningEntities = [], /** @internal */ _this._isRootCanvas = false, /** @internal */ _this._sortDistance = 0, /** @internal */ _this._orderedRenderers = [], /** @internal */ _this._realRenderMode = 4, /** @internal */ _this._disorderedElements = new DisorderedArray(), _this._renderMode = CanvasRenderMode.WorldSpace, _this._resolutionAdaptationMode = ResolutionAdaptationMode.HeightAdaptation, _this._sortOrder = 0, _this._distance = 10, _this._referenceResolution = new Vector2(800, 600), _this._referenceResolutionPerUnit = 100, _this._hierarchyVersion = -1;
1069
+ _this = Component.call(this, entity) || this, /** @internal */ _this._canvasIndex = -1, /** @internal */ _this._indexInRootCanvas = -1, /** @internal */ _this._isRootCanvasDirty = false, /** @internal */ _this._rootCanvasListeningEntities = [], /** @internal */ _this._isRootCanvas = false, /** @internal */ _this._sortDistance = 0, /** @internal */ _this._orderedRenderers = [], /** @internal */ _this._realRenderMode = 4, /** @internal */ _this._disorderedElements = new DisorderedArray(), _this._renderMode = CanvasRenderMode.WorldSpace, _this._resolutionAdaptationMode = ResolutionAdaptationMode.HeightAdaptation, _this._sortOrder = 0, _this._distance = 10, _this._referenceResolution = new Vector2(800, 600), _this._referenceResolutionPerUnit = 100, _this._hierarchyVersion = -1, _this._center = new Vector3();
1074
1070
  _this._onCanvasSizeListener = _this._onCanvasSizeListener.bind(_this);
1075
1071
  _this._onCameraModifyListener = _this._onCameraModifyListener.bind(_this);
1076
1072
  _this._onCameraTransformListener = _this._onCameraTransformListener.bind(_this);
@@ -1078,10 +1074,13 @@ var UICanvas = /*#__PURE__*/ function(Component) {
1078
1074
  // @ts-ignore
1079
1075
  _this._referenceResolution._onValueChanged = _this._onReferenceResolutionChanged;
1080
1076
  _this._rootCanvasListener = _this._rootCanvasListener.bind(_this);
1077
+ _this._centerDirtyFlag = entity.registerWorldChangeFlag();
1081
1078
  return _this;
1082
1079
  }
1083
1080
  var _proto = UICanvas.prototype;
1084
- _proto.raycast = function raycast(ray, out, distance) {
1081
+ /**
1082
+ * @internal
1083
+ */ _proto._raycast = function _raycast(ray, out, distance) {
1085
1084
  if (distance === void 0) distance = Number.MAX_SAFE_INTEGER;
1086
1085
  var renderers = this._getRenderers();
1087
1086
  for(var i = renderers.length - 1; i >= 0; i--){
@@ -1115,7 +1114,8 @@ var UICanvas = /*#__PURE__*/ function(Component) {
1115
1114
  var frameCount = engine.time.frameCount;
1116
1115
  // @ts-ignore
1117
1116
  var renderElement = this._renderElement = engine._renderElementPool.get();
1118
- this._updateSortDistance(context.virtualCamera.position);
1117
+ var virtualCamera = context.virtualCamera;
1118
+ this._updateSortDistance(virtualCamera.isOrthographic, virtualCamera.position, virtualCamera.forward);
1119
1119
  renderElement.set(this.sortOrder, this._sortDistance);
1120
1120
  var _engine_canvas = engine.canvas, width = _engine_canvas.width, height = _engine_canvas.height;
1121
1121
  var renderers = this._getRenderers();
@@ -1148,7 +1148,7 @@ var UICanvas = /*#__PURE__*/ function(Component) {
1148
1148
  };
1149
1149
  /**
1150
1150
  * @internal
1151
- */ _proto._updateSortDistance = function _updateSortDistance(cameraPosition) {
1151
+ */ _proto._updateSortDistance = function _updateSortDistance(isOrthographic, cameraPosition, cameraForward) {
1152
1152
  switch(this._realRenderMode){
1153
1153
  case CanvasRenderMode.ScreenSpaceOverlay:
1154
1154
  this._sortDistance = 0;
@@ -1157,7 +1157,13 @@ var UICanvas = /*#__PURE__*/ function(Component) {
1157
1157
  this._sortDistance = this._distance;
1158
1158
  break;
1159
1159
  case CanvasRenderMode.WorldSpace:
1160
- this._sortDistance = Vector3.distance(cameraPosition, this.entity.transform.worldPosition);
1160
+ var boundsCenter = this._getCenter();
1161
+ if (isOrthographic) {
1162
+ Vector3.subtract(boundsCenter, cameraPosition, boundsCenter);
1163
+ this._sortDistance = Vector3.dot(boundsCenter, cameraForward);
1164
+ } else {
1165
+ this._sortDistance = Vector3.distanceSquared(boundsCenter, cameraPosition);
1166
+ }
1161
1167
  break;
1162
1168
  }
1163
1169
  };
@@ -1387,6 +1393,17 @@ var UICanvas = /*#__PURE__*/ function(Component) {
1387
1393
  }
1388
1394
  }
1389
1395
  };
1396
+ _proto._getCenter = function _getCenter() {
1397
+ if (this._centerDirtyFlag.flag) {
1398
+ var center = this._center;
1399
+ var uiTransform = this.entity.transform;
1400
+ var pivot = uiTransform.pivot, size = uiTransform.size;
1401
+ center.set((0.5 - pivot.x) * size.x, (0.5 - pivot.y) * size.y, 0);
1402
+ Vector3.transformCoordinate(center, uiTransform.worldMatrix, center);
1403
+ this._centerDirtyFlag.flag = false;
1404
+ }
1405
+ return this._center;
1406
+ };
1390
1407
  _proto._getRealRenderMode = function _getRealRenderMode() {
1391
1408
  if (this._isRootCanvas) {
1392
1409
  var _this__renderCamera;
@@ -1605,6 +1622,12 @@ __decorate([
1605
1622
  __decorate([
1606
1623
  ignoreClone
1607
1624
  ], UICanvas.prototype, "_hierarchyVersion", void 0);
1625
+ __decorate([
1626
+ ignoreClone
1627
+ ], UICanvas.prototype, "_center", void 0);
1628
+ __decorate([
1629
+ ignoreClone
1630
+ ], UICanvas.prototype, "_centerDirtyFlag", void 0);
1608
1631
  __decorate([
1609
1632
  ignoreClone
1610
1633
  ], UICanvas.prototype, "_rootCanvasListener", null);
@@ -1940,6 +1963,7 @@ __decorate([
1940
1963
  var engine = _this.engine;
1941
1964
  // @ts-ignore
1942
1965
  _this.font = engine._textDefaultFont;
1966
+ _this.raycastEnabled = false;
1943
1967
  // @ts-ignore
1944
1968
  _this.setMaterial(engine._basicResources.textDefaultMaterial);
1945
1969
  return _this;
@@ -2702,16 +2726,28 @@ var TextChunk = function TextChunk() {
2702
2726
  }
2703
2727
  var _proto = ColorTransition.prototype;
2704
2728
  _proto._onNormalValueChanged = function _onNormalValueChanged() {
2705
- this._finalState === InteractiveState.Normal && this._updateValue();
2729
+ if (this._finalState === InteractiveState.Normal) {
2730
+ this._finalValue = this._normal;
2731
+ this._updateValue();
2732
+ }
2706
2733
  };
2707
2734
  _proto._onHoverValueChanged = function _onHoverValueChanged() {
2708
- this._finalState === InteractiveState.Hover && this._updateValue();
2735
+ if (this._finalState === InteractiveState.Hover) {
2736
+ this._finalValue = this._hover;
2737
+ this._updateValue();
2738
+ }
2709
2739
  };
2710
2740
  _proto._onPressedValueChanged = function _onPressedValueChanged() {
2711
- this._finalState === InteractiveState.Pressed && this._updateValue();
2741
+ if (this._finalState === InteractiveState.Pressed) {
2742
+ this._finalValue = this._pressed;
2743
+ this._updateValue();
2744
+ }
2712
2745
  };
2713
2746
  _proto._onDisabledValueChanged = function _onDisabledValueChanged() {
2714
- this._finalState === InteractiveState.Disable && this._updateValue();
2747
+ if (this._finalState === InteractiveState.Disable) {
2748
+ this._finalValue = this._disabled;
2749
+ this._updateValue();
2750
+ }
2715
2751
  };
2716
2752
  _proto._getTargetValueCopy = function _getTargetValueCopy() {
2717
2753
  var _this__target;
@@ -2803,11 +2839,30 @@ var TextChunk = function TextChunk() {
2803
2839
  this._currentValue = weight >= 1 ? destValue : srcValue;
2804
2840
  };
2805
2841
  _proto._applyValue = function _applyValue(value) {
2806
- this._target.sprite = value || this._normal;
2842
+ this._target.sprite = value;
2807
2843
  };
2808
2844
  return SpriteTransition;
2809
2845
  }(Transition);
2810
2846
 
2847
+ var GUIComponent = /*#__PURE__*/Object.freeze({
2848
+ __proto__: null,
2849
+ get UICanvas () { return UICanvas; },
2850
+ UIGroup: UIGroup,
2851
+ get UIRenderer () { return UIRenderer; },
2852
+ UITransform: UITransform,
2853
+ Button: Button,
2854
+ Image: Image,
2855
+ Text: Text,
2856
+ ColorTransition: ColorTransition,
2857
+ ScaleTransition: ScaleTransition,
2858
+ SpriteTransition: SpriteTransition,
2859
+ Transition: Transition
2860
+ });
2861
+
2862
+ var uiDefaultFs = "#define GLSLIFY 1\nuniform sampler2D renderer_UITexture;\n\nvarying vec2 v_uv;\nvarying vec4 v_color;\n\nvoid main() {\n vec4 baseColor = texture2D(renderer_UITexture, v_uv);\n gl_FragColor = baseColor * v_color;\n}\n"; // eslint-disable-line
2863
+
2864
+ var uiDefaultVs = "#define GLSLIFY 1\nuniform mat4 renderer_MVPMat;\n\nattribute vec3 POSITION;\nattribute vec2 TEXCOORD_0;\nattribute vec4 COLOR_0;\n\nvarying vec2 v_uv;\nvarying vec4 v_color;\n\nvoid main() {\n gl_Position = renderer_MVPMat * vec4(POSITION, 1.0);\n\n v_uv = TEXCOORD_0;\n v_color = COLOR_0;\n}\n"; // eslint-disable-line
2865
+
2811
2866
  /**
2812
2867
  * @internal
2813
2868
  */ var UIHitResult = function UIHitResult() {
@@ -2837,11 +2892,13 @@ var UIPointerEventEmitter = /*#__PURE__*/ function(PointerEventEmitter1) {
2837
2892
  if (!scene.isActive || scene.destroyed) continue;
2838
2893
  // @ts-ignore
2839
2894
  var componentsManager = scene._componentsManager;
2840
- /** Overlay Canvas */ var canvasElements = componentsManager._overlayCanvases;
2841
- ray.origin.set(position.x, position.y, 1);
2895
+ // Overlay Canvas
2896
+ var canvasElements = componentsManager._overlayCanvases;
2897
+ // Screen to world ( Assume that world units have a one-to-one relationship with pixel units )
2898
+ ray.origin.set(position.x, scene.engine.canvas.height - position.y, 1);
2842
2899
  ray.direction.set(0, 0, -1);
2843
2900
  for(var j = canvasElements.length - 1; j >= 0; j--){
2844
- if (canvasElements.get(j).raycast(ray, hitResult)) {
2901
+ if (canvasElements.get(j)._raycast(ray, hitResult)) {
2845
2902
  this._updateRaycast(hitResult.component, pointer);
2846
2903
  return;
2847
2904
  }
@@ -2855,10 +2912,13 @@ var UIPointerEventEmitter = /*#__PURE__*/ function(PointerEventEmitter1) {
2855
2912
  continue;
2856
2913
  }
2857
2914
  camera.screenPointToRay(pointer.position, ray);
2858
- /** Other canvases */ var cameraPosition = camera.entity.transform.position;
2859
- /** Sort by rendering order */ canvasElements = componentsManager._canvases;
2915
+ // Other canvases
2916
+ var isOrthographic = camera.isOrthographic;
2917
+ var _camera_entity_transform = camera.entity.transform, cameraPosition = _camera_entity_transform.worldPosition, cameraForward = _camera_entity_transform.worldForward;
2918
+ // Sort by rendering order
2919
+ canvasElements = componentsManager._canvases;
2860
2920
  for(var k = 0, n = canvasElements.length; k < n; k++){
2861
- canvasElements.get(k)._updateSortDistance(cameraPosition);
2921
+ canvasElements.get(k)._updateSortDistance(isOrthographic, cameraPosition, cameraForward);
2862
2922
  }
2863
2923
  canvasElements.sort(function(a, b) {
2864
2924
  return a.sortOrder - b.sortOrder || a._sortDistance - b._sortDistance;
@@ -2867,10 +2927,11 @@ var UIPointerEventEmitter = /*#__PURE__*/ function(PointerEventEmitter1) {
2867
2927
  canvasElements.get(k1)._canvasIndex = k1;
2868
2928
  }
2869
2929
  var farClipPlane = camera.farClipPlane;
2870
- /** Post-rendering first detection */ for(var k2 = 0, n2 = canvasElements.length; k2 < n2; k2++){
2930
+ // Post-rendering first detection
2931
+ for(var k2 = 0, n2 = canvasElements.length; k2 < n2; k2++){
2871
2932
  var canvas = canvasElements.get(k2);
2872
- if (canvas.renderCamera !== camera) continue;
2873
- if (canvas.raycast(ray, hitResult, farClipPlane)) {
2933
+ if (!canvas._canRender(camera)) continue;
2934
+ if (canvas._raycast(ray, hitResult, farClipPlane)) {
2874
2935
  this._updateRaycast(hitResult.component, pointer);
2875
2936
  return;
2876
2937
  }
@@ -2880,6 +2941,7 @@ var UIPointerEventEmitter = /*#__PURE__*/ function(PointerEventEmitter1) {
2880
2941
  return;
2881
2942
  }
2882
2943
  }
2944
+ this._updateRaycast(null);
2883
2945
  }
2884
2946
  };
2885
2947
  _proto.processDrag = function processDrag(pointer) {
@@ -3072,6 +3134,13 @@ ReflectionParser.registerCustomParseComponent("Text", /*#__PURE__*/ _async_to_ge
3072
3134
  ];
3073
3135
  });
3074
3136
  }));
3137
+ /**
3138
+ * Register GUI components for the editor.
3139
+ */ function registerGUI() {
3140
+ for(var key in GUIComponent){
3141
+ Loader.registerClass(key, GUIComponent[key]);
3142
+ }
3143
+ }
3075
3144
 
3076
- export { Button, CanvasRenderMode, ColorTransition, EngineExtension, EntityExtension, Image, ResolutionAdaptationMode, ScaleTransition, SpriteTransition, Text, Transition, UICanvas, UIGroup, UIPointerEventEmitter, UIRenderer, UITransform };
3145
+ export { Button, CanvasRenderMode, ColorTransition, EngineExtension, EntityExtension, Image, ResolutionAdaptationMode, ScaleTransition, SpriteTransition, Text, Transition, UICanvas, UIGroup, UIPointerEventEmitter, UIRenderer, UITransform, registerGUI };
3077
3146
  //# sourceMappingURL=module.js.map