From d2e090317ff303ba0b7f662c7d7837a9402ad48c Mon Sep 17 00:00:00 2001 From: Fire-Head Date: Sat, 8 Aug 2020 15:06:45 +0300 Subject: static shadows fix, cutscene shadows switches --- src/peds/Ped.cpp | 8 ++++---- src/peds/Ped.h | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) (limited to 'src/peds') diff --git a/src/peds/Ped.cpp b/src/peds/Ped.cpp index 4e1c3c6d..f1a2742b 100644 --- a/src/peds/Ped.cpp +++ b/src/peds/Ped.cpp @@ -147,7 +147,7 @@ void CPed::operator delete(void *p, int handle) { CPools::GetPedPool()->Delete(( // --MIAMI: Done CPed::~CPed(void) { -#if 1 +#ifdef USE_CUTSCENE_SHADOW_FOR_PED if ( m_pRTShadow ) delete m_pRTShadow; #endif CWorld::Remove(this); @@ -207,8 +207,8 @@ CPed::FlagToDestroyWhenNextProcessed(void) CPed::CPed(uint32 pedType) : m_pedIK(this) { -#if 1 - m_pRTShadow = NULL; +#ifdef USE_CUTSCENE_SHADOW_FOR_PED + m_pRTShadow = nil; #endif m_type = ENTITY_TYPE_PED; bPedPhysics = true; @@ -2795,7 +2795,7 @@ CPed::SetModelIndex(uint32 mi) if (IsClumpSkinned(GetClump())) // condition isn't there in VC UpdateRpHAnim(); #endif -#if 1 +#ifdef USE_CUTSCENE_SHADOW_FOR_PED if (!m_pRTShadow) { m_pRTShadow = new CCutsceneShadow; diff --git a/src/peds/Ped.h b/src/peds/Ped.h index 979eb29c..6b0cc5fb 100644 --- a/src/peds/Ped.h +++ b/src/peds/Ped.h @@ -363,7 +363,7 @@ class CVehicle; class CPed : public CPhysical { public: -#if 1 +#ifdef USE_CUTSCENE_SHADOW_FOR_PED class CCutsceneShadow *m_pRTShadow; #endif // 0x128 -- cgit v1.2.3 From 265b07a8d95d451647485741970f04237bbcff4c Mon Sep 17 00:00:00 2001 From: Fire-Head Date: Sat, 8 Aug 2020 18:04:46 +0300 Subject: Update Ped.cpp --- src/peds/Ped.cpp | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) (limited to 'src/peds') diff --git a/src/peds/Ped.cpp b/src/peds/Ped.cpp index f1a2742b..4c8a29cc 100644 --- a/src/peds/Ped.cpp +++ b/src/peds/Ped.cpp @@ -2788,13 +2788,10 @@ CPed::SetModelIndex(uint32 mi) // This is a mistake by R*, velocity is CVector, whereas m_vecAnimMoveDelta is CVector2D. (*RPANIMBLENDCLUMPDATA(m_rwObject))->velocity = (CVector*) &m_vecAnimMoveDelta; -#ifdef PED_SKIN if(modelInfo->GetHitColModel() == nil) modelInfo->CreateHitColModelSkinned(GetClump()); - if (IsClumpSkinned(GetClump())) // condition isn't there in VC - UpdateRpHAnim(); -#endif + UpdateRpHAnim(); #ifdef USE_CUTSCENE_SHADOW_FOR_PED if (!m_pRTShadow) { -- cgit v1.2.3 From b73b6b8e130a545687aad4024465fc977e3f01ee Mon Sep 17 00:00:00 2001 From: majestic Date: Tue, 4 Aug 2020 19:11:42 -0700 Subject: CWindModifiers --- src/peds/Ped.cpp | 72 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 72 insertions(+) (limited to 'src/peds') diff --git a/src/peds/Ped.cpp b/src/peds/Ped.cpp index 53c2b2c2..f6624c1f 100644 --- a/src/peds/Ped.cpp +++ b/src/peds/Ped.cpp @@ -63,6 +63,7 @@ #include "Debug.h" #include "GameLogic.h" #include "Bike.h" +#include "WindModifiers.h" #define CAN_SEE_ENTITY_ANGLE_THRESHOLD DEGTORAD(60.0f) @@ -16414,6 +16415,77 @@ CPed::PreRender(void) } #endif + bool bIsWindModifierTurnedOn = false; + float fAnyDirectionShift = 1.0f; + if (IsPlayer() && CWindModifiers::FindWindModifier(GetPosition(), &fAnyDirectionShift, &fAnyDirectionShift) + && !CCullZones::PlayerNoRain() && GetPedState() != PED_DRIVING) + bIsWindModifierTurnedOn = true; + + bool bIsPlayerDrivingBikeOrOpenTopCar = false; + if (GetPedState() == PED_DRIVING && m_pMyVehicle) { + if (m_pMyVehicle->m_vehType == VEHICLE_TYPE_BIKE + || (m_pMyVehicle->m_vehType == VEHICLE_TYPE_CAR && m_pMyVehicle->IsOpenTopCar())) + bIsPlayerDrivingBikeOrOpenTopCar = true; + } + + if (bIsWindModifierTurnedOn || bIsPlayerDrivingBikeOrOpenTopCar) { + float fWindMult = 0.0f; + if (bIsPlayerDrivingBikeOrOpenTopCar) { + fWindMult = DotProduct(m_pMyVehicle->m_vecMoveSpeed, GetForward()); + if (fWindMult > 0.4f) { + float volume = (fWindMult - 0.4f) / 0.6f; + DMAudio.PlayOneShot(m_audioEntityId, SOUND_SET_202, volume); //TODO(MIAMI): revise when audio is done + } + } + + if (bIsWindModifierTurnedOn) + fWindMult = Min(fWindMult, Abs(fAnyDirectionShift - 1.0f)); + + RpHAnimHierarchy* hier = GetAnimHierarchyFromSkinClump(GetClump()); + int32 idx; + RwV3d scale; + float fScaleOffset; + + fScaleOffset = fWindMult * 0.2f; + scale.x = CGeneral::GetRandomNumberInRange(1.0f - fScaleOffset, 1.0f + fScaleOffset); + scale.y = CGeneral::GetRandomNumberInRange(1.0f - fScaleOffset, 1.0f + fScaleOffset); + scale.z = CGeneral::GetRandomNumberInRange(1.0f - fScaleOffset, 1.0f + fScaleOffset); + + idx = RpHAnimIDGetIndex(hier, ConvertPedNode2BoneTag(PED_NECK)); + RwMatrix* neck = &RpHAnimHierarchyGetMatrixArray(hier)[idx]; + RwMatrixScale(neck, &scale, rwCOMBINEPRECONCAT); + + fScaleOffset = fWindMult * 0.1f; + scale.x = CGeneral::GetRandomNumberInRange(1.0f - fScaleOffset, 1.0f + fScaleOffset); + scale.y = CGeneral::GetRandomNumberInRange(1.0f - fScaleOffset, 1.0f + fScaleOffset); + scale.z = CGeneral::GetRandomNumberInRange(1.0f - fScaleOffset, 1.0f + fScaleOffset); + + idx = RpHAnimIDGetIndex(hier, ConvertPedNode2BoneTag(PED_CLAVICLEL)); + RwMatrix* clavicleL = &RpHAnimHierarchyGetMatrixArray(hier)[idx]; + RwMatrixScale(clavicleL, &scale, rwCOMBINEPRECONCAT); + + idx = RpHAnimIDGetIndex(hier, ConvertPedNode2BoneTag(PED_CLAVICLER)); + RwMatrix* clavicleR = &RpHAnimHierarchyGetMatrixArray(hier)[idx]; + RwMatrixScale(clavicleR, &scale, rwCOMBINEPRECONCAT); + + idx = RpHAnimIDGetIndex(hier, ConvertPedNode2BoneTag(PED_MID)); + RwMatrix* mid = &RpHAnimHierarchyGetMatrixArray(hier)[idx]; + RwMatrixScale(mid, &scale, rwCOMBINEPRECONCAT); + + fScaleOffset = fWindMult * 0.2f; + scale.x = CGeneral::GetRandomNumberInRange(1.0f - fScaleOffset, 1.0f + fScaleOffset); + scale.y = CGeneral::GetRandomNumberInRange(1.0f - fScaleOffset, 1.0f + fScaleOffset); + scale.z = CGeneral::GetRandomNumberInRange(1.0f - fScaleOffset, 1.0f + fScaleOffset); + + idx = RpHAnimIDGetIndex(hier, ConvertPedNode2BoneTag(PED_UPPERARML)); + RwMatrix* upperArmL = &RpHAnimHierarchyGetMatrixArray(hier)[idx]; + RwMatrixScale(upperArmL, &scale, rwCOMBINEPRECONCAT); + + idx = RpHAnimIDGetIndex(hier, ConvertPedNode2BoneTag(PED_UPPERARMR)); + RwMatrix* upperArmR = &RpHAnimHierarchyGetMatrixArray(hier)[idx]; + RwMatrixScale(upperArmR, &scale, rwCOMBINEPRECONCAT); + } + if (bBodyPartJustCameOff && bIsPedDieAnimPlaying && m_bodyPartBleeding != -1 && (CTimer::GetFrameCounter() & 7) > 3) { CVector bloodDir(0.0f, 0.0f, 0.0f); CVector bloodPos(0.0f, 0.0f, 0.0f); -- cgit v1.2.3 From b468d010a8a185bd04cdb1fb41810a189971e583 Mon Sep 17 00:00:00 2001 From: aap Date: Tue, 11 Aug 2020 18:39:53 +0200 Subject: implemented extended postfx --- src/peds/Ped.cpp | 1 + 1 file changed, 1 insertion(+) (limited to 'src/peds') diff --git a/src/peds/Ped.cpp b/src/peds/Ped.cpp index a1c03024..26c91abb 100644 --- a/src/peds/Ped.cpp +++ b/src/peds/Ped.cpp @@ -2798,6 +2798,7 @@ CPed::SetModelIndex(uint32 mi) { m_pRTShadow = new CCutsceneShadow; m_pRTShadow->Create(m_rwObject, 10, 1, 1, 1); + //m_pRTShadow->Create(m_rwObject, 8, 0, 0, 0); } #endif } -- cgit v1.2.3 From b54bb62c944f8f3e8d85501fbb762915fdc6569b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?eray=20or=C3=A7unus?= Date: Thu, 13 Aug 2020 23:39:55 +0300 Subject: Stats(except displaying), PlayerInfo, marker fix --- src/peds/Ped.cpp | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) (limited to 'src/peds') diff --git a/src/peds/Ped.cpp b/src/peds/Ped.cpp index 26c91abb..be8b28e3 100644 --- a/src/peds/Ped.cpp +++ b/src/peds/Ped.cpp @@ -4730,9 +4730,11 @@ CPed::InflictDamage(CEntity *damagedBy, eWeaponType method, float damage, ePedPi } else { CDarkel::RegisterKillNotByPlayer(this, method); } - if (method == WEAPONTYPE_DROWNING) + if (method == WEAPONTYPE_DROWNING) { bIsInTheAir = false; - // TODO(Miami): timesDrowned + if (FindPlayerPed() == this) + CStats::TimesDrowned++; + } return true; } -- cgit v1.2.3 From 80a83d48f3177c401c2a173f4aacb55794ac2fb7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?eray=20or=C3=A7unus?= Date: Fri, 14 Aug 2020 02:41:18 +0300 Subject: Guardian Angels fix --- src/peds/Ped.cpp | 2 ++ 1 file changed, 2 insertions(+) (limited to 'src/peds') diff --git a/src/peds/Ped.cpp b/src/peds/Ped.cpp index be8b28e3..d009579c 100644 --- a/src/peds/Ped.cpp +++ b/src/peds/Ped.cpp @@ -3160,6 +3160,8 @@ CPed::SetStoredObjective(void) case OBJECTIVE_GOTO_CHAR_ON_FOOT: case OBJECTIVE_GOTO_CHAR_ON_FOOT_WALKING: case OBJECTIVE_HASSLE_CHAR: + case OBJECTIVE_FOLLOW_CHAR_IN_FORMATION: + case OBJECTIVE_LEAVE_CAR: case OBJECTIVE_ENTER_CAR_AS_PASSENGER: case OBJECTIVE_ENTER_CAR_AS_DRIVER: case OBJECTIVE_GOTO_AREA_ON_FOOT: -- cgit v1.2.3 From 72088a000b6fc0d641f5b94f6aa6586e9e2d9e8b Mon Sep 17 00:00:00 2001 From: Sergeanur Date: Fri, 14 Aug 2020 19:42:15 +0300 Subject: Don't react if player's targeting with melee --- src/peds/Ped.cpp | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) (limited to 'src/peds') diff --git a/src/peds/Ped.cpp b/src/peds/Ped.cpp index f52b373e..a15927ff 100644 --- a/src/peds/Ped.cpp +++ b/src/peds/Ped.cpp @@ -10232,7 +10232,11 @@ CPed::ProcessControl(void) CPed::Chat(); break; case PED_AIM_GUN: - if (m_pPointGunAt && m_pPointGunAt->IsPed() && ((CPed*)m_pPointGunAt)->CanSeeEntity(this, CAN_SEE_ENTITY_ANGLE_THRESHOLD * 2)) { + if (m_pPointGunAt && m_pPointGunAt->IsPed() +#ifdef FIX_BUGS + && !GetWeapon()->IsTypeMelee() +#endif + && ((CPed*)m_pPointGunAt)->CanSeeEntity(this, CAN_SEE_ENTITY_ANGLE_THRESHOLD * 2)) { ((CPed*)m_pPointGunAt)->ReactToPointGun(this); } PointGunAt(); -- cgit v1.2.3