Showing the changes to libraries/render-utils/src/Model.cpp (1 of 128 files). Show all
Unified · Split
| @@ -88,11 +88,7 @@ void Model::setScale(const glm::vec3& scale) { · 87 unmodified lines | ||
| 88 | 88 | } |
| 89 | 89 | |
| 90 | 90 | 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) { | |
| 96 | 92 | _scale = scale; |
| 97 | 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 | |
| 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; | |
| 490 | 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 | 507 | return somethingAdded; |
| 510 | 508 | } |
| 511 | 509 | |
| 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; | |
| 514 | 516 | segregateMeshGroups(); |
| 515 | 517 | } |
| 516 | 518 | |
| @@ -1067,7 +1069,6 @@ void Model::setGeometry(const QSharedPointer<NetworkGeometry>& newGeometry) { · 550 unmodified lines | ||
| 1067 | 1069 | |
| 1068 | 1070 | void Model::deleteGeometry() { |
| 1069 | 1071 | _blendedVertexBuffers.clear(); |
| 1070 | − _rig->clearJointStates(); | |
| 1071 | 1072 | _meshStates.clear(); |
| 1072 | 1073 | _rig->destroyAnimGraph(); |
| 1073 | 1074 | _blendedBlendshapeCoefficients.clear(); |
| @@ -1108,8 +1109,14 @@ AABox Model::getPartBounds(int meshIndex, int partIndex) { · 34 unmodified lines | ||
| 1108 | 1109 | } |
| 1109 | 1110 | |
| 1110 | 1111 | 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(); | |
| 1113 | 1120 | |
| 1114 | 1121 | // all of our mesh vectors must match in size |
| 1115 | 1122 | if ((int)networkMeshes.size() != geometry.meshes.size() || |