Remove localBoundsAABB from ProxyShapesComponents

This commit is contained in:
Daniel Chappuis 2019-03-21 17:36:35 +01:00
parent fe81c3fd6e
commit dcc07447a8
3 changed files with 3 additions and 15 deletions

View File

@ -35,7 +35,7 @@ using namespace reactphysics3d;
// Constructor // Constructor
ProxyShapeComponents::ProxyShapeComponents(MemoryAllocator& allocator) ProxyShapeComponents::ProxyShapeComponents(MemoryAllocator& allocator)
:Components(allocator, sizeof(Entity) + sizeof(Entity) + sizeof(ProxyShape*) + sizeof(int) + sizeof(AABB) + :Components(allocator, sizeof(Entity) + sizeof(Entity) + sizeof(ProxyShape*) + sizeof(int) +
sizeof(Transform) + sizeof(CollisionShape*) + sizeof(decimal) + sizeof(unsigned short) + sizeof(Transform) + sizeof(CollisionShape*) + sizeof(decimal) + sizeof(unsigned short) +
sizeof(unsigned short)) { sizeof(unsigned short)) {
@ -60,8 +60,7 @@ void ProxyShapeComponents::allocate(uint32 nbComponentsToAllocate) {
Entity* newBodiesEntities = reinterpret_cast<Entity*>(newProxyShapesEntities + nbComponentsToAllocate); Entity* newBodiesEntities = reinterpret_cast<Entity*>(newProxyShapesEntities + nbComponentsToAllocate);
ProxyShape** newProxyShapes = reinterpret_cast<ProxyShape**>(newBodiesEntities + nbComponentsToAllocate); ProxyShape** newProxyShapes = reinterpret_cast<ProxyShape**>(newBodiesEntities + nbComponentsToAllocate);
int* newBroadPhaseIds = reinterpret_cast<int*>(newProxyShapes + nbComponentsToAllocate); int* newBroadPhaseIds = reinterpret_cast<int*>(newProxyShapes + nbComponentsToAllocate);
AABB* newLocalBounds = reinterpret_cast<AABB*>(newBroadPhaseIds + nbComponentsToAllocate); Transform* newLocalToBodyTransforms = reinterpret_cast<Transform*>(newBroadPhaseIds + nbComponentsToAllocate);
Transform* newLocalToBodyTransforms = reinterpret_cast<Transform*>(newLocalBounds + nbComponentsToAllocate);
CollisionShape** newCollisionShapes = reinterpret_cast<CollisionShape**>(newLocalToBodyTransforms + nbComponentsToAllocate); CollisionShape** newCollisionShapes = reinterpret_cast<CollisionShape**>(newLocalToBodyTransforms + nbComponentsToAllocate);
decimal* newMasses = reinterpret_cast<decimal*>(newCollisionShapes + nbComponentsToAllocate); decimal* newMasses = reinterpret_cast<decimal*>(newCollisionShapes + nbComponentsToAllocate);
unsigned short* newCollisionCategoryBits = reinterpret_cast<unsigned short*>(newMasses + nbComponentsToAllocate); unsigned short* newCollisionCategoryBits = reinterpret_cast<unsigned short*>(newMasses + nbComponentsToAllocate);
@ -75,7 +74,6 @@ void ProxyShapeComponents::allocate(uint32 nbComponentsToAllocate) {
memcpy(newBodiesEntities, mBodiesEntities, mNbComponents * sizeof(Entity)); memcpy(newBodiesEntities, mBodiesEntities, mNbComponents * sizeof(Entity));
memcpy(newProxyShapes, mProxyShapes, mNbComponents * sizeof(ProxyShape*)); memcpy(newProxyShapes, mProxyShapes, mNbComponents * sizeof(ProxyShape*));
memcpy(newBroadPhaseIds, mBroadPhaseIds, mNbComponents * sizeof(int)); memcpy(newBroadPhaseIds, mBroadPhaseIds, mNbComponents * sizeof(int));
memcpy(newLocalBounds, mLocalBounds, mNbComponents * sizeof(AABB));
memcpy(newLocalToBodyTransforms, mLocalToBodyTransforms, mNbComponents * sizeof(Transform)); memcpy(newLocalToBodyTransforms, mLocalToBodyTransforms, mNbComponents * sizeof(Transform));
memcpy(newCollisionShapes, mCollisionShapes, mNbComponents * sizeof(CollisionShape*)); memcpy(newCollisionShapes, mCollisionShapes, mNbComponents * sizeof(CollisionShape*));
memcpy(newMasses, mMasses, mNbComponents * sizeof(decimal)); memcpy(newMasses, mMasses, mNbComponents * sizeof(decimal));
@ -92,7 +90,6 @@ void ProxyShapeComponents::allocate(uint32 nbComponentsToAllocate) {
mProxyShapesEntities = newProxyShapesEntities; mProxyShapesEntities = newProxyShapesEntities;
mProxyShapes = newProxyShapes; mProxyShapes = newProxyShapes;
mBroadPhaseIds = newBroadPhaseIds; mBroadPhaseIds = newBroadPhaseIds;
mLocalBounds = newLocalBounds;
mLocalToBodyTransforms = newLocalToBodyTransforms; mLocalToBodyTransforms = newLocalToBodyTransforms;
mCollisionShapes = newCollisionShapes; mCollisionShapes = newCollisionShapes;
mMasses = newMasses; mMasses = newMasses;
@ -113,7 +110,6 @@ void ProxyShapeComponents::addComponent(Entity proxyShapeEntity, bool isSleeping
new (mBodiesEntities + index) Entity(component.bodyEntity); new (mBodiesEntities + index) Entity(component.bodyEntity);
mProxyShapes[index] = component.proxyShape; mProxyShapes[index] = component.proxyShape;
new (mBroadPhaseIds + index) int(component.broadPhaseId); new (mBroadPhaseIds + index) int(component.broadPhaseId);
new (mLocalBounds + index) AABB(component.localBounds);
new (mLocalToBodyTransforms + index) Transform(component.localToBodyTransform); new (mLocalToBodyTransforms + index) Transform(component.localToBodyTransform);
mCollisionShapes[index] = component.collisionShape; mCollisionShapes[index] = component.collisionShape;
new (mMasses + index) decimal(component.mass); new (mMasses + index) decimal(component.mass);
@ -139,7 +135,6 @@ void ProxyShapeComponents::moveComponentToIndex(uint32 srcIndex, uint32 destInde
new (mBodiesEntities + destIndex) Entity(mBodiesEntities[srcIndex]); new (mBodiesEntities + destIndex) Entity(mBodiesEntities[srcIndex]);
mProxyShapes[destIndex] = mProxyShapes[srcIndex]; mProxyShapes[destIndex] = mProxyShapes[srcIndex];
new (mBroadPhaseIds + destIndex) int(mBroadPhaseIds[srcIndex]); new (mBroadPhaseIds + destIndex) int(mBroadPhaseIds[srcIndex]);
new (mLocalBounds + destIndex) AABB(mLocalBounds[srcIndex]);
new (mLocalToBodyTransforms + destIndex) Transform(mLocalToBodyTransforms[srcIndex]); new (mLocalToBodyTransforms + destIndex) Transform(mLocalToBodyTransforms[srcIndex]);
mCollisionShapes[destIndex] = mCollisionShapes[srcIndex]; mCollisionShapes[destIndex] = mCollisionShapes[srcIndex];
new (mMasses + destIndex) decimal(mMasses[srcIndex]); new (mMasses + destIndex) decimal(mMasses[srcIndex]);
@ -165,7 +160,6 @@ void ProxyShapeComponents::swapComponents(uint32 index1, uint32 index2) {
Entity bodyEntity1(mBodiesEntities[index1]); Entity bodyEntity1(mBodiesEntities[index1]);
ProxyShape* proxyShape1 = mProxyShapes[index1]; ProxyShape* proxyShape1 = mProxyShapes[index1];
int broadPhaseId1 = mBroadPhaseIds[index1]; int broadPhaseId1 = mBroadPhaseIds[index1];
AABB localBounds1 = mLocalBounds[index1];
Transform localToBodyTransform1 = mLocalToBodyTransforms[index1]; Transform localToBodyTransform1 = mLocalToBodyTransforms[index1];
CollisionShape* collisionShape1 = mCollisionShapes[index1]; CollisionShape* collisionShape1 = mCollisionShapes[index1];
decimal mass1 = mMasses[index1]; decimal mass1 = mMasses[index1];
@ -182,7 +176,6 @@ void ProxyShapeComponents::swapComponents(uint32 index1, uint32 index2) {
new (mBodiesEntities + index2) Entity(bodyEntity1); new (mBodiesEntities + index2) Entity(bodyEntity1);
mProxyShapes[index2] = proxyShape1; mProxyShapes[index2] = proxyShape1;
new (mBroadPhaseIds + index2) int(broadPhaseId1); new (mBroadPhaseIds + index2) int(broadPhaseId1);
new (mLocalBounds + index2) AABB(localBounds1);
new (mLocalToBodyTransforms + index2) Transform(localToBodyTransform1); new (mLocalToBodyTransforms + index2) Transform(localToBodyTransform1);
mCollisionShapes[index2] = collisionShape1; mCollisionShapes[index2] = collisionShape1;
new (mMasses + index2) decimal(mass1); new (mMasses + index2) decimal(mass1);
@ -209,7 +202,6 @@ void ProxyShapeComponents::destroyComponent(uint32 index) {
mProxyShapesEntities[index].~Entity(); mProxyShapesEntities[index].~Entity();
mBodiesEntities[index].~Entity(); mBodiesEntities[index].~Entity();
mProxyShapes[index] = nullptr; mProxyShapes[index] = nullptr;
mLocalBounds[index].~AABB();
mLocalToBodyTransforms[index].~Transform(); mLocalToBodyTransforms[index].~Transform();
mCollisionShapes[index] = nullptr; mCollisionShapes[index] = nullptr;
} }

View File

@ -68,9 +68,6 @@ class ProxyShapeComponents : public Components {
// TODO : Try to change type to uint32 // TODO : Try to change type to uint32
int* mBroadPhaseIds; int* mBroadPhaseIds;
/// Local-space bounds of a proxy-shape
AABB* mLocalBounds;
/// Transform from local-space of the proxy-shape to the body-space of its body /// Transform from local-space of the proxy-shape to the body-space of its body
Transform* mLocalToBodyTransforms; Transform* mLocalToBodyTransforms;

View File

@ -174,9 +174,8 @@ void BroadPhaseSystem::updateProxyShapesComponents(uint32 startIndex, uint32 end
const Entity& bodyEntity = mProxyShapesComponents.mBodiesEntities[i]; const Entity& bodyEntity = mProxyShapesComponents.mBodiesEntities[i];
const Transform& transform = mTransformsComponents.getTransform(bodyEntity); const Transform& transform = mTransformsComponents.getTransform(bodyEntity);
Vector3 displacement(0, 0, 0);
// If there is a dynamics component for the current entity // If there is a dynamics component for the current entity
Vector3 displacement(0, 0, 0);
if (mDynamicsComponents.hasComponent(bodyEntity)) { if (mDynamicsComponents.hasComponent(bodyEntity)) {
// Get the linear velocity from the dynamics component // Get the linear velocity from the dynamics component