summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNikolay Korolev <nickvnuk@gmail.com>2019-06-23 09:43:16 +0200
committerNikolay Korolev <nickvnuk@gmail.com>2019-06-23 09:43:16 +0200
commit3dd57c445e11b6d9facaadfe4d662c2a65d58a19 (patch)
tree5b7fa945667812babef209e1f0bd9e262ed674eb
parentStorePedUpdate (diff)
parentfixed key binding, head shots, freezes (diff)
downloadre3-3dd57c445e11b6d9facaadfe4d662c2a65d58a19.tar
re3-3dd57c445e11b6d9facaadfe4d662c2a65d58a19.tar.gz
re3-3dd57c445e11b6d9facaadfe4d662c2a65d58a19.tar.bz2
re3-3dd57c445e11b6d9facaadfe4d662c2a65d58a19.tar.lz
re3-3dd57c445e11b6d9facaadfe4d662c2a65d58a19.tar.xz
re3-3dd57c445e11b6d9facaadfe4d662c2a65d58a19.tar.zst
re3-3dd57c445e11b6d9facaadfe4d662c2a65d58a19.zip
-rw-r--r--src/Pad.cpp1
-rw-r--r--src/Pad.h2
-rw-r--r--src/World.cpp2
-rw-r--r--src/entities/Ped.cpp34
-rw-r--r--src/entities/Physical.cpp2
-rw-r--r--src/modelinfo/PedModelInfo.h1
6 files changed, 20 insertions, 22 deletions
diff --git a/src/Pad.cpp b/src/Pad.cpp
index 5c151bf4..61b7ed06 100644
--- a/src/Pad.cpp
+++ b/src/Pad.cpp
@@ -2055,6 +2055,7 @@ STARTPATCHES
InjectHook(0x494450, CPad::ResetCheats, PATCH_JUMP);
InjectHook(0x4944B0, CPad::EditString, PATCH_JUMP);
InjectHook(0x494690, CPad::EditCodesForControls, PATCH_JUMP);
+
//InjectHook(0x494E50, `global constructor keyed to'Pad.cpp, PATCH_JUMP);
//InjectHook(0x494EB0, sub_494EB0, PATCH_JUMP);
//InjectHook(0x494ED0, &CPad::~CPad, PATCH_JUMP);
diff --git a/src/Pad.h b/src/Pad.h
index 9180be26..e06aa9a6 100644
--- a/src/Pad.h
+++ b/src/Pad.h
@@ -292,7 +292,7 @@ public:
// keyboard
- inline bool GetCharJustDown(char c) { return !!(NewKeyState.VK_KEYS[c] && !OldKeyState.VK_KEYS[c]); }
+ inline bool GetCharJustDown(int32 c) { return !!(NewKeyState.VK_KEYS[c] && !OldKeyState.VK_KEYS[c]); }
inline bool GetFJustDown(int32 n) { return !!(NewKeyState.F[n] && !OldKeyState.F[n]); }
inline bool GetEscapeJustDown() { return !!(NewKeyState.ESC && !OldKeyState.ESC); }
inline bool GetInsertJustDown() { return !!(NewKeyState.INS && !OldKeyState.INS); }
diff --git a/src/World.cpp b/src/World.cpp
index 1a715e0c..bc29a527 100644
--- a/src/World.cpp
+++ b/src/World.cpp
@@ -236,7 +236,7 @@ CWorld::ProcessLineOfSightSectorList(CPtrList &list, const CColLine &line, CColP
if(((CPed*)e)->UseGroundColModel())
colmodel = &CTempColModels::ms_colModelPedGroundHit;
else
- colmodel = CModelInfo::GetModelInfo(e->GetModelIndex())->GetColModel();
+ colmodel = ((CPedModelInfo*)CModelInfo::GetModelInfo(e->GetModelIndex()))->GetHitColModel();
}else
colmodel = nil;
}else if(e->bUsesCollision)
diff --git a/src/entities/Ped.cpp b/src/entities/Ped.cpp
index 35e8e957..f3e212d4 100644
--- a/src/entities/Ped.cpp
+++ b/src/entities/Ped.cpp
@@ -388,8 +388,7 @@ void
CPed::RemoveBodyPart(PedNode nodeId, int8 unk)
{
RwFrame *frame;
- RwFrame *fp;
- RwV3d zero;
+ RwV3d pos;
frame = GetNodeFrame(nodeId);
if (frame) {
@@ -398,20 +397,20 @@ CPed::RemoveBodyPart(PedNode nodeId, int8 unk)
CPed::SpawnFlyingComponent(nodeId, unk);
RecurseFrameChildrenVisibilityCB(frame, 0);
- zero.x = 0.0f;
- zero.z = 0.0f;
- zero.y = 0.0f;
- for (fp = RwFrameGetParent(frame); fp; fp = RwFrameGetParent(frame))
- RwV3dTransformPoints(&zero, &zero, 1, &fp->modelling);
+ pos.x = 0.0f;
+ pos.z = 0.0f;
+ pos.y = 0.0f;
+ for (frame = RwFrameGetParent(frame); frame; frame = RwFrameGetParent(frame))
+ RwV3dTransformPoints(&pos, &pos, 1, RwFrameGetMatrix(frame));
if (CEntity::GetIsOnScreen()) {
- CParticle::AddParticle(PARTICLE_TEST, zero,
+ CParticle::AddParticle(PARTICLE_TEST, pos,
CVector(0.0f, 0.0f, 0.0f),
nil, 0.2f, 0, 0, 0, 0);
for (int i = 0; i < 16; i++) {
CParticle::AddParticle(PARTICLE_BLOOD_SMALL,
- zero,
+ pos,
CVector(0.0f, 0.0f, 0.03f),
nil, 0.0f, 0, 0, 0, 0);
}
@@ -642,10 +641,9 @@ CPed::Attack(void)
CAnimBlendAssociation *weaponAnimAssoc;
int32 weaponAnim;
float animStart;
- RwFrame *f;
+ RwFrame *frame;
eWeaponType ourWeaponType;
float weaponAnimTime;
- RwFrame *i;
eWeaponFire ourWeaponFire;
float animEnd;
CWeaponInfo *ourWeapon;
@@ -718,14 +716,12 @@ CPed::Attack(void)
firePos = GetMatrix() * firePos;
} else if (ourWeaponType != WEAPONTYPE_UNARMED) {
if (weaponAnimAssoc->animId == ANIM_KICK_FLOOR)
- f = GetNodeFrame(PED_FOOTR);
+ frame = GetNodeFrame(PED_FOOTR);
else
- f = GetNodeFrame(PED_HANDR);
+ frame = GetNodeFrame(PED_HANDR);
- while (f) {
- RwV3dTransformPoints((RwV3d*)firePos, (RwV3d*)firePos, 1, &f->modelling);
- f = RwFrameGetParent(f);
- }
+ for (; frame; frame = RwFrameGetParent(frame))
+ RwV3dTransformPoints((RwV3d*)firePos, (RwV3d*)firePos, 1, RwFrameGetMatrix(frame));
} else {
firePos = GetMatrix() * firePos;
}
@@ -773,8 +769,8 @@ CPed::Attack(void)
firePos = ourWeapon->m_vecFireOffset;
if (weaponAnimTime > 1.0f && weaponAnimTime - weaponAnimAssoc->timeStep <= 1.0f && weaponAnimAssoc->IsRunning()) {
- for (i = GetNodeFrame(PED_HANDR); i; i = RwFrameGetParent(i))
- RwV3dTransformPoints((RwV3d*)firePos, (RwV3d*)firePos, 1, &i->modelling);
+ for (frame = GetNodeFrame(PED_HANDR); frame; frame = RwFrameGetParent(frame))
+ RwV3dTransformPoints((RwV3d*)firePos, (RwV3d*)firePos, 1, RwFrameGetMatrix(frame));
CVector gunshellPos(
firePos.x - 0.6f * GetForward().x,
diff --git a/src/entities/Physical.cpp b/src/entities/Physical.cpp
index f2693a68..adc53525 100644
--- a/src/entities/Physical.cpp
+++ b/src/entities/Physical.cpp
@@ -1790,7 +1790,7 @@ CPhysical::ProcessCollision(void)
if(IsPed() && (distSq >= sq(0.2f) || ped->IsPlayer())){
if(ped->IsPlayer())
- n = min(NUMSTEPS(0.2f), 2.0);
+ n = max(NUMSTEPS(0.2f), 2.0);
else
n = NUMSTEPS(0.3f);
step = savedTimeStep / n;
diff --git a/src/modelinfo/PedModelInfo.h b/src/modelinfo/PedModelInfo.h
index d0b93323..04d1ba02 100644
--- a/src/modelinfo/PedModelInfo.h
+++ b/src/modelinfo/PedModelInfo.h
@@ -38,6 +38,7 @@ public:
void SetLowDetailClump(RpClump*);
void CreateHitColModel(void);
+ CColModel *GetHitColModel(void) { return m_hitColModel; }
void DeleteRwObject_(void) { this->CPedModelInfo::DeleteRwObject(); }