test blob bounciness, slight revert

This commit is contained in:
2026-04-19 22:31:46 +02:00
parent 007cb32690
commit 2fd01a7274
3 changed files with 24 additions and 7 deletions
+2 -2
View File
@@ -14,6 +14,8 @@ BlobRect::~BlobRect() {
}
void BlobRect::updatePolish() {
BlobShape::updatePolish();
if (m_physicsActive) {
// Check if deformation is visually imperceptible
float totalDelta = std::abs(m_dm00 - 1.0f) + std::abs(m_dm01) + std::abs(m_dm11 - 1.0f);
@@ -39,8 +41,6 @@ void BlobRect::updatePolish() {
Qt::QueuedConnection);
}
}
BlobShape::updatePolish();
}
void BlobRect::updatePhysics() {
+15 -2
View File
@@ -68,8 +68,21 @@ void BlobShape::componentComplete() {
void BlobShape::geometryChange(const QRectF& newGeometry, const QRectF& oldGeometry) {
QQuickItem::geometryChange(newGeometry, oldGeometry);
updateCenteredDeformMatrix();
if (m_group && newGeometry != oldGeometry) {
m_group->markShapeDirty(this);
if (m_group) {
// Accumulate sub-pixel drift so slow movements don't desync the shader
m_pendingDx += static_cast<float>(newGeometry.x() - oldGeometry.x());
m_pendingDy += static_cast<float>(newGeometry.y() - oldGeometry.y());
m_pendingDw += static_cast<float>(newGeometry.width() - oldGeometry.width());
m_pendingDh += static_cast<float>(newGeometry.height() - oldGeometry.height());
if (std::abs(m_pendingDx) > 0.5f || std::abs(m_pendingDy) > 0.5f ||
std::abs(m_pendingDw) > 0.5f || std::abs(m_pendingDh) > 0.5f) {
m_pendingDx = 0;
m_pendingDy = 0;
m_pendingDw = 0;
m_pendingDh = 0;
m_group->markShapeDirty(this);
}
}
}
+7 -3
View File
@@ -82,9 +82,13 @@ float m_cachedPaddedW = 0;
float m_cachedPaddedH = 0;
QRectF m_localPaddedRect;
QVector<BlobRectData> m_cachedRects;
int m_cachedMyIndex = -2;
bool m_cachedHasInverted = false;
float m_cachedInvertedRadius = 0;
int m_cachedMyIndex = -2;
float m_pendingDx = 0;
float m_pendingDy = 0;
float m_pendingDw = 0;
float m_pendingDh = 0;
bool m_cachedHasInverted = false;
float m_cachedInvertedRadius = 0;
float m_cachedInvertedOuter[4] = {};
float m_cachedInvertedInner[4] = {};
};