History

Merge branch 'master' of https://github.com/worklist/hifi into 19507

stojce committed 12 years ago

Commit 5e350df2 parents 63a29ca 24b80fc117 files · +1213 −351Browse files

Showing the changes to interface/src/Application.cpp (1 of 117 files). Show all

Unified · Split

interface/src/Application.cpp+41−25
@@ -65,17 +65,21 @@ · 64 unmodified lines
6565 #include <FstReader.h>
6666
6767 #include "Application.h"
68−#include "ClipboardScriptingInterface.h"
6968 #include "InterfaceVersion.h"
7069 #include "Menu.h"
71−#include "MenuScriptingInterface.h"
7270 #include "Util.h"
7371 #include "devices/OculusManager.h"
7472 #include "devices/TV3DManager.h"
7573 #include "renderer/ProgramObject.h"
76−#include "ui/TextRenderer.h"
77−#include "InfoView.h"
74+
75+#include "scripting/AudioDeviceScriptingInterface.h"
76+#include "scripting/ClipboardScriptingInterface.h"
77+#include "scripting/MenuScriptingInterface.h"
78+#include "scripting/SettingsScriptingInterface.h"
79+
80+#include "ui/InfoView.h"
7881 #include "ui/Snapshot.h"
82+#include "ui/TextRenderer.h"
7983
8084 using namespace std;
8185
@@ -2163,21 +2167,22 @@ void Application::updateShadowMap() { · 2081 unmodified lines
21632167 glViewport(0, 0, fbo->width(), fbo->height());
21642168
21652169 glm::vec3 lightDirection = -getSunDirection();
2166− glm::quat rotation = glm::inverse(rotationBetween(IDENTITY_FRONT, lightDirection));
2167− glm::vec3 translation = glm::vec3();
2170+ glm::quat rotation = rotationBetween(IDENTITY_FRONT, lightDirection);
2171+ glm::quat inverseRotation = glm::inverse(rotation);
21682172 float nearScale = 0.0f;
21692173 const float MAX_SHADOW_DISTANCE = 2.0f;
2170− float farScale = (MAX_SHADOW_DISTANCE - _viewFrustum.getNearClip()) / (_viewFrustum.getFarClip() - _viewFrustum.getNearClip());
2174+ float farScale = (MAX_SHADOW_DISTANCE - _viewFrustum.getNearClip()) /
2175+ (_viewFrustum.getFarClip() - _viewFrustum.getNearClip());
21712176 loadViewFrustum(_myCamera, _viewFrustum);
21722177 glm::vec3 points[] = {
2173− rotation * (glm::mix(_viewFrustum.getNearTopLeft(), _viewFrustum.getFarTopLeft(), nearScale) + translation),
2174− rotation * (glm::mix(_viewFrustum.getNearTopRight(), _viewFrustum.getFarTopRight(), nearScale) + translation),
2175− rotation * (glm::mix(_viewFrustum.getNearBottomLeft(), _viewFrustum.getFarBottomLeft(), nearScale) + translation),
2176− rotation * (glm::mix(_viewFrustum.getNearBottomRight(), _viewFrustum.getFarBottomRight(), nearScale) + translation),
2177− rotation * (glm::mix(_viewFrustum.getNearTopLeft(), _viewFrustum.getFarTopLeft(), farScale) + translation),
2178− rotation * (glm::mix(_viewFrustum.getNearTopRight(), _viewFrustum.getFarTopRight(), farScale) + translation),
2179− rotation * (glm::mix(_viewFrustum.getNearBottomLeft(), _viewFrustum.getFarBottomLeft(), farScale) + translation),
2180− rotation * (glm::mix(_viewFrustum.getNearBottomRight(), _viewFrustum.getFarBottomRight(), farScale) + translation) };
2178+ inverseRotation * (glm::mix(_viewFrustum.getNearTopLeft(), _viewFrustum.getFarTopLeft(), nearScale)),
2179+ inverseRotation * (glm::mix(_viewFrustum.getNearTopRight(), _viewFrustum.getFarTopRight(), nearScale)),
2180+ inverseRotation * (glm::mix(_viewFrustum.getNearBottomLeft(), _viewFrustum.getFarBottomLeft(), nearScale)),
2181+ inverseRotation * (glm::mix(_viewFrustum.getNearBottomRight(), _viewFrustum.getFarBottomRight(), nearScale)),
2182+ inverseRotation * (glm::mix(_viewFrustum.getNearTopLeft(), _viewFrustum.getFarTopLeft(), farScale)),
2183+ inverseRotation * (glm::mix(_viewFrustum.getNearTopRight(), _viewFrustum.getFarTopRight(), farScale)),
2184+ inverseRotation * (glm::mix(_viewFrustum.getNearBottomLeft(), _viewFrustum.getFarBottomLeft(), farScale)),
2185+ inverseRotation * (glm::mix(_viewFrustum.getNearBottomRight(), _viewFrustum.getFarBottomRight(), farScale)) };
21812186 glm::vec3 minima(FLT_MAX, FLT_MAX, FLT_MAX), maxima(-FLT_MAX, -FLT_MAX, -FLT_MAX);
21822187 for (size_t i = 0; i < sizeof(points) / sizeof(points[0]); i++) {
21832188 minima = glm::min(minima, points[i]);
@@ -2190,9 +2195,20 @@ void Application::updateShadowMap() { · 6 unmodified lines
21902195
21912196 // save the combined matrix for rendering
21922197 _shadowMatrix = glm::transpose(glm::translate(glm::vec3(0.5f, 0.5f, 0.5f)) * glm::scale(glm::vec3(0.5f, 0.5f, 0.5f)) *
2193− glm::ortho(minima.x, maxima.x, minima.y, maxima.y, -maxima.z, -minima.z) *
2194− glm::mat4_cast(rotation) * glm::translate(translation));
2195−
2198+ glm::ortho(minima.x, maxima.x, minima.y, maxima.y, -maxima.z, -minima.z) * glm::mat4_cast(inverseRotation));
2199+
2200+ // update the shadow view frustum
2201+ _shadowViewFrustum.setPosition(rotation * ((minima + maxima) * 0.5f));
2202+ _shadowViewFrustum.setOrientation(rotation);
2203+ _shadowViewFrustum.setOrthographic(true);
2204+ _shadowViewFrustum.setWidth(maxima.x - minima.x);
2205+ _shadowViewFrustum.setHeight(maxima.y - minima.y);
2206+ _shadowViewFrustum.setNearClip(minima.z);
2207+ _shadowViewFrustum.setFarClip(maxima.z);
2208+ _shadowViewFrustum.setEyeOffsetPosition(glm::vec3());
2209+ _shadowViewFrustum.setEyeOffsetOrientation(glm::quat());
2210+ _shadowViewFrustum.calculate();
2211+
21962212 glMatrixMode(GL_PROJECTION);
21972213 glPushMatrix();
21982214 glLoadIdentity();
@@ -2201,16 +2217,14 @@ void Application::updateShadowMap() { · 2 unmodified lines
22012217 glMatrixMode(GL_MODELVIEW);
22022218 glPushMatrix();
22032219 glLoadIdentity();
2204− glm::vec3 axis = glm::axis(rotation);
2205− glRotatef(glm::degrees(glm::angle(rotation)), axis.x, axis.y, axis.z);
2220+ glm::vec3 axis = glm::axis(inverseRotation);
2221+ glRotatef(glm::degrees(glm::angle(inverseRotation)), axis.x, axis.y, axis.z);
22062222
22072223 // store view matrix without translation, which we'll use for precision-sensitive objects
22082224 glGetFloatv(GL_MODELVIEW_MATRIX, (GLfloat*)&_untranslatedViewMatrix);
2209− _viewMatrixTranslation = translation;
2210−
2211− glTranslatef(translation.x, translation.y, translation.z);
2225+ _viewMatrixTranslation = glm::vec3();
22122226
2213− _avatarManager.renderAvatars(true);
2227+ _avatarManager.renderAvatars(Avatar::SHADOW_RENDER_MODE);
22142228 _particles.render();
22152229
22162230 glPopMatrix();
@@ -2388,7 +2402,7 @@ void Application::displaySide(Camera& whichCamera, bool selfAvatarOnly) { · 171 unmodified lines
23882402 }
23892403
23902404 bool mirrorMode = (whichCamera.getInterpolatedMode() == CAMERA_MODE_MIRROR);
2391− _avatarManager.renderAvatars(mirrorMode, selfAvatarOnly);
2405+ _avatarManager.renderAvatars(mirrorMode ? Avatar::MIRROR_RENDER_MODE : Avatar::NORMAL_RENDER_MODE, selfAvatarOnly);
23922406
23932407 if (!selfAvatarOnly) {
23942408 // Render the world box
@@ -3548,6 +3562,8 @@ void Application::loadScript(const QString& fileNameString) { · 1153 unmodified lines
35483562
35493563 scriptEngine->registerGlobalObject("Overlays", &_overlays);
35503564 scriptEngine->registerGlobalObject("Menu", MenuScriptingInterface::getInstance());
3565+ scriptEngine->registerGlobalObject("Settings", SettingsScriptingInterface::getInstance());
3566+ scriptEngine->registerGlobalObject("AudioDevice", AudioDeviceScriptingInterface::getInstance());
35513567
35523568 QThread* workerThread = new QThread(this);
35533569

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t