From bb2f11f9481b86cd1d735d334d12955fa74a4c2d Mon Sep 17 00:00:00 2001 From: Irlan Date: Sat, 4 May 2019 19:25:49 -0300 Subject: [PATCH] Use clean separate row value structure that doesn't contain list pointers in the view --- include/bounce/cloth/sparse_sym_mat33_view.h | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/include/bounce/cloth/sparse_sym_mat33_view.h b/include/bounce/cloth/sparse_sym_mat33_view.h index cc5fc20..848242b 100644 --- a/include/bounce/cloth/sparse_sym_mat33_view.h +++ b/include/bounce/cloth/sparse_sym_mat33_view.h @@ -21,10 +21,16 @@ #include +struct b3ArrayRowValue +{ + u32 column; + b3Mat33 value; +}; + struct b3RowValueArray { u32 count; - b3RowValue* values; + b3ArrayRowValue* values; }; // A read-only sparse symmetric matrix. @@ -56,7 +62,7 @@ inline b3SparseSymMat33View::b3SparseSymMat33View(const b3SparseSymMat33& _m) b3RowValueArray* rowArray = rows + i; rowArray->count = rowList->count; - rowArray->values = (b3RowValue*)b3Alloc(rowArray->count * sizeof(b3RowValue)); + rowArray->values = (b3ArrayRowValue*)b3Alloc(rowArray->count * sizeof(b3ArrayRowValue)); u32 valueIndex = 0; for (b3RowValue* v = rowList->head; v; v = v->next) @@ -92,7 +98,7 @@ inline const b3Mat33& b3SparseSymMat33View::operator()(u32 i, u32 j) const for (u32 c = 0; c < vs->count; ++c) { - b3RowValue* rv = vs->values + c; + b3ArrayRowValue* rv = vs->values + c; u32 column = rv->column; @@ -132,7 +138,7 @@ inline void b3Mul(b3DenseVec3& out, const b3SparseSymMat33View& A, const b3Dense for (u32 c = 0; c < rowArray->count; ++c) { - b3RowValue* rv = rowArray->values + c; + b3ArrayRowValue* rv = rowArray->values + c; u32 j = rv->column; b3Mat33 a = rv->value;