[Scummvm-git-logs] scummvm master -> dc7b853ad3e5d02c2b5790c022b4c4ccbb3d9e4f
digitall
noreply at scummvm.org
Tue Feb 21 18:24:04 UTC 2023
This automated email contains information about 1 new commit which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .
Summary:
dc7b853ad3 HPL1: Fix Last of Memset on Non Trivial Structure GCC Compiler Warnings
Commit: dc7b853ad3e5d02c2b5790c022b4c4ccbb3d9e4f
https://github.com/scummvm/scummvm/commit/dc7b853ad3e5d02c2b5790c022b4c4ccbb3d9e4f
Author: D G Turner (digitall at scummvm.org)
Date: 2023-02-21T18:23:22Z
Commit Message:
HPL1: Fix Last of Memset on Non Trivial Structure GCC Compiler Warnings
Changed paths:
engines/hpl1/engine/libraries/newton/physics/dgBody.h
engines/hpl1/engine/libraries/newton/physics/dgWorld.cpp
diff --git a/engines/hpl1/engine/libraries/newton/physics/dgBody.h b/engines/hpl1/engine/libraries/newton/physics/dgBody.h
index d81e1ffdfda..9a70a05dc2a 100644
--- a/engines/hpl1/engine/libraries/newton/physics/dgBody.h
+++ b/engines/hpl1/engine/libraries/newton/physics/dgBody.h
@@ -74,6 +74,11 @@ class dgBroadPhaseList {
public:
dgBroadPhaseCell *m_cell;
void *m_axisArrayNode[3];
+
+ void reset() {
+ m_cell = NULL;
+ for (uint i = 0; i < ARRAYSIZE(m_axisArrayNode); i++) m_axisArrayNode[i] = NULL;
+ }
};
DG_MSC_VECTOR_ALIGMENT
@@ -254,6 +259,8 @@ private:
OnMatrixUpdateCallback m_matrixUpdate;
OnApplyExtForceAndTorque m_applyExtForces;
+ void reset();
+
friend class dgWorld;
friend class dgContact;
friend class dgCollision;
@@ -294,6 +301,60 @@ private:
//
// *****************************************************************************
+inline void dgBody::reset() {
+ m_matrix = dgGetZeroMatrix();
+ m_collisionWorldMatrix = dgGetZeroMatrix();
+ m_invWorldInertiaMatrix = dgGetZeroMatrix();
+ m_rotation = dgQuaternion(dgFloat32(0.0f), dgFloat32(0.0f), dgFloat32(0.0f), dgFloat32(0.0f));
+
+ m_veloc = dgVector(dgFloat32(0.0f), dgFloat32(0.0f), dgFloat32(0.0f), dgFloat32(0.0f));
+ m_omega = dgVector(dgFloat32(0.0f), dgFloat32(0.0f), dgFloat32(0.0f), dgFloat32(0.0f));
+ m_accel = dgVector(dgFloat32(0.0f), dgFloat32(0.0f), dgFloat32(0.0f), dgFloat32(0.0f));
+ m_alpha = dgVector(dgFloat32(0.0f), dgFloat32(0.0f), dgFloat32(0.0f), dgFloat32(0.0f));
+ m_netForce = dgVector(dgFloat32(0.0f), dgFloat32(0.0f), dgFloat32(0.0f), dgFloat32(0.0f));
+ m_netTorque = dgVector(dgFloat32(0.0f), dgFloat32(0.0f), dgFloat32(0.0f), dgFloat32(0.0f));
+ m_prevExternalForce = dgVector(dgFloat32(0.0f), dgFloat32(0.0f), dgFloat32(0.0f), dgFloat32(0.0f));
+ m_prevExternalTorque = dgVector(dgFloat32(0.0f), dgFloat32(0.0f), dgFloat32(0.0f), dgFloat32(0.0f));
+
+ m_mass = dgVector(dgFloat32(0.0f), dgFloat32(0.0f), dgFloat32(0.0f), dgFloat32(0.0f));
+ m_invMass = dgVector(dgFloat32(0.0f), dgFloat32(0.0f), dgFloat32(0.0f), dgFloat32(0.0f));
+ m_aparentMass = dgVector(dgFloat32(0.0f), dgFloat32(0.0f), dgFloat32(0.0f), dgFloat32(0.0f));
+ m_localCentreOfMass = dgVector(dgFloat32(0.0f), dgFloat32(0.0f), dgFloat32(0.0f), dgFloat32(0.0f));
+ m_globalCentreOfMass = dgVector(dgFloat32(0.0f), dgFloat32(0.0f), dgFloat32(0.0f), dgFloat32(0.0f));
+ m_minAABB = dgVector(dgFloat32(0.0f), dgFloat32(0.0f), dgFloat32(0.0f), dgFloat32(0.0f));
+ m_maxAABB = dgVector(dgFloat32(0.0f), dgFloat32(0.0f), dgFloat32(0.0f), dgFloat32(0.0f));
+ m_dampCoef = dgVector(dgFloat32(0.0f), dgFloat32(0.0f), dgFloat32(0.0f), dgFloat32(0.0f));
+
+ m_index = 0;
+ m_uniqueID = 0;
+ m_bodyGroupId = 0;
+ m_genericLRUMark = 0;
+ m_sleepingCounter = 0;
+ m_dynamicsLru = 0;
+ m_isInDerstruionArrayLRU = 0;
+
+ m_freeze = 0;
+ m_sleeping = 0;
+ m_autoSleep = 0;
+ m_isInWorld = 0;
+ m_equilibrium = 0;
+ m_continueCollisionMode = 0;
+ m_spawnnedFromCallback = 0;
+ m_collideWithLinkedBodies = 0;
+ m_solverInContinueCollision = 0;
+ m_inCallback = 0;
+
+ m_userData = NULL;
+ m_world = NULL;
+ m_collision = NULL;
+ m_collisionCell.reset();
+ m_masterNode = NULL;
+
+ m_destructor = NULL;
+ m_matrixUpdate = NULL;
+ m_applyExtForces = NULL;
+}
+
inline void dgBody::SetAutoSleep(bool state) {
m_autoSleep = dgUnsigned32(state);
if (m_autoSleep == 0) {
diff --git a/engines/hpl1/engine/libraries/newton/physics/dgWorld.cpp b/engines/hpl1/engine/libraries/newton/physics/dgWorld.cpp
index 5cb3610ff56..c45250b2a61 100644
--- a/engines/hpl1/engine/libraries/newton/physics/dgWorld.cpp
+++ b/engines/hpl1/engine/libraries/newton/physics/dgWorld.cpp
@@ -443,7 +443,7 @@ dgBody *dgWorld::CreateBody(dgCollision *const collision,
NEWTON_ASSERT((sizeof(dgBody) & 0xf) == 0);
NEWTON_ASSERT((dgUnsigned64(body) & 0xf) == 0);
- memset(body, 0, sizeof(dgBody));
+ body->reset();
// m_bodiesCount ++;
m_bodiesUniqueID++;
More information about the Scummvm-git-logs
mailing list