소스 검색

ideal size - always take smallest

I added to AdvancedDynamicTexture a boolean useSmallestIdeal, if window width is smaller than height, using idealWidth, otherwise idealHeight. I'm now working on being able to match the game to all possible screen sizes so it should actually be a quite useful feature, it looks good that way.

I had problems compiling the source as you can see in the forum, but it should work.
Royi Bernthal 7 년 전
부모
커밋
55fcf45c27
2개의 변경된 파일20개의 추가작업 그리고 7개의 파일을 삭제
  1. 15 0
      gui/src/advancedDynamicTexture.ts
  2. 5 7
      gui/src/valueAndUnit.ts

+ 15 - 0
gui/src/advancedDynamicTexture.ts

@@ -28,6 +28,7 @@ module BABYLON.GUI {
         private _fullscreenViewport = new Viewport(0, 0, 1, 1);
         private _idealWidth = 0;
         private _idealHeight = 0;
+        private _useSmallestIdeal: boolean = false;
         private _renderAtIdealSize = false;
         private _focusedControl: Nullable<IFocusableControl>;
         private _blockNextFocusCheck = false;
@@ -88,6 +89,20 @@ module BABYLON.GUI {
             this._rootContainer._markAllAsDirty();
         }
 
+        public get useSmallestIdeal(): boolean {
+            return this._useSmallestIdeal;
+        }
+
+        public set useSmallestIdeal(value: boolean) {
+            if (this._useSmallestIdeal === value) {
+                return;
+            }
+
+            this._useSmallestIdeal = value;
+            this.markAsDirty();
+            this._rootContainer._markAllAsDirty();
+        }
+
         public get renderAtIdealSize(): boolean {
             return this._renderAtIdealSize;
         }

+ 5 - 7
gui/src/valueAndUnit.ts

@@ -31,14 +31,12 @@ module BABYLON.GUI {
 
         public getValue(host: AdvancedDynamicTexture): number {
             if (host && !this.ignoreAdaptiveScaling && this.unit !== ValueAndUnit.UNITMODE_PERCENTAGE) {
+                var width: number = (this._value * host.getSize().width) / host.idealWidth;
+                var height: number = (this._value * host.getSize().height) / host.idealHeight;
 
-                if (host.idealWidth) { // horizontal
-                    return (this._value * host.getSize().width) / host.idealWidth;
-                }
-
-                if (host.idealHeight) { // vertical
-                    return (this._value * host.getSize().height) / host.idealHeight;
-                }
+                if (host.useSmallestIdeal && host.idealWidth && host.idealHeight) return window.innerWidth < window.innerHeight ? width : height;
+                if (host.idealWidth) return width; // horizontal
+                if (host.idealHeight) return height; // vertical
             }
             return this._value;
         }