From ab8784f1b497b9eeb8521f1b422e85a94ef5b72f Mon Sep 17 00:00:00 2001 From: Seth Alves Date: Mon, 9 Mar 2015 13:51:08 -0700 Subject: [PATCH] add comment about character capsule being hard-coded --- libraries/fbx/src/OBJReader.cpp | 26 +++++++++++++++++++------ libraries/physics/src/PhysicsEngine.cpp | 1 + 2 files changed, 21 insertions(+), 6 deletions(-) diff --git a/libraries/fbx/src/OBJReader.cpp b/libraries/fbx/src/OBJReader.cpp index 194aaa4ac0..4f0f1246d2 100644 --- a/libraries/fbx/src/OBJReader.cpp +++ b/libraries/fbx/src/OBJReader.cpp @@ -121,18 +121,28 @@ bool parseOBJGroup(OBJTokenizer &tokenizer, const QVariantHash& mapping, FBXGeom break; } sawG = true; - if (tokenizer.nextToken() != OBJTokenizer::DATUM_TOKEN) { break; } + if (tokenizer.nextToken() != OBJTokenizer::DATUM_TOKEN) { + break; + } QByteArray groupName = tokenizer.getDatum(); meshPart.materialID = groupName; } else if (token == "v") { - if (tokenizer.nextToken() != OBJTokenizer::DATUM_TOKEN) { break; } + if (tokenizer.nextToken() != OBJTokenizer::DATUM_TOKEN) { + break; + } float x = std::stof(tokenizer.getDatum().data()); // notice the order of z and y -- in OBJ files, up is the 3rd value - if (tokenizer.nextToken() != OBJTokenizer::DATUM_TOKEN) { break; } + if (tokenizer.nextToken() != OBJTokenizer::DATUM_TOKEN) { + break; + } float z = std::stof(tokenizer.getDatum().data()); - if (tokenizer.nextToken() != OBJTokenizer::DATUM_TOKEN) { break; } + if (tokenizer.nextToken() != OBJTokenizer::DATUM_TOKEN) { + break; + } float y = std::stof(tokenizer.getDatum().data()); - if (tokenizer.nextToken() != OBJTokenizer::DATUM_TOKEN) { break; } + if (tokenizer.nextToken() != OBJTokenizer::DATUM_TOKEN) { + break; + } // the spec gets vague here. might be w, might be a color... chop it off. tokenizer.skipLine(); mesh.vertices.append(glm::vec3(x, y, z)); @@ -199,10 +209,14 @@ FBXGeometry readOBJ(QIODevice* device, const QVariantHash& mapping) { geometry.meshExtents.reset(); geometry.meshes.append(FBXMesh()); + + try { // call parseOBJGroup as long as it's returning true. Each successful call will // add a new meshPart to the geometry's single mesh. - while (parseOBJGroup(tokenizer, mapping, geometry)) { + bool success = true; + while (success) { + success = parseOBJGroup(tokenizer, mapping, geometry); } FBXMesh &mesh = geometry.meshes[0]; diff --git a/libraries/physics/src/PhysicsEngine.cpp b/libraries/physics/src/PhysicsEngine.cpp index 501b39428a..6c5ac4b275 100644 --- a/libraries/physics/src/PhysicsEngine.cpp +++ b/libraries/physics/src/PhysicsEngine.cpp @@ -608,6 +608,7 @@ void PhysicsEngine::setAvatarData(AvatarData *avatarData) { _avatarGhostObject->setWorldTransform(btTransform(glmToBullet(_avatarData->getOrientation()), glmToBullet(_avatarData->getPosition()))); + // XXX these values should be computed from the character model. btScalar characterHeight = 1.75; btScalar characterWidth = 1.75; btScalar stepHeight = btScalar(0.35);