浏览代码

GUI: Fixed issue with projected labels

David Catuhe 8 年之前
父节点
当前提交
3cb9da996a

文件差异内容过多而无法显示
+ 3516 - 3516
dist/preview release/babylon.d.ts


文件差异内容过多而无法显示
+ 12 - 12
dist/preview release/babylon.js


+ 16 - 4
dist/preview release/babylon.max.js

@@ -8911,10 +8911,11 @@ var BABYLON;
             }
             }
             this.resetTextureCache();
             this.resetTextureCache();
             this._currentEffect = null;
             this._currentEffect = null;
-            this._stencilState.reset();
-            this._depthCullingState.reset();
-            this.setDepthFunctionToLessOrEqual();
-            this._alphaState.reset();
+            // 6/8/2017: deltakosh: Should not be required anymore. This message is then mostly for the future myself which will scream out loud when seeing that actually it was required :)
+            // this._stencilState.reset();
+            // this._depthCullingState.reset();
+            // this.setDepthFunctionToLessOrEqual();
+            // this._alphaState.reset();
             this._cachedVertexBuffers = null;
             this._cachedVertexBuffers = null;
             this._cachedIndexBuffer = null;
             this._cachedIndexBuffer = null;
             this._cachedEffectForVertexBuffers = null;
             this._cachedEffectForVertexBuffers = null;
@@ -64208,11 +64209,18 @@ var BABYLON;
             var previousStencilBuffer = engine.getStencilBuffer();
             var previousStencilBuffer = engine.getStencilBuffer();
             var previousStencilFunction = engine.getStencilFunction();
             var previousStencilFunction = engine.getStencilFunction();
             var previousStencilMask = engine.getStencilMask();
             var previousStencilMask = engine.getStencilMask();
+            var previousStencilOperationPass = engine.getStencilOperationPass();
+            var previousStencilOperationFail = engine.getStencilOperationFail();
+            var previousStencilOperationDepthFail = engine.getStencilOperationDepthFail();
             var previousAlphaMode = engine.getAlphaMode();
             var previousAlphaMode = engine.getAlphaMode();
             // Texture
             // Texture
             currentEffect.setTexture("textureSampler", this._blurTexture);
             currentEffect.setTexture("textureSampler", this._blurTexture);
             // VBOs
             // VBOs
             engine.bindBuffers(this._vertexBuffers, this._indexBuffer, currentEffect);
             engine.bindBuffers(this._vertexBuffers, this._indexBuffer, currentEffect);
+            // Stencil operations
+            engine.setStencilOperationPass(BABYLON.Engine.REPLACE);
+            engine.setStencilOperationFail(BABYLON.Engine.KEEP);
+            engine.setStencilOperationDepthFail(BABYLON.Engine.KEEP);
             // Draw order
             // Draw order
             engine.setAlphaMode(this._options.alphaBlendingMode);
             engine.setAlphaMode(this._options.alphaBlendingMode);
             engine.setStencilMask(0x00);
             engine.setStencilMask(0x00);
@@ -64233,6 +64241,10 @@ var BABYLON;
             engine.setStencilMask(previousStencilMask);
             engine.setStencilMask(previousStencilMask);
             engine.setAlphaMode(previousAlphaMode);
             engine.setAlphaMode(previousAlphaMode);
             engine.setStencilBuffer(previousStencilBuffer);
             engine.setStencilBuffer(previousStencilBuffer);
+            engine.setStencilOperationPass(previousStencilOperationPass);
+            engine.setStencilOperationFail(previousStencilOperationFail);
+            engine.setStencilOperationDepthFail(previousStencilOperationDepthFail);
+            engine._stencilState.reset();
             this.onAfterComposeObservable.notifyObservers(this);
             this.onAfterComposeObservable.notifyObservers(this);
             // Handle size changes.
             // Handle size changes.
             var size = this._mainTexture.getSize();
             var size = this._mainTexture.getSize();

文件差异内容过多而无法显示
+ 3516 - 3516
dist/preview release/babylon.module.d.ts


文件差异内容过多而无法显示
+ 21 - 21
dist/preview release/babylon.worker.js


+ 1 - 1
dist/preview release/canvas2D/babylon.canvas2d.js

@@ -18245,8 +18245,8 @@ var BABYLON;
             if (this._renderObservable && this._renderObservable.hasObservers()) {
             if (this._renderObservable && this._renderObservable.hasObservers()) {
                 this._renderObservable.notifyObservers(this, Canvas2D_1.RENDEROBSERVABLE_PRE);
                 this._renderObservable.notifyObservers(this, Canvas2D_1.RENDEROBSERVABLE_PRE);
             }
             }
-            this._updateCanvasState(false);
             this._updateTrackedNodes();
             this._updateTrackedNodes();
+            this._updateCanvasState(false);
             // Nothing to do is the Canvas is not visible
             // Nothing to do is the Canvas is not visible
             if (this.isVisible === false) {
             if (this.isVisible === false) {
                 return;
                 return;

文件差异内容过多而无法显示
+ 1 - 1
dist/preview release/canvas2D/babylon.canvas2d.min.js


+ 5 - 0
dist/preview release/gui/babylon.gui.js

@@ -150,6 +150,11 @@ var BABYLON;
                         var mesh = control._linkedMesh;
                         var mesh = control._linkedMesh;
                         var position = mesh.getBoundingInfo().boundingSphere.center;
                         var position = mesh.getBoundingInfo().boundingSphere.center;
                         var projectedPosition = BABYLON.Vector3.Project(position, mesh.getWorldMatrix(), scene.getTransformMatrix(), globalViewport);
                         var projectedPosition = BABYLON.Vector3.Project(position, mesh.getWorldMatrix(), scene.getTransformMatrix(), globalViewport);
+                        if (projectedPosition.z < 0 || projectedPosition.z > 1) {
+                            control.isVisible = false;
+                            continue;
+                        }
+                        control.isVisible = true;
                         control._moveToProjectedPosition(projectedPosition);
                         control._moveToProjectedPosition(projectedPosition);
                     }
                     }
                 }
                 }

文件差异内容过多而无法显示
+ 2 - 2
dist/preview release/gui/babylon.gui.min.js


+ 5 - 0
gui/src/advancedDynamicTexture.ts

@@ -162,6 +162,11 @@ module BABYLON.GUI {
                     var position = mesh.getBoundingInfo().boundingSphere.center;
                     var position = mesh.getBoundingInfo().boundingSphere.center;
                     var projectedPosition = Vector3.Project(position, mesh.getWorldMatrix(), scene.getTransformMatrix(), globalViewport);
                     var projectedPosition = Vector3.Project(position, mesh.getWorldMatrix(), scene.getTransformMatrix(), globalViewport);
 
 
+                    if (projectedPosition.z < 0 || projectedPosition.z > 1) {
+                        control.isVisible = false;
+                        continue;
+                    }
+                    control.isVisible = true;
                     control._moveToProjectedPosition(projectedPosition);
                     control._moveToProjectedPosition(projectedPosition);
                 }
                 }
             }
             }