From 25a1108b612e9d78a2de8a157f37b272b3491cce Mon Sep 17 00:00:00 2001 From: Bing Shearer Date: Wed, 8 Jul 2015 16:24:23 -0700 Subject: [PATCH 1/4] Fixed spelling error --- libraries/script-engine/src/ScriptEngine.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libraries/script-engine/src/ScriptEngine.cpp b/libraries/script-engine/src/ScriptEngine.cpp index 55cf9e9890..2046fd622d 100644 --- a/libraries/script-engine/src/ScriptEngine.cpp +++ b/libraries/script-engine/src/ScriptEngine.cpp @@ -493,7 +493,7 @@ void ScriptEngine::evaluate() { QScriptValue result = evaluate(_scriptContents); - // TODO: why do we check this twice? It seems like the call to clearExcpetions() in the lower level evaluate call + // TODO: why do we check this twice? It seems like the call to clearExceptions() in the lower level evaluate call // will cause this code to never actually run... if (hasUncaughtException()) { int line = uncaughtExceptionLineNumber(); From 6080ec4509ae1292dc8db991fcbcf31ea262afc2 Mon Sep 17 00:00:00 2001 From: Bing Shearer Date: Wed, 8 Jul 2015 16:29:43 -0700 Subject: [PATCH 2/4] Air Hockey UI now follows window border --- examples/example/games/airHockey.js | 69 ++++++++++++++++++++--------- 1 file changed, 47 insertions(+), 22 deletions(-) mode change 100644 => 100755 examples/example/games/airHockey.js diff --git a/examples/example/games/airHockey.js b/examples/example/games/airHockey.js old mode 100644 new mode 100755 index a703f379bc..f70fbc232f --- a/examples/example/games/airHockey.js +++ b/examples/example/games/airHockey.js @@ -83,35 +83,60 @@ var puck_name_index = 2; var light_name_index = 3; var floor_name_index = 4; +//Create Spawn and Del. Button Vars. + +function updateButtonPosition() { + Overlays.editOverlay(spawnButton, { + x: screenSize.x / 2 + PADDING, + y: screenSize.y - (BUTTON_SIZE * 2 + PADDING), + }); + Overlays.editOverlay(deleteButton, { + x: screenSize.x / 2 - BUTTON_SIZE, + y: screenSize.y - (BUTTON_SIZE * 2 + PADDING), + }); +} + +function onScriptUpdate() { + var oldScreenSize = screenSize; + + screenSize = Controller.getViewportDimensions(); + + if (screenSize.x !== oldScreenSize.x || screenSize.y !== oldScreenSize.y) { + updateButtonPosition(); + } +} + +screenSize = Controller.getViewportDimensions(); var deleteButton = Overlays.addOverlay("image", { - x: screenSize.x / 2 - BUTTON_SIZE, - y: screenSize.y - (BUTTON_SIZE * 2 + PADDING), - width: BUTTON_SIZE, - height: BUTTON_SIZE, - imageURL: HIFI_PUBLIC_BUCKET + "images/delete.png", - color: { - red: 255, - green: 255, - blue: 255 - }, - alpha: 1 + x: screenSize.x / 2 - BUTTON_SIZE, + y: screenSize.y - (BUTTON_SIZE * 2 + PADDING), + width: BUTTON_SIZE, + height: BUTTON_SIZE, + imageURL: HIFI_PUBLIC_BUCKET + "images/delete.png", + color: { + red: 255, + green: 255, + blue: 255 + }, + alpha: 1 }); var spawnButton = Overlays.addOverlay("image", { - x: screenSize.x / 2 + PADDING, - y: screenSize.y - (BUTTON_SIZE * 2 + PADDING), - width: BUTTON_SIZE, - height: BUTTON_SIZE, - imageURL: HIFI_PUBLIC_BUCKET + "images/puck.png", - color: { - red: 255, - green: 255, - blue: 255 - }, - alpha: 1 + x: screenSize.x / 2 + PADDING, + y: screenSize.y - (BUTTON_SIZE * 2 + PADDING), + width: BUTTON_SIZE, + height: BUTTON_SIZE, + imageURL: HIFI_PUBLIC_BUCKET + "images/puck.png", + color: { + red: 255, + green: 255, + blue: 255 + }, + alpha: 1 }); +Script.update.connect(onScriptUpdate); var floor, edge1, edge2, edge3a, edge3b, edge4a, edge4b, light; From ba4049754ae7f237e3d1d2a44884abf22b8641d4 Mon Sep 17 00:00:00 2001 From: Bing Shearer Date: Wed, 8 Jul 2015 16:53:55 -0700 Subject: [PATCH 3/4] Restored indentatioN --- examples/example/games/airHockey.js | 44 ++++++++++++++--------------- 1 file changed, 22 insertions(+), 22 deletions(-) diff --git a/examples/example/games/airHockey.js b/examples/example/games/airHockey.js index f70fbc232f..ca7f007df6 100755 --- a/examples/example/games/airHockey.js +++ b/examples/example/games/airHockey.js @@ -109,31 +109,31 @@ function onScriptUpdate() { screenSize = Controller.getViewportDimensions(); var deleteButton = Overlays.addOverlay("image", { - x: screenSize.x / 2 - BUTTON_SIZE, - y: screenSize.y - (BUTTON_SIZE * 2 + PADDING), - width: BUTTON_SIZE, - height: BUTTON_SIZE, - imageURL: HIFI_PUBLIC_BUCKET + "images/delete.png", - color: { - red: 255, - green: 255, - blue: 255 - }, - alpha: 1 + x: screenSize.x / 2 - BUTTON_SIZE, + y: screenSize.y - (BUTTON_SIZE * 2 + PADDING), + width: BUTTON_SIZE, + height: BUTTON_SIZE, + imageURL: HIFI_PUBLIC_BUCKET + "images/delete.png", + color: { + red: 255, + green: 255, + blue: 255 + }, + alpha: 1 }); var spawnButton = Overlays.addOverlay("image", { - x: screenSize.x / 2 + PADDING, - y: screenSize.y - (BUTTON_SIZE * 2 + PADDING), - width: BUTTON_SIZE, - height: BUTTON_SIZE, - imageURL: HIFI_PUBLIC_BUCKET + "images/puck.png", - color: { - red: 255, - green: 255, - blue: 255 - }, - alpha: 1 + x: screenSize.x / 2 + PADDING, + y: screenSize.y - (BUTTON_SIZE * 2 + PADDING), + width: BUTTON_SIZE, + height: BUTTON_SIZE, + imageURL: HIFI_PUBLIC_BUCKET + "images/puck.png", + color: { + red: 255, + green: 255, + blue: 255 + }, + alpha: 1 }); Script.update.connect(onScriptUpdate); From 1be0e7ebc32076ae496feb60cece8e265f121cdf Mon Sep 17 00:00:00 2001 From: "Anthony J. Thibault" Date: Wed, 8 Jul 2015 19:25:16 -0700 Subject: [PATCH 4/4] fix for mirror rendering on windows * added preScale to Transform class. * preScale by -1 about the xAxis instead of post scale. I think this was working on Mac due to the different code paths in GLBackendTransform::updateTransform for core vs legacy gl profile. --- interface/src/Application.cpp | 11 ----------- libraries/render-utils/src/RenderDeferredTask.cpp | 2 +- libraries/shared/src/Transform.h | 10 ++++++++++ 3 files changed, 11 insertions(+), 12 deletions(-) diff --git a/interface/src/Application.cpp b/interface/src/Application.cpp index 48fa53777d..7bfa500f64 100644 --- a/interface/src/Application.cpp +++ b/interface/src/Application.cpp @@ -3386,14 +3386,6 @@ void Application::displaySide(RenderArgs* renderArgs, Camera& theCamera, bool se // load the view frustum loadViewFrustum(theCamera, _displayViewFrustum); - // flip x if in mirror mode (also requires reversing winding order for backface culling) - if (theCamera.getMode() == CAMERA_MODE_MIRROR) { - //glScalef(-1.0f, 1.0f, 1.0f); - //glFrontFace(GL_CW); - } else { - glFrontFace(GL_CCW); - } - // transform view according to theCamera // could be myCamera (if in normal mode) // or could be viewFrustumOffsetCamera if in offset mode @@ -3411,9 +3403,6 @@ void Application::displaySide(RenderArgs* renderArgs, Camera& theCamera, bool se Transform viewTransform; viewTransform.setTranslation(theCamera.getPosition()); viewTransform.setRotation(rotation); - if (theCamera.getMode() == CAMERA_MODE_MIRROR) { -// viewTransform.setScale(Transform::Vec3(-1.0f, 1.0f, 1.0f)); - } if (renderArgs->_renderSide != RenderArgs::MONO) { glm::mat4 invView = glm::inverse(_untranslatedViewMatrix); diff --git a/libraries/render-utils/src/RenderDeferredTask.cpp b/libraries/render-utils/src/RenderDeferredTask.cpp index 12a6d32ae5..4929d4b5ae 100755 --- a/libraries/render-utils/src/RenderDeferredTask.cpp +++ b/libraries/render-utils/src/RenderDeferredTask.cpp @@ -118,7 +118,7 @@ void DrawOpaqueDeferred::run(const SceneContextPointer& sceneContext, const Rend args->_viewFrustum->evalProjectionMatrix(projMat); args->_viewFrustum->evalViewTransform(viewMat); if (args->_renderMode == RenderArgs::MIRROR_RENDER_MODE) { - viewMat.postScale(glm::vec3(-1.0f, 1.0f, 1.0f)); + viewMat.preScale(glm::vec3(-1.0f, 1.0f, 1.0f)); } batch.setProjectionTransform(projMat); batch.setViewTransform(viewMat); diff --git a/libraries/shared/src/Transform.h b/libraries/shared/src/Transform.h index e961f379c8..6f841151c4 100644 --- a/libraries/shared/src/Transform.h +++ b/libraries/shared/src/Transform.h @@ -97,6 +97,8 @@ public: const Vec3& getScale() const; void setScale(float scale); void setScale(const Vec3& scale); // [new this] = [this.translation] * [this.rotation] * [scale] + void preScale(float scale); + void preScale(const Vec3& scale); void postScale(float scale); // [new this] = [this] * [scale] equivalent to glScale void postScale(const Vec3& scale); // [new this] = [this] * [scale] equivalent to glScale @@ -322,6 +324,14 @@ inline void Transform::setScale(const Vec3& scale) { } } +inline void Transform::preScale(float scale) { + setScale(getScale() * scale); +} + +inline void Transform::preScale(const Vec3& scale) { + setScale(getScale() * scale); +} + inline void Transform::postScale(float scale) { if (!isValidScale(scale) || scale == 1.0f) { return;