Browse Source

Fix GUI when used with viewport

David Catuhe 8 years ago
parent
commit
179559e14c

File diff suppressed because it is too large
+ 3107 - 3107
dist/preview release/babylon.d.ts


File diff suppressed because it is too large
+ 33 - 33
dist/preview release/babylon.js


+ 0 - 3
dist/preview release/babylon.max.js

@@ -16656,9 +16656,6 @@ var BABYLON;
             this._pointerY = evt.clientY - canvasRect.top;
             this._unTranslatedPointerX = this._pointerX;
             this._unTranslatedPointerY = this._pointerY;
-            var cameraToUse = this.cameraToUseForPointers ? this.cameraToUseForPointers : this.activeCamera;
-            this._pointerX = this._pointerX - cameraToUse.viewport.x * this._engine.getRenderWidth();
-            this._pointerY = this._pointerY - cameraToUse.viewport.y * this._engine.getRenderHeight();
         };
         Scene.prototype._createUbo = function () {
             this._sceneUbo = new BABYLON.UniformBuffer(this._engine, null, true);

File diff suppressed because it is too large
+ 3107 - 3107
dist/preview release/babylon.module.d.ts


File diff suppressed because it is too large
+ 33 - 33
dist/preview release/babylon.worker.js


File diff suppressed because it is too large
+ 5008 - 5008
dist/preview release/customConfigurations/minimalGLTFViewer/babylon.d.ts


File diff suppressed because it is too large
+ 19 - 19
dist/preview release/customConfigurations/minimalGLTFViewer/babylon.js


+ 0 - 3
dist/preview release/customConfigurations/minimalGLTFViewer/babylon.max.js

@@ -16656,9 +16656,6 @@ var BABYLON;
             this._pointerY = evt.clientY - canvasRect.top;
             this._unTranslatedPointerX = this._pointerX;
             this._unTranslatedPointerY = this._pointerY;
-            var cameraToUse = this.cameraToUseForPointers ? this.cameraToUseForPointers : this.activeCamera;
-            this._pointerX = this._pointerX - cameraToUse.viewport.x * this._engine.getRenderWidth();
-            this._pointerY = this._pointerY - cameraToUse.viewport.y * this._engine.getRenderHeight();
         };
         Scene.prototype._createUbo = function () {
             this._sceneUbo = new BABYLON.UniformBuffer(this._engine, null, true);

File diff suppressed because it is too large
+ 5008 - 5008
dist/preview release/customConfigurations/minimalGLTFViewer/babylon.module.d.ts


+ 8 - 2
dist/preview release/gui/babylon.gui.js

@@ -242,7 +242,8 @@ var BABYLON;
                 this._rootContainer._draw(measure, context);
             };
             AdvancedDynamicTexture.prototype._doPicking = function (x, y, type) {
-                var engine = this.getScene().getEngine();
+                var scene = this.getScene();
+                var engine = scene.getEngine();
                 var textureSize = this.getSize();
                 if (this._isFullscreen) {
                     x = x * (textureSize.width / engine.getRenderWidth());
@@ -270,8 +271,13 @@ var BABYLON;
                         && pi.type !== BABYLON.PointerEventTypes.POINTERDOWN) {
                         return;
                     }
+                    var camera = scene.activeCamera;
+                    var engine = scene.getEngine();
+                    var viewport = camera.viewport;
+                    var x = (scene.pointerX - viewport.x * engine.getRenderWidth()) / viewport.width;
+                    var y = (scene.pointerY - viewport.y * engine.getRenderHeight()) / viewport.height;
                     _this._shouldBlockPointer = false;
-                    _this._doPicking(scene.pointerX, scene.pointerY, pi.type);
+                    _this._doPicking(x, y, pi.type);
                     pi.skipOnPointerObservable = _this._shouldBlockPointer && pi.type !== BABYLON.PointerEventTypes.POINTERUP;
                 });
                 this._attachToOnBlur(scene);

File diff suppressed because it is too large
+ 3 - 3
dist/preview release/gui/babylon.gui.min.js


+ 9 - 2
gui/src/advancedDynamicTexture.ts

@@ -261,7 +261,8 @@ module BABYLON.GUI {
         }
 
         private _doPicking(x: number, y: number, type: number): void {
-            var engine = this.getScene().getEngine();
+            var scene = this.getScene();
+            var engine = scene.getEngine();
             var textureSize = this.getSize();
 
             if (this._isFullscreen) {
@@ -295,8 +296,14 @@ module BABYLON.GUI {
                     return;
                 }
 
+                let camera = scene.activeCamera;
+                let engine = scene.getEngine();
+                let viewport = camera.viewport;
+                let x = (scene.pointerX - viewport.x * engine.getRenderWidth()) / viewport.width;
+                let y = (scene.pointerY - viewport.y * engine.getRenderHeight()) / viewport.height;
+
                 this._shouldBlockPointer = false;
-                this._doPicking(scene.pointerX, scene.pointerY, pi.type);
+                this._doPicking(x, y, pi.type);
 
                 pi.skipOnPointerObservable = this._shouldBlockPointer && pi.type !== BABYLON.PointerEventTypes.POINTERUP;
             });

+ 0 - 4
src/babylon.scene.ts

@@ -1024,10 +1024,6 @@
 
             this._unTranslatedPointerX = this._pointerX;
             this._unTranslatedPointerY = this._pointerY;
-
-            let cameraToUse = this.cameraToUseForPointers ? this.cameraToUseForPointers : this.activeCamera;
-            this._pointerX = this._pointerX - cameraToUse.viewport.x * this._engine.getRenderWidth();
-            this._pointerY = this._pointerY - cameraToUse.viewport.y * this._engine.getRenderHeight();
         }
 
         private _createUbo(): void {