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
88}88}
89 89
90void Model::setScaleInternal(const glm::vec3& scale) {90void Model::setScaleInternal(const glm::vec3& scale) {
91 float scaleLength = glm::length(_scale);91 if (glm::distance(_scale, scale) > METERS_PER_MILLIMETER) {
92 float relativeDeltaScale = glm::length(_scale - scale) / scaleLength;
93
94 const float ONE_PERCENT = 0.01f;
95 if (relativeDeltaScale > ONE_PERCENT || scaleLength < EPSILON) {
96 _scale = scale;92 _scale = scale;
97 initJointTransforms();93 initJointTransforms();
98 }94 }
@@ -485,8 +481,10 @@ void Model::setVisibleInScene(bool newValue, std::shared_ptr<render::Scene> scen · 386 unmodified lines
485}481}
486 482
487 483
488bool Model::addToScene(std::shared_ptr<render::Scene> scene, render::PendingChanges& pendingChanges) {484bool Model::addToScene(std::shared_ptr<render::Scene> scene, render::PendingChanges& pendingChanges, bool showCollisionHull) {
489 if (!_meshGroupsKnown && isLoaded()) {485
486 if ((!_meshGroupsKnown || showCollisionHull != _showCollisionHull) && isLoaded()) {
487 _showCollisionHull = showCollisionHull;
490 segregateMeshGroups();488 segregateMeshGroups();
491 }489 }
492 490
@@ -509,8 +507,12 @@ bool Model::addToScene(std::shared_ptr<render::Scene> scene, render::PendingChan · 16 unmodified lines
509 return somethingAdded;507 return somethingAdded;
510}508}
511 509
512bool Model::addToScene(std::shared_ptr<render::Scene> scene, render::PendingChanges& pendingChanges, render::Item::Status::Getters& statusGetters) {510bool Model::addToScene(std::shared_ptr<render::Scene> scene,
513 if (!_meshGroupsKnown && isLoaded()) {511 render::PendingChanges& pendingChanges,
512 render::Item::Status::Getters& statusGetters,
513 bool showCollisionHull) {
514 if ((!_meshGroupsKnown || showCollisionHull != _showCollisionHull) && isLoaded()) {
515 _showCollisionHull = showCollisionHull;
514 segregateMeshGroups();516 segregateMeshGroups();
515 }517 }
516 518
@@ -1067,7 +1069,6 @@ void Model::setGeometry(const QSharedPointer<NetworkGeometry>& newGeometry) { · 550 unmodified lines
1067 1069
1068void Model::deleteGeometry() {1070void Model::deleteGeometry() {
1069 _blendedVertexBuffers.clear();1071 _blendedVertexBuffers.clear();
1070 _rig->clearJointStates();
1071 _meshStates.clear();1072 _meshStates.clear();
1072 _rig->destroyAnimGraph();1073 _rig->destroyAnimGraph();
1073 _blendedBlendshapeCoefficients.clear();1074 _blendedBlendshapeCoefficients.clear();
@@ -1108,8 +1109,14 @@ AABox Model::getPartBounds(int meshIndex, int partIndex) { · 34 unmodified lines
1108}1109}
1109 1110
1110void Model::segregateMeshGroups() {1111void Model::segregateMeshGroups() {
1111 const FBXGeometry& geometry = _geometry->getFBXGeometry();1112 QSharedPointer<NetworkGeometry> networkGeometry;
1112 const std::vector<std::unique_ptr<NetworkMesh>>& networkMeshes = _geometry->getMeshes();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();
1113 1120
1114 // all of our mesh vectors must match in size1121 // all of our mesh vectors must match in size
1115 if ((int)networkMeshes.size() != geometry.meshes.size() ||1122 if ((int)networkMeshes.size() != geometry.meshes.size() ||