mirror of
https://github.com/halpz/re3.git
synced 2025-07-04 02:10:45 +00:00
CWindModifiers
This commit is contained in:
@ -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);
|
||||
|
Reference in New Issue
Block a user