History

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

stojce committed 12 years ago

Commit 7b263172 parents ce85e67 dc8902662 files · +1480 −409Browse files

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

Unified · Split

interface/src/Application.cpp+31−12
@@ -524,10 +524,22 @@ void Application::paintGL() { · 523 unmodified lines
524524
525525 } else if (_myCamera.getMode() == CAMERA_MODE_MIRROR) {
526526 _myCamera.setTightness(0.0f);
527− float headHeight = _myAvatar->getHead()->calculateAverageEyePosition().y - _myAvatar->getPosition().y;
527+ glm::vec3 eyePosition = _myAvatar->getHead()->calculateAverageEyePosition();
528+ float headHeight = eyePosition.y - _myAvatar->getPosition().y;
528529 _myCamera.setDistance(MIRROR_FULLSCREEN_DISTANCE * _myAvatar->getScale());
529530 _myCamera.setTargetPosition(_myAvatar->getPosition() + glm::vec3(0, headHeight, 0));
530531 _myCamera.setTargetRotation(_myAvatar->getWorldAlignedOrientation() * glm::quat(glm::vec3(0.0f, PI, 0.0f)));
532+
533+ // if the head would intersect the near clip plane, we must push the camera out
534+ glm::vec3 relativePosition = glm::inverse(_myCamera.getTargetRotation()) *
535+ (eyePosition - _myCamera.getTargetPosition());
536+ const float PUSHBACK_RADIUS = 0.2f;
537+ float pushback = relativePosition.z + _myCamera.getNearClip() +
538+ _myAvatar->getScale() * PUSHBACK_RADIUS - _myCamera.getDistance();
539+ if (pushback > 0.0f) {
540+ _myCamera.setTargetPosition(_myCamera.getTargetPosition() +
541+ _myCamera.getTargetRotation() * glm::vec3(0.0f, 0.0f, pushback));
542+ }
531543 }
532544
533545 // Update camera position
@@ -1572,14 +1584,14 @@ void Application::init() { · 1038 unmodified lines
15721584
15731585 // connect the _particleCollisionSystem to our script engine's ParticleScriptingInterface
15741586 connect(&_particleCollisionSystem,
1575− SIGNAL(particleCollisionWithVoxel(const ParticleID&, const VoxelDetail&, const glm::vec3&)),
1587+ SIGNAL(particleCollisionWithVoxel(const ParticleID&, const VoxelDetail&, const CollisionInfo&)),
15761588 ScriptEngine::getParticlesScriptingInterface(),
1577− SLOT(forwardParticleCollisionWithVoxel(const ParticleID&, const VoxelDetail&, const glm::vec3&)));
1589+ SIGNAL(particleCollisionWithVoxels(const ParticleID&, const VoxelDetail&, const CollisionInfo&)));
15781590
15791591 connect(&_particleCollisionSystem,
1580− SIGNAL(particleCollisionWithParticle(const ParticleID&, const ParticleID&, const glm::vec3&)),
1592+ SIGNAL(particleCollisionWithParticle(const ParticleID&, const ParticleID&, const CollisionInfo&)),
15811593 ScriptEngine::getParticlesScriptingInterface(),
1582− SLOT(forwardParticleCollisionWithParticle(const ParticleID&, const ParticleID&, const glm::vec3&)));
1594+ SIGNAL(particleCollisionWithParticle(const ParticleID&, const ParticleID&, const CollisionInfo&)));
15831595
15841596 _audio.init(_glWidget);
15851597
@@ -2229,8 +2241,7 @@ void Application::updateShadowMap() { · 643 unmodified lines
22292241 glRotatef(glm::degrees(glm::angle(inverseRotation)), axis.x, axis.y, axis.z);
22302242
22312243 // store view matrix without translation, which we'll use for precision-sensitive objects
2232− glGetFloatv(GL_MODELVIEW_MATRIX, (GLfloat*)&_untranslatedViewMatrix);
2233− _viewMatrixTranslation = glm::vec3();
2244+ updateUntranslatedViewMatrix();
22342245
22352246 _avatarManager.renderAvatars(Avatar::SHADOW_RENDER_MODE);
22362247 _particles.render();
@@ -2315,8 +2326,7 @@ void Application::displaySide(Camera& whichCamera, bool selfAvatarOnly) { · 78 unmodified lines
23152326 glRotatef(-glm::degrees(glm::angle(rotation)), axis.x, axis.y, axis.z);
23162327
23172328 // store view matrix without translation, which we'll use for precision-sensitive objects
2318− glGetFloatv(GL_MODELVIEW_MATRIX, (GLfloat*)&_untranslatedViewMatrix);
2319− _viewMatrixTranslation = -whichCamera.getPosition();
2329+ updateUntranslatedViewMatrix(-whichCamera.getPosition());
23202330
23212331 glTranslatef(_viewMatrixTranslation.x, _viewMatrixTranslation.y, _viewMatrixTranslation.z);
23222332
@@ -2447,6 +2457,11 @@ void Application::displaySide(Camera& whichCamera, bool selfAvatarOnly) { · 124 unmodified lines
24472457 }
24482458 }
24492459
2460+void Application::updateUntranslatedViewMatrix(const glm::vec3& viewMatrixTranslation) {
2461+ glGetFloatv(GL_MODELVIEW_MATRIX, (GLfloat*)&_untranslatedViewMatrix);
2462+ _viewMatrixTranslation = viewMatrixTranslation;
2463+}
2464+
24502465 void Application::loadTranslatedViewMatrix(const glm::vec3& translation) {
24512466 glLoadMatrixf((const GLfloat*)&_untranslatedViewMatrix);
24522467 glTranslatef(translation.x + _viewMatrixTranslation.x, translation.y + _viewMatrixTranslation.y,
@@ -3254,9 +3269,12 @@ void Application::toggleRunningScriptsWidget() · 801 unmodified lines
32543269
32553270 void Application::uploadFST(bool isHead) {
32563271 ModelUploader* uploader = new ModelUploader(isHead);
3257− if (uploader->zip()) {
3258− uploader->send();
3259− }
3272+ QThread* thread = new QThread();
3273+ thread->connect(uploader, SIGNAL(destroyed()), SLOT(quit()));
3274+ thread->connect(thread, SIGNAL(finished()), SLOT(deleteLater()));
3275+ uploader->connect(thread, SIGNAL(started()), SLOT(send()));
3276+
3277+ thread->start();
32603278 }
32613279
32623280 void Application::uploadHead() {
@@ -3283,6 +3301,7 @@ void Application::loadScript(const QString& scriptName) { · 20 unmodified lines
32833301 // we can use the same ones from the application.
32843302 scriptEngine->getVoxelsScriptingInterface()->setPacketSender(&_voxelEditSender);
32853303 scriptEngine->getVoxelsScriptingInterface()->setVoxelTree(_voxels.getTree());
3304+ scriptEngine->getVoxelsScriptingInterface()->setUndoStack(&_undoStack);
32863305 scriptEngine->getParticlesScriptingInterface()->setPacketSender(&_particleEditSender);
32873306 scriptEngine->getParticlesScriptingInterface()->setParticleTree(_particles.getTree());
32883307

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