summaryrefslogtreecommitdiffstats
path: root/src/entities/Physical.h
diff options
context:
space:
mode:
authoraap <aap@papnet.eu>2019-05-19 21:28:10 +0200
committeraap <aap@papnet.eu>2019-05-19 21:28:10 +0200
commitc4f9b9573f1535d3297946fbb5c73393594ffa24 (patch)
tree47acb1934d86d3ab220035258a2345f526c9b922 /src/entities/Physical.h
parentmore work on CPhysical (diff)
downloadre3-c4f9b9573f1535d3297946fbb5c73393594ffa24.tar
re3-c4f9b9573f1535d3297946fbb5c73393594ffa24.tar.gz
re3-c4f9b9573f1535d3297946fbb5c73393594ffa24.tar.bz2
re3-c4f9b9573f1535d3297946fbb5c73393594ffa24.tar.lz
re3-c4f9b9573f1535d3297946fbb5c73393594ffa24.tar.xz
re3-c4f9b9573f1535d3297946fbb5c73393594ffa24.tar.zst
re3-c4f9b9573f1535d3297946fbb5c73393594ffa24.zip
Diffstat (limited to 'src/entities/Physical.h')
-rw-r--r--src/entities/Physical.h19
1 files changed, 14 insertions, 5 deletions
diff --git a/src/entities/Physical.h b/src/entities/Physical.h
index 574238ab..06ae3166 100644
--- a/src/entities/Physical.h
+++ b/src/entities/Physical.h
@@ -1,6 +1,7 @@
#pragma once
#include "Lists.h"
+#include "Timer.h"
#include "Entity.h"
#include "Treadable.h"
@@ -37,16 +38,16 @@ public:
char field_EC;
uint8 m_nStaticFrames;
uint8 m_nCollisionRecords;
- char field_EF;
+ bool field_EF;
CEntity *m_aCollisionRecords[PHYSICAL_MAX_COLLISIONRECORDS];
float m_fDistanceTravelled;
// damaged piece
- float m_fCollisionImpulse;
- CEntity *m_pCollidingEntity;
- CVector m_vecCollisionDirection;
- int16 m_nCollisionPieceType;
+ float m_fDamageImpulse;
+ CEntity *m_pDamageEntity;
+ CVector m_vecDamageNormal;
+ int16 m_nDamagePieceType;
uint8 m_phy_flagA1 : 1;
uint8 bAffectedByGravity : 1;
@@ -88,6 +89,7 @@ public:
bool GetHasCollidedWith(CEntity *ent);
void RemoveRefsToEntity(CEntity *ent);
+ float GetDistanceSq(void) { return m_vecMoveSpeed.MagnitudeSqr() * sq(CTimer::GetTimeStep()); }
// get speed of point p relative to entity center
CVector GetSpeed(const CVector &r);
CVector GetSpeed(void) { return GetSpeed(CVector(0.0f, 0.0f, 0.0f)); }
@@ -133,12 +135,19 @@ public:
bool ProcessShiftSectorList(CPtrList *ptrlists);
bool ProcessCollisionSectorList_SimpleCar(CPtrList *lists);
+ bool ProcessCollisionSectorList(CPtrList *lists);
+ bool CheckCollision(void);
+ bool CheckCollision_SimpleCar(void);
+ void ProcessShift(void);
+ void ProcessCollision(void);
// to make patching virtual functions possible
void Add_(void) { CPhysical::Add(); }
void Remove_(void) { CPhysical::Remove(); }
CRect GetBoundRect_(void) { return CPhysical::GetBoundRect(); }
void ProcessControl_(void) { CPhysical::ProcessControl(); }
+ void ProcessShift_(void) { CPhysical::ProcessShift(); }
+ void ProcessCollision_(void) { CPhysical::ProcessCollision(); }
int32 ProcessEntityCollision_(CEntity *ent, CColPoint *point) { return CPhysical::ProcessEntityCollision(ent, point); }
};
static_assert(sizeof(CPhysical) == 0x128, "CPhysical: error");