Skip to content

Commit d60c36b

Browse files
authored
Merge branch 'master' into setVehicleNitroActivated
2 parents ec6a4ad + 04ca3dd commit d60c36b

File tree

18 files changed

+427
-136
lines changed

18 files changed

+427
-136
lines changed

Client/game_sa/CEntitySA.cpp

Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -603,6 +603,28 @@ bool CEntitySA::GetBoneRotation(eBone boneId, float& yaw, float& pitch, float& r
603603
return false;
604604
}
605605

606+
bool CEntitySA::GetBoneRotationQuat(eBone boneId, float& x, float& y, float& z, float& w)
607+
{
608+
RpClump* clump = GetRpClump();
609+
if (clump)
610+
{
611+
// updating the bone frame orientation will also update its children
612+
// This rotation is only applied when UpdateElementRpHAnim is called
613+
CAnimBlendClumpDataSAInterface* clumpDataInterface = *pGame->GetClumpData(clump);
614+
AnimBlendFrameData* frameData = clumpDataInterface->GetFrameDataByNodeId(boneId);
615+
if (frameData)
616+
{
617+
RtQuat* boneOrientation = &frameData->m_pIFrame->orientation;
618+
x = boneOrientation->imag.x;
619+
y = boneOrientation->imag.y;
620+
z = boneOrientation->imag.z;
621+
w = boneOrientation->real;
622+
return true;
623+
}
624+
}
625+
return false;
626+
}
627+
606628
bool CEntitySA::SetBoneRotation(eBone boneId, float yaw, float pitch, float roll)
607629
{
608630
RpClump* clump = GetRpClump();
@@ -628,6 +650,33 @@ bool CEntitySA::SetBoneRotation(eBone boneId, float yaw, float pitch, float roll
628650
return false;
629651
}
630652

653+
bool CEntitySA::SetBoneRotationQuat(eBone boneId, float x, float y, float z, float w)
654+
{
655+
RpClump* clump = GetRpClump();
656+
if (clump)
657+
{
658+
// updating the bone frame orientation will also update its children
659+
// This rotation is only applied when UpdateElementRpHAnim is called
660+
CAnimBlendClumpDataSAInterface* clumpDataInterface = *pGame->GetClumpData(clump);
661+
AnimBlendFrameData* frameData = clumpDataInterface->GetFrameDataByNodeId(boneId);
662+
if (frameData)
663+
{
664+
RtQuat* boneOrientation = &frameData->m_pIFrame->orientation;
665+
boneOrientation->imag.x = x;
666+
boneOrientation->imag.y = y;
667+
boneOrientation->imag.z = z;
668+
boneOrientation->real = w;
669+
CEntitySAInterface* theInterface = GetInterface();
670+
if (theInterface)
671+
{
672+
theInterface->bDontUpdateHierarchy = false;
673+
}
674+
return true;
675+
}
676+
}
677+
return false;
678+
}
679+
631680
bool CEntitySA::GetBonePosition(eBone boneId, CVector& position)
632681
{
633682
RwMatrix* rwBoneMatrix = GetBoneRwMatrix(boneId);

Client/game_sa/CEntitySA.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -324,7 +324,9 @@ class CEntitySA : public virtual CEntity
324324
bool SetBoneMatrix(eBone boneId, const CMatrix& matrix);
325325

326326
bool GetBoneRotation(eBone boneId, float& yaw, float& pitch, float& roll);
327+
bool GetBoneRotationQuat(eBone boneId, float& x, float& y, float& z, float& w);
327328
bool SetBoneRotation(eBone boneId, float yaw, float pitch, float roll);
329+
bool SetBoneRotationQuat(eBone boneId, float x, float y, float z, float w);
328330
bool GetBonePosition(eBone boneId, CVector& position);
329331
bool SetBonePosition(eBone boneId, const CVector& position);
330332

Client/mods/deathmatch/logic/CClientGame.cpp

Lines changed: 149 additions & 113 deletions
Original file line numberDiff line numberDiff line change
@@ -5428,16 +5428,14 @@ void CClientGame::ResetMapInfo()
54285428

54295429
m_bHudAreaNameDisabled = false;
54305430

5431-
// Gravity
5432-
g_pMultiplayer->SetLocalPlayerGravity(DEFAULT_GRAVITY);
5433-
g_pMultiplayer->SetGlobalGravity(DEFAULT_GRAVITY);
5434-
g_pGame->SetGravity(DEFAULT_GRAVITY);
5435-
5436-
// Gamespeed
5437-
SetGameSpeed(DEFAULT_GAME_SPEED);
5438-
5439-
// Game minute duration
5440-
SetMinuteDuration(DEFAULT_MINUTE_DURATION);
5431+
// Reset world special properties, world properties, weather properties etc
5432+
ResetWorldPropsInfo desc;
5433+
desc.resetSpecialProperties = true;
5434+
desc.resetWorldProperties = true;
5435+
desc.resetWeatherProperties = true;
5436+
desc.resetLODs = true;
5437+
desc.resetSounds = true;
5438+
ResetWorldProperties(desc);
54415439

54425440
// Wanted-level
54435441
SetWanted(0);
@@ -5448,124 +5446,23 @@ void CClientGame::ResetMapInfo()
54485446
// Weather
54495447
m_pBlendedWeather->SetWeather(0);
54505448

5451-
// Rain
5452-
g_pGame->GetWeather()->ResetAmountOfRain();
5453-
5454-
// Wind
5455-
g_pMultiplayer->RestoreWindVelocity();
5456-
5457-
// Far clip distance
5458-
g_pMultiplayer->RestoreFarClipDistance();
5459-
5460-
// Near clip distance
5461-
g_pMultiplayer->RestoreNearClipDistance();
5462-
5463-
// Fog distance
5464-
g_pMultiplayer->RestoreFogDistance();
5465-
5466-
// Vehicles LOD distance
5467-
g_pGame->GetSettings()->ResetVehiclesLODDistance(true);
5468-
5469-
// Peds LOD distance
5470-
g_pGame->GetSettings()->ResetPedsLODDistance(true);
5471-
5472-
// Blur
5473-
g_pGame->GetSettings()->SetBlurControlledByScript(false);
5474-
g_pGame->GetSettings()->ResetBlurEnabled();
5475-
5476-
// Corona rain reflections
5477-
g_pGame->GetSettings()->SetCoronaReflectionsControlledByScript(false);
5478-
g_pGame->GetSettings()->ResetCoronaReflectionsEnabled();
5479-
5480-
// Sun color
5481-
g_pMultiplayer->ResetSunColor();
5482-
5483-
// Sun size
5484-
g_pMultiplayer->ResetSunSize();
5485-
5486-
// Sky-gradient
5487-
g_pMultiplayer->ResetSky();
5488-
5489-
// Heat haze
5490-
g_pMultiplayer->ResetHeatHaze();
5491-
5492-
// Water-colour
5493-
g_pMultiplayer->ResetWater();
5494-
g_pMultiplayer->ResetColorFilter();
5495-
54965449
// Grain effect
54975450
g_pMultiplayer->SetGrainMultiplier(eGrainMultiplierType::ALL, 1.0f);
54985451
g_pMultiplayer->SetGrainLevel(0);
54995452

5500-
// Water
5501-
GetManager()->GetWaterManager()->ResetWorldWaterLevel();
5502-
5503-
// Re-enable interior sounds and furniture
5504-
g_pMultiplayer->SetInteriorSoundsEnabled(true);
5505-
for (int i = 0; i <= 4; ++i)
5506-
g_pMultiplayer->SetInteriorFurnitureEnabled(i, true);
5507-
5508-
// Clouds
5509-
g_pMultiplayer->SetCloudsEnabled(true);
5510-
g_pClientGame->SetCloudsEnabled(true);
5511-
5512-
// Birds
5513-
g_pMultiplayer->DisableBirds(false);
5514-
g_pClientGame->SetBirdsEnabled(true);
5515-
5516-
// Ambient sounds
5517-
g_pGame->GetAudioEngine()->ResetAmbientSounds();
5518-
5519-
// World sounds
5520-
g_pGame->GetAudioEngine()->ResetWorldSounds();
5521-
55225453
// Cheats
55235454
g_pGame->ResetCheats();
55245455

55255456
// Players
55265457
m_pPlayerManager->ResetAll();
55275458

5528-
// Jetpack max height
5529-
g_pGame->GetWorld()->SetJetpackMaxHeight(DEFAULT_JETPACK_MAXHEIGHT);
5530-
5531-
// Aircraft max height
5532-
g_pGame->GetWorld()->SetAircraftMaxHeight(DEFAULT_AIRCRAFT_MAXHEIGHT);
5533-
5534-
// Aircraft max velocity
5535-
g_pGame->GetWorld()->SetAircraftMaxVelocity(DEFAULT_AIRCRAFT_MAXVELOCITY);
5536-
5537-
// Moon size
5538-
g_pMultiplayer->ResetMoonSize();
5539-
5540-
// World properties
5541-
g_pMultiplayer->ResetAmbientColor();
5542-
g_pMultiplayer->ResetAmbientObjectColor();
5543-
g_pMultiplayer->ResetDirectionalColor();
5544-
g_pMultiplayer->ResetSpriteSize();
5545-
g_pMultiplayer->ResetSpriteBrightness();
5546-
g_pMultiplayer->ResetPoleShadowStrength();
5547-
g_pMultiplayer->ResetShadowStrength();
5548-
g_pMultiplayer->ResetShadowsOffset();
5549-
g_pMultiplayer->ResetLightsOnGroundBrightness();
5550-
g_pMultiplayer->ResetLowCloudsColor();
5551-
g_pMultiplayer->ResetBottomCloudsColor();
5552-
g_pMultiplayer->ResetCloudsAlpha1();
5553-
g_pMultiplayer->ResetIllumination();
5554-
g_pGame->GetWeather()->ResetWetRoads();
5555-
g_pGame->GetWeather()->ResetFoggyness();
5556-
g_pGame->GetWeather()->ResetFog();
5557-
g_pGame->GetWeather()->ResetRainFog();
5558-
g_pGame->GetWeather()->ResetWaterFog();
5559-
g_pGame->GetWeather()->ResetSandstorm();
5560-
g_pGame->GetWeather()->ResetRainbow();
5459+
// Reset Frozen Time
5460+
g_pGame->GetClock()->ResetTimeFrozen();
55615461
g_pGame->GetSettings()->ResetVolumetricShadows();
55625462

55635463
// Disable the change of any player stats
55645464
g_pMultiplayer->SetLocalStatsStatic(true);
55655465

5566-
// Reset Frozen Time
5567-
g_pGame->GetClock()->ResetTimeFrozen();
5568-
55695466
// Close all garages
55705467
CGarage* pGarage = NULL;
55715468
CGarages* pGarages = g_pCore->GetGame()->GetGarages();
@@ -6853,6 +6750,145 @@ void CClientGame::ReinitMarkers()
68536750
g_pGame->Get3DMarkers()->ReinitMarkers();
68546751
}
68556752

6753+
void CClientGame::ResetWorldProperties(const ResetWorldPropsInfo& resetPropsInfo)
6754+
{
6755+
// Reset all setWorldSpecialPropertyEnabled to default
6756+
if (resetPropsInfo.resetSpecialProperties)
6757+
{
6758+
g_pGame->SetCheatEnabled("hovercars", false);
6759+
g_pGame->SetCheatEnabled("aircars", false);
6760+
g_pGame->SetCheatEnabled("extrabunny", false);
6761+
g_pGame->SetCheatEnabled("extrajump", false);
6762+
6763+
g_pGame->SetRandomFoliageEnabled(true);
6764+
g_pGame->SetMoonEasterEggEnabled(false);
6765+
g_pGame->SetExtraAirResistanceEnabled(true);
6766+
g_pGame->SetUnderWorldWarpEnabled(true);
6767+
g_pGame->SetVehicleSunGlareEnabled(false);
6768+
g_pGame->SetCoronaZTestEnabled(true);
6769+
g_pGame->SetWaterCreaturesEnabled(true);
6770+
g_pGame->SetBurnFlippedCarsEnabled(true);
6771+
g_pGame->SetFireballDestructEnabled(true);
6772+
g_pGame->SetRoadSignsTextEnabled(true);
6773+
g_pGame->SetExtendedWaterCannonsEnabled(true);
6774+
g_pGame->SetTunnelWeatherBlendEnabled(true);
6775+
}
6776+
6777+
// Reset all setWorldProperty to default
6778+
if (resetPropsInfo.resetWorldProperties)
6779+
{
6780+
g_pMultiplayer->ResetAmbientColor();
6781+
g_pMultiplayer->ResetAmbientObjectColor();
6782+
g_pMultiplayer->ResetDirectionalColor();
6783+
g_pMultiplayer->ResetSpriteSize();
6784+
g_pMultiplayer->ResetSpriteBrightness();
6785+
g_pMultiplayer->ResetPoleShadowStrength();
6786+
g_pMultiplayer->ResetShadowStrength();
6787+
g_pMultiplayer->ResetShadowsOffset();
6788+
g_pMultiplayer->ResetLightsOnGroundBrightness();
6789+
g_pMultiplayer->ResetLowCloudsColor();
6790+
g_pMultiplayer->ResetBottomCloudsColor();
6791+
g_pMultiplayer->ResetCloudsAlpha1();
6792+
g_pMultiplayer->ResetIllumination();
6793+
6794+
CWeather* weather = g_pGame->GetWeather();
6795+
weather->ResetWetRoads();
6796+
weather->ResetFoggyness();
6797+
weather->ResetFog();
6798+
weather->ResetRainFog();
6799+
weather->ResetWaterFog();
6800+
weather->ResetSandstorm();
6801+
weather->ResetRainbow();
6802+
}
6803+
6804+
// Reset all weather stuff like heat haze, wind velocity etc
6805+
if (resetPropsInfo.resetWeatherProperties)
6806+
{
6807+
g_pMultiplayer->ResetHeatHaze();
6808+
g_pMultiplayer->RestoreFogDistance();
6809+
g_pMultiplayer->ResetMoonSize();
6810+
g_pMultiplayer->ResetSky();
6811+
g_pMultiplayer->ResetSunColor();
6812+
g_pMultiplayer->ResetSunSize();
6813+
g_pMultiplayer->RestoreWindVelocity();
6814+
g_pMultiplayer->ResetColorFilter();
6815+
6816+
g_pGame->GetWeather()->ResetAmountOfRain();
6817+
}
6818+
6819+
// Reset LODs
6820+
if (resetPropsInfo.resetLODs)
6821+
{
6822+
g_pGame->GetSettings()->ResetVehiclesLODDistance(true);
6823+
g_pGame->GetSettings()->ResetPedsLODDistance(true);
6824+
}
6825+
6826+
// Reset & restore sounds
6827+
if (resetPropsInfo.resetSounds)
6828+
{
6829+
g_pMultiplayer->SetInteriorSoundsEnabled(true);
6830+
g_pGame->GetAudioEngine()->ResetAmbientSounds();
6831+
g_pGame->GetAudioEngine()->ResetWorldSounds();
6832+
}
6833+
6834+
// Reset all other world stuff
6835+
// Reset clip distances
6836+
g_pMultiplayer->RestoreFarClipDistance();
6837+
g_pMultiplayer->RestoreNearClipDistance();
6838+
6839+
// Reset clouds
6840+
g_pMultiplayer->SetCloudsEnabled(true);
6841+
SetCloudsEnabled(true);
6842+
6843+
// Reset birds
6844+
g_pMultiplayer->DisableBirds(false);
6845+
SetBirdsEnabled(true);
6846+
6847+
// Reset occlusions
6848+
g_pGame->GetWorld()->SetOcclusionsEnabled(true);
6849+
6850+
// Reset gravity
6851+
g_pMultiplayer->SetGlobalGravity(DEFAULT_GRAVITY);
6852+
g_pCore->GetMultiplayer()->SetLocalPlayerGravity(DEFAULT_GRAVITY);
6853+
g_pGame->SetGravity(DEFAULT_GRAVITY);
6854+
6855+
// Reset game speed
6856+
g_pGame->SetGameSpeed(DEFAULT_GAME_SPEED);
6857+
6858+
// Reset aircraft max velocity & height
6859+
g_pMultiplayer->SetAircraftMaxHeight(DEFAULT_AIRCRAFT_MAXHEIGHT);
6860+
g_pMultiplayer->SetAircraftMaxVelocity(DEFAULT_AIRCRAFT_MAXVELOCITY);
6861+
6862+
// Reset jetpack max height
6863+
g_pGame->GetWorld()->SetJetpackMaxHeight(DEFAULT_JETPACK_MAXHEIGHT);
6864+
6865+
// Restore furnitures in the interiors
6866+
for (std::uint8_t i = 0; i <= 4; ++i)
6867+
g_pMultiplayer->SetInteriorFurnitureEnabled(i, true);
6868+
6869+
// Reset minute duration
6870+
SetMinuteDuration(DEFAULT_MINUTE_DURATION);
6871+
6872+
// Reset blur level
6873+
g_pGame->GetSettings()->SetBlurControlledByScript(false);
6874+
g_pGame->GetSettings()->ResetBlurEnabled();
6875+
6876+
// Reset corona reflections
6877+
g_pGame->GetSettings()->SetCoronaReflectionsControlledByScript(false);
6878+
g_pGame->GetSettings()->ResetCoronaReflectionsEnabled();
6879+
6880+
// Reset traffic lights
6881+
g_pMultiplayer->SetTrafficLightsLocked(false);
6882+
6883+
// Reset water color, water level & wave height
6884+
g_pMultiplayer->ResetWater();
6885+
GetManager()->GetWaterManager()->ResetWorldWaterLevel();
6886+
GetManager()->GetWaterManager()->SetWaveLevel(0.0f);
6887+
6888+
// Reset volumetric shadows
6889+
g_pGame->GetSettings()->ResetVolumetricShadows();
6890+
}
6891+
68566892
void CClientGame::OnWindowFocusChange(bool state)
68576893
{
68586894
if (state == m_bFocused)

Client/mods/deathmatch/logic/CClientGame.h

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,15 @@ struct SMiscGameSettings
7171
bool bAllowShotgunDamageFix;
7272
};
7373

74+
struct ResetWorldPropsInfo
75+
{
76+
bool resetSpecialProperties{};
77+
bool resetWorldProperties{};
78+
bool resetWeatherProperties{};
79+
bool resetLODs{};
80+
bool resetSounds{};
81+
};
82+
7483
class CClientGame
7584
{
7685
friend class CPacketHandler;
@@ -410,6 +419,8 @@ class CClientGame
410419
bool SetBirdsEnabled(bool bEnabled);
411420
bool GetBirdsEnabled();
412421

422+
void ResetWorldProperties(const ResetWorldPropsInfo& resetPropsInfo);
423+
413424
CTransferBox* GetTransferBox() { return m_pTransferBox; };
414425

415426
void ChangeVehicleWeapon(bool bNext);

0 commit comments

Comments
 (0)