@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/browser.js CHANGED
@@ -90,10 +90,6 @@
90
90
  return e.name = "SuppressedError", e.error = error, e.suppressed = suppressed, e;
91
91
  };
92
92
 
93
- 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
94
-
95
- 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
96
-
97
93
  function _defineProperties(target, props) {
98
94
  for (var i = 0; i < props.length; i++) {
99
95
  var descriptor = props[i];
@@ -909,7 +905,7 @@
909
905
  _proto.onDestroy = function onDestroy() {
910
906
  Script.prototype.onDestroy.call(this);
911
907
  var transitions = this._transitions;
912
- for(var i = 0, n = transitions.length; i < n; i++){
908
+ for(var i = transitions.length - 1; i >= 0; i--){
913
909
  transitions[i].destroy();
914
910
  }
915
911
  };
@@ -1074,7 +1070,7 @@
1074
1070
  _inherits(UICanvas, Component);
1075
1071
  function UICanvas(entity) {
1076
1072
  var _this;
1077
- _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 engine.DisorderedArray(), _this._renderMode = CanvasRenderMode.WorldSpace, _this._resolutionAdaptationMode = ResolutionAdaptationMode.HeightAdaptation, _this._sortOrder = 0, _this._distance = 10, _this._referenceResolution = new engine.Vector2(800, 600), _this._referenceResolutionPerUnit = 100, _this._hierarchyVersion = -1;
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 engine.DisorderedArray(), _this._renderMode = CanvasRenderMode.WorldSpace, _this._resolutionAdaptationMode = ResolutionAdaptationMode.HeightAdaptation, _this._sortOrder = 0, _this._distance = 10, _this._referenceResolution = new engine.Vector2(800, 600), _this._referenceResolutionPerUnit = 100, _this._hierarchyVersion = -1, _this._center = new engine.Vector3();
1078
1074
  _this._onCanvasSizeListener = _this._onCanvasSizeListener.bind(_this);
1079
1075
  _this._onCameraModifyListener = _this._onCameraModifyListener.bind(_this);
1080
1076
  _this._onCameraTransformListener = _this._onCameraTransformListener.bind(_this);
@@ -1082,10 +1078,13 @@
1082
1078
  // @ts-ignore
1083
1079
  _this._referenceResolution._onValueChanged = _this._onReferenceResolutionChanged;
1084
1080
  _this._rootCanvasListener = _this._rootCanvasListener.bind(_this);
1081
+ _this._centerDirtyFlag = entity.registerWorldChangeFlag();
1085
1082
  return _this;
1086
1083
  }
1087
1084
  var _proto = UICanvas.prototype;
1088
- _proto.raycast = function raycast(ray, out, distance) {
1085
+ /**
1086
+ * @internal
1087
+ */ _proto._raycast = function _raycast(ray, out, distance) {
1089
1088
  if (distance === void 0) distance = Number.MAX_SAFE_INTEGER;
1090
1089
  var renderers = this._getRenderers();
1091
1090
  for(var i = renderers.length - 1; i >= 0; i--){
@@ -1119,7 +1118,8 @@
1119
1118
  var frameCount = engine.time.frameCount;
1120
1119
  // @ts-ignore
1121
1120
  var renderElement = this._renderElement = engine._renderElementPool.get();
1122
- this._updateSortDistance(context.virtualCamera.position);
1121
+ var virtualCamera = context.virtualCamera;
1122
+ this._updateSortDistance(virtualCamera.isOrthographic, virtualCamera.position, virtualCamera.forward);
1123
1123
  renderElement.set(this.sortOrder, this._sortDistance);
1124
1124
  var _engine_canvas = engine.canvas, width = _engine_canvas.width, height = _engine_canvas.height;
1125
1125
  var renderers = this._getRenderers();
@@ -1152,7 +1152,7 @@
1152
1152
  };
1153
1153
  /**
1154
1154
  * @internal
1155
- */ _proto._updateSortDistance = function _updateSortDistance(cameraPosition) {
1155
+ */ _proto._updateSortDistance = function _updateSortDistance(isOrthographic, cameraPosition, cameraForward) {
1156
1156
  switch(this._realRenderMode){
1157
1157
  case CanvasRenderMode.ScreenSpaceOverlay:
1158
1158
  this._sortDistance = 0;
@@ -1161,7 +1161,13 @@
1161
1161
  this._sortDistance = this._distance;
1162
1162
  break;
1163
1163
  case CanvasRenderMode.WorldSpace:
1164
- this._sortDistance = engine.Vector3.distance(cameraPosition, this.entity.transform.worldPosition);
1164
+ var boundsCenter = this._getCenter();
1165
+ if (isOrthographic) {
1166
+ engine.Vector3.subtract(boundsCenter, cameraPosition, boundsCenter);
1167
+ this._sortDistance = engine.Vector3.dot(boundsCenter, cameraForward);
1168
+ } else {
1169
+ this._sortDistance = engine.Vector3.distanceSquared(boundsCenter, cameraPosition);
1170
+ }
1165
1171
  break;
1166
1172
  }
1167
1173
  };
@@ -1391,6 +1397,17 @@
1391
1397
  }
1392
1398
  }
1393
1399
  };
1400
+ _proto._getCenter = function _getCenter() {
1401
+ if (this._centerDirtyFlag.flag) {
1402
+ var center = this._center;
1403
+ var uiTransform = this.entity.transform;
1404
+ var pivot = uiTransform.pivot, size = uiTransform.size;
1405
+ center.set((0.5 - pivot.x) * size.x, (0.5 - pivot.y) * size.y, 0);
1406
+ engine.Vector3.transformCoordinate(center, uiTransform.worldMatrix, center);
1407
+ this._centerDirtyFlag.flag = false;
1408
+ }
1409
+ return this._center;
1410
+ };
1394
1411
  _proto._getRealRenderMode = function _getRealRenderMode() {
1395
1412
  if (this._isRootCanvas) {
1396
1413
  var _this__renderCamera;
@@ -1609,6 +1626,12 @@
1609
1626
  __decorate([
1610
1627
  engine.ignoreClone
1611
1628
  ], exports.UICanvas.prototype, "_hierarchyVersion", void 0);
1629
+ __decorate([
1630
+ engine.ignoreClone
1631
+ ], exports.UICanvas.prototype, "_center", void 0);
1632
+ __decorate([
1633
+ engine.ignoreClone
1634
+ ], exports.UICanvas.prototype, "_centerDirtyFlag", void 0);
1612
1635
  __decorate([
1613
1636
  engine.ignoreClone
1614
1637
  ], exports.UICanvas.prototype, "_rootCanvasListener", null);
@@ -1944,6 +1967,7 @@
1944
1967
  var engine$1 = _this.engine;
1945
1968
  // @ts-ignore
1946
1969
  _this.font = engine$1._textDefaultFont;
1970
+ _this.raycastEnabled = false;
1947
1971
  // @ts-ignore
1948
1972
  _this.setMaterial(engine$1._basicResources.textDefaultMaterial);
1949
1973
  return _this;
@@ -2706,16 +2730,28 @@
2706
2730
  }
2707
2731
  var _proto = ColorTransition.prototype;
2708
2732
  _proto._onNormalValueChanged = function _onNormalValueChanged() {
2709
- this._finalState === InteractiveState.Normal && this._updateValue();
2733
+ if (this._finalState === InteractiveState.Normal) {
2734
+ this._finalValue = this._normal;
2735
+ this._updateValue();
2736
+ }
2710
2737
  };
2711
2738
  _proto._onHoverValueChanged = function _onHoverValueChanged() {
2712
- this._finalState === InteractiveState.Hover && this._updateValue();
2739
+ if (this._finalState === InteractiveState.Hover) {
2740
+ this._finalValue = this._hover;
2741
+ this._updateValue();
2742
+ }
2713
2743
  };
2714
2744
  _proto._onPressedValueChanged = function _onPressedValueChanged() {
2715
- this._finalState === InteractiveState.Pressed && this._updateValue();
2745
+ if (this._finalState === InteractiveState.Pressed) {
2746
+ this._finalValue = this._pressed;
2747
+ this._updateValue();
2748
+ }
2716
2749
  };
2717
2750
  _proto._onDisabledValueChanged = function _onDisabledValueChanged() {
2718
- this._finalState === InteractiveState.Disable && this._updateValue();
2751
+ if (this._finalState === InteractiveState.Disable) {
2752
+ this._finalValue = this._disabled;
2753
+ this._updateValue();
2754
+ }
2719
2755
  };
2720
2756
  _proto._getTargetValueCopy = function _getTargetValueCopy() {
2721
2757
  var _this__target;
@@ -2807,11 +2843,30 @@
2807
2843
  this._currentValue = weight >= 1 ? destValue : srcValue;
2808
2844
  };
2809
2845
  _proto._applyValue = function _applyValue(value) {
2810
- this._target.sprite = value || this._normal;
2846
+ this._target.sprite = value;
2811
2847
  };
2812
2848
  return SpriteTransition;
2813
2849
  }(Transition);
2814
2850
 
2851
+ var GUIComponent = /*#__PURE__*/Object.freeze({
2852
+ __proto__: null,
2853
+ get UICanvas () { return exports.UICanvas; },
2854
+ UIGroup: UIGroup,
2855
+ get UIRenderer () { return exports.UIRenderer; },
2856
+ UITransform: UITransform,
2857
+ Button: Button,
2858
+ Image: Image,
2859
+ Text: Text,
2860
+ ColorTransition: ColorTransition,
2861
+ ScaleTransition: ScaleTransition,
2862
+ SpriteTransition: SpriteTransition,
2863
+ Transition: Transition
2864
+ });
2865
+
2866
+ 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
2867
+
2868
+ 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
2869
+
2815
2870
  /**
2816
2871
  * @internal
2817
2872
  */ var UIHitResult = function UIHitResult() {
@@ -2841,11 +2896,13 @@
2841
2896
  if (!scene.isActive || scene.destroyed) continue;
2842
2897
  // @ts-ignore
2843
2898
  var componentsManager = scene._componentsManager;
2844
- /** Overlay Canvas */ var canvasElements = componentsManager._overlayCanvases;
2845
- ray.origin.set(position.x, position.y, 1);
2899
+ // Overlay Canvas
2900
+ var canvasElements = componentsManager._overlayCanvases;
2901
+ // Screen to world ( Assume that world units have a one-to-one relationship with pixel units )
2902
+ ray.origin.set(position.x, scene.engine.canvas.height - position.y, 1);
2846
2903
  ray.direction.set(0, 0, -1);
2847
2904
  for(var j = canvasElements.length - 1; j >= 0; j--){
2848
- if (canvasElements.get(j).raycast(ray, hitResult)) {
2905
+ if (canvasElements.get(j)._raycast(ray, hitResult)) {
2849
2906
  this._updateRaycast(hitResult.component, pointer);
2850
2907
  return;
2851
2908
  }
@@ -2859,10 +2916,13 @@
2859
2916
  continue;
2860
2917
  }
2861
2918
  camera.screenPointToRay(pointer.position, ray);
2862
- /** Other canvases */ var cameraPosition = camera.entity.transform.position;
2863
- /** Sort by rendering order */ canvasElements = componentsManager._canvases;
2919
+ // Other canvases
2920
+ var isOrthographic = camera.isOrthographic;
2921
+ var _camera_entity_transform = camera.entity.transform, cameraPosition = _camera_entity_transform.worldPosition, cameraForward = _camera_entity_transform.worldForward;
2922
+ // Sort by rendering order
2923
+ canvasElements = componentsManager._canvases;
2864
2924
  for(var k = 0, n = canvasElements.length; k < n; k++){
2865
- canvasElements.get(k)._updateSortDistance(cameraPosition);
2925
+ canvasElements.get(k)._updateSortDistance(isOrthographic, cameraPosition, cameraForward);
2866
2926
  }
2867
2927
  canvasElements.sort(function(a, b) {
2868
2928
  return a.sortOrder - b.sortOrder || a._sortDistance - b._sortDistance;
@@ -2871,10 +2931,11 @@
2871
2931
  canvasElements.get(k1)._canvasIndex = k1;
2872
2932
  }
2873
2933
  var farClipPlane = camera.farClipPlane;
2874
- /** Post-rendering first detection */ for(var k2 = 0, n2 = canvasElements.length; k2 < n2; k2++){
2934
+ // Post-rendering first detection
2935
+ for(var k2 = 0, n2 = canvasElements.length; k2 < n2; k2++){
2875
2936
  var canvas = canvasElements.get(k2);
2876
- if (canvas.renderCamera !== camera) continue;
2877
- if (canvas.raycast(ray, hitResult, farClipPlane)) {
2937
+ if (!canvas._canRender(camera)) continue;
2938
+ if (canvas._raycast(ray, hitResult, farClipPlane)) {
2878
2939
  this._updateRaycast(hitResult.component, pointer);
2879
2940
  return;
2880
2941
  }
@@ -2884,6 +2945,7 @@
2884
2945
  return;
2885
2946
  }
2886
2947
  }
2948
+ this._updateRaycast(null);
2887
2949
  }
2888
2950
  };
2889
2951
  _proto.processDrag = function processDrag(pointer) {
@@ -3068,7 +3130,7 @@
3068
3130
  props = item.props;
3069
3131
  if (!props.font) {
3070
3132
  // @ts-ignore
3071
- instance.font = Font.createFromOS(instance.engine, props.fontFamily || "Arial");
3133
+ instance.font = engine.Font.createFromOS(instance.engine, props.fontFamily || "Arial");
3072
3134
  }
3073
3135
  return [
3074
3136
  2,
@@ -3076,6 +3138,13 @@
3076
3138
  ];
3077
3139
  });
3078
3140
  }));
3141
+ /**
3142
+ * Register GUI components for the editor.
3143
+ */ function registerGUI() {
3144
+ for(var key in GUIComponent){
3145
+ engine.Loader.registerClass(key, GUIComponent[key]);
3146
+ }
3147
+ }
3079
3148
 
3080
3149
  exports.Button = Button;
3081
3150
  exports.CanvasRenderMode = CanvasRenderMode;
@@ -3090,6 +3159,7 @@
3090
3159
  exports.Transition = Transition;
3091
3160
  exports.UIGroup = UIGroup;
3092
3161
  exports.UITransform = UITransform;
3162
+ exports.registerGUI = registerGUI;
3093
3163
 
3094
3164
  Object.defineProperty(exports, '__esModule', { value: true });
3095
3165