History

Merge branch 'master' into tony/remove-joint-states

Anthony J. Thibault committed 10 years ago

Commit 55adedc2 parents e698d3c 8dcf245128 files · +5083 −1241Browse files

Showing the changes to libraries/render-utils/src/Model.cpp (1 of 128 files). Show all

Unified · Split

libraries/render-utils/src/Model.cpp+19−12
@@ -88,11 +88,7 @@ void Model::setScale(const glm::vec3& scale) { · 87 unmodified lines
8888 }
8989
9090 void Model::setScaleInternal(const glm::vec3& scale) {
91− float scaleLength = glm::length(_scale);
92− float relativeDeltaScale = glm::length(_scale - scale) / scaleLength;
93−
94− const float ONE_PERCENT = 0.01f;
95− if (relativeDeltaScale > ONE_PERCENT || scaleLength < EPSILON) {
91+ if (glm::distance(_scale, scale) > METERS_PER_MILLIMETER) {
9692 _scale = scale;
9793 initJointTransforms();
9894 }
@@ -485,8 +481,10 @@ void Model::setVisibleInScene(bool newValue, std::shared_ptr<render::Scene> scen · 386 unmodified lines
485481 }
486482
487483
488−bool Model::addToScene(std::shared_ptr<render::Scene> scene, render::PendingChanges& pendingChanges) {
489− if (!_meshGroupsKnown && isLoaded()) {
484+bool Model::addToScene(std::shared_ptr<render::Scene> scene, render::PendingChanges& pendingChanges, bool showCollisionHull) {
485+
486+ if ((!_meshGroupsKnown || showCollisionHull != _showCollisionHull) && isLoaded()) {
487+ _showCollisionHull = showCollisionHull;
490488 segregateMeshGroups();
491489 }
492490
@@ -509,8 +507,12 @@ bool Model::addToScene(std::shared_ptr<render::Scene> scene, render::PendingChan · 16 unmodified lines
509507 return somethingAdded;
510508 }
511509
512−bool Model::addToScene(std::shared_ptr<render::Scene> scene, render::PendingChanges& pendingChanges, render::Item::Status::Getters& statusGetters) {
513− if (!_meshGroupsKnown && isLoaded()) {
510+bool Model::addToScene(std::shared_ptr<render::Scene> scene,
511+ render::PendingChanges& pendingChanges,
512+ render::Item::Status::Getters& statusGetters,
513+ bool showCollisionHull) {
514+ if ((!_meshGroupsKnown || showCollisionHull != _showCollisionHull) && isLoaded()) {
515+ _showCollisionHull = showCollisionHull;
514516 segregateMeshGroups();
515517 }
516518
@@ -1067,7 +1069,6 @@ void Model::setGeometry(const QSharedPointer<NetworkGeometry>& newGeometry) { · 550 unmodified lines
10671069
10681070 void Model::deleteGeometry() {
10691071 _blendedVertexBuffers.clear();
1070− _rig->clearJointStates();
10711072 _meshStates.clear();
10721073 _rig->destroyAnimGraph();
10731074 _blendedBlendshapeCoefficients.clear();
@@ -1108,8 +1109,14 @@ AABox Model::getPartBounds(int meshIndex, int partIndex) { · 34 unmodified lines
11081109 }
11091110
11101111 void Model::segregateMeshGroups() {
1111− const FBXGeometry& geometry = _geometry->getFBXGeometry();
1112− const std::vector<std::unique_ptr<NetworkMesh>>& networkMeshes = _geometry->getMeshes();
1112+ QSharedPointer<NetworkGeometry> networkGeometry;
1113+ if (_showCollisionHull && _collisionGeometry && _collisionGeometry->isLoaded()) {
1114+ networkGeometry = _collisionGeometry;
1115+ } else {
1116+ networkGeometry = _geometry;
1117+ }
1118+ const FBXGeometry& geometry = networkGeometry->getFBXGeometry();
1119+ const std::vector<std::unique_ptr<NetworkMesh>>& networkMeshes = networkGeometry->getMeshes();
11131120
11141121 // all of our mesh vectors must match in size
11151122 if ((int)networkMeshes.size() != geometry.meshes.size() ||