mirror of
https://github.com/overte-org/overte.git
synced 2025-08-04 04:43:31 +02:00
avoid incorrect ShapeManager dupes for compound shapes
This commit is contained in:
parent
fad0dde550
commit
996b71fa9a
1 changed files with 22 additions and 10 deletions
|
@ -46,6 +46,8 @@ void ShapeInfo::setParams(ShapeType type, const glm::vec3& halfExtents, QString
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case SHAPE_TYPE_COMPOUND:
|
case SHAPE_TYPE_COMPOUND:
|
||||||
|
case SHAPE_TYPE_SIMPLE_HULL:
|
||||||
|
case SHAPE_TYPE_SIMPLE_COMPOUND:
|
||||||
case SHAPE_TYPE_STATIC_MESH:
|
case SHAPE_TYPE_STATIC_MESH:
|
||||||
_url = QUrl(url);
|
_url = QUrl(url);
|
||||||
break;
|
break;
|
||||||
|
@ -250,16 +252,26 @@ const DoubleHashKey& ShapeInfo::getHash() const {
|
||||||
}
|
}
|
||||||
_doubleHashKey.setHash2(hash);
|
_doubleHashKey.setHash2(hash);
|
||||||
|
|
||||||
if (_type == SHAPE_TYPE_COMPOUND || _type == SHAPE_TYPE_STATIC_MESH) {
|
QString url = _url.toString();
|
||||||
QString url = _url.toString();
|
if (!url.isEmpty()) {
|
||||||
if (!url.isEmpty()) {
|
// fold the urlHash into both parts
|
||||||
// fold the urlHash into both parts
|
QByteArray baUrl = url.toLocal8Bit();
|
||||||
QByteArray baUrl = url.toLocal8Bit();
|
uint32_t urlHash = qChecksum(baUrl.data(), baUrl.size());
|
||||||
const char *cUrl = baUrl.data();
|
_doubleHashKey.setHash(_doubleHashKey.getHash() ^ urlHash);
|
||||||
uint32_t urlHash = qChecksum(cUrl, baUrl.count());
|
_doubleHashKey.setHash2(_doubleHashKey.getHash2() ^ urlHash);
|
||||||
_doubleHashKey.setHash(_doubleHashKey.getHash() ^ urlHash);
|
}
|
||||||
_doubleHashKey.setHash2(_doubleHashKey.getHash2() ^ urlHash);
|
|
||||||
}
|
uint32_t numHulls = 0;
|
||||||
|
if (_type == SHAPE_TYPE_COMPOUND || _type == SHAPE_TYPE_SIMPLE_COMPOUND) {
|
||||||
|
numHulls = (uint32_t)_pointCollection.size();
|
||||||
|
} else if (_type == SHAPE_TYPE_SIMPLE_HULL) {
|
||||||
|
numHulls = 1;
|
||||||
|
}
|
||||||
|
if (numHulls > 0) {
|
||||||
|
hash = DoubleHashKey::hashFunction(numHulls, primeIndex++);
|
||||||
|
_doubleHashKey.setHash(_doubleHashKey.getHash() ^ hash);
|
||||||
|
hash = DoubleHashKey::hashFunction2(numHulls);
|
||||||
|
_doubleHashKey.setHash2(_doubleHashKey.getHash2() ^ hash);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return _doubleHashKey;
|
return _doubleHashKey;
|
||||||
|
|
Loading…
Reference in a new issue