Skip to content

Commit 9b9a259

Browse files
committed
Update syntax
1 parent ad9f763 commit 9b9a259

File tree

5 files changed

+21
-12
lines changed

5 files changed

+21
-12
lines changed

Client/game_sa/CWorldSA.cpp

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -77,16 +77,17 @@ bool CWorldSA::ResetSurfaceInfo(short sSurfaceID)
7777
return false;
7878
}
7979

80-
CEntity* CWorldSA::TestSphereAgainstWorld(const CVector& sphereCenter, float radius, CEntity* ignoredEntity, bool checkBuildings, bool checkVehicles, bool checkPeds, bool checkObjects, bool checkDummies, bool cameraIgnore, bool& collisionDetectedOut)
80+
CEntity* CWorldSA::TestSphereAgainstWorld(const CVector& sphereCenter, float radius, CEntity* ignoredEntity, bool checkBuildings, bool checkVehicles, bool checkPeds, bool checkObjects, bool checkDummies, bool cameraIgnore, STestSphereAgainstWorldResult& result)
8181
{
8282
auto entity = ((CEntitySAInterface*(__cdecl*)(CVector, float, CEntitySAInterface*, bool, bool, bool, bool, bool, bool))FUNC_CWorld_TestSphereAgainstWorld)(sphereCenter, radius, ignoredEntity ? ignoredEntity->GetInterface() : nullptr, checkBuildings, checkVehicles, checkPeds, checkObjects, checkDummies, cameraIgnore);
8383
if (!entity)
84-
{
85-
collisionDetectedOut = false;
8684
return nullptr;
87-
}
85+
86+
result.collisionDetected = true;
87+
result.modelID = entity->m_nModelIndex;
88+
result.type = entity->nType;
89+
result.lodID = entity->m_pLod ? entity->m_pLod->m_nModelIndex : 0;
8890

89-
collisionDetectedOut = true;
9091
return pGame->GetPools()->GetEntity(reinterpret_cast<DWORD*>(entity));
9192
}
9293

Client/game_sa/CWorldSA.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,7 @@ class CWorldSA : public CWorld
7575
void ResetAllSurfaceInfo() override;
7676
bool ResetSurfaceInfo(short sSurfaceID) override;
7777

78-
CEntity* TestSphereAgainstWorld(const CVector& sphereCenter, float radius, CEntity* ignoredEntity, bool checkBuildings, bool checkVehicles, bool checkPeds, bool checkObjects, bool checkDummies, bool cameraIgnore, bool& collisionDetectedOut) override;
78+
CEntity* TestSphereAgainstWorld(const CVector& sphereCenter, float radius, CEntity* ignoredEntity, bool checkBuildings, bool checkVehicles, bool checkPeds, bool checkObjects, bool checkDummies, bool cameraIgnore, STestSphereAgainstWorldResult& result) override;
7979

8080
private:
8181
float m_fAircraftMaxHeight;

Client/mods/deathmatch/logic/luadefs/CLuaWorldDefs.cpp

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2280,14 +2280,14 @@ void CLuaWorldDefs::ResetWorldProperties(std::optional<bool> resetSpecialWorldPr
22802280
g_pClientGame->ResetWorldProperties(ResetWorldPropsInfo{resetSpecialWorldProperties.value_or(true), resetWorldProperties.value_or(true), resetWeatherProperties.value_or(true), resetLODs.value_or(true), resetSounds.value_or(true)});
22812281
}
22822282

2283-
CLuaMultiReturn<bool, std::variant<CClientEntity*, std::nullptr_t>> CLuaWorldDefs::TestSphereAgainstWorld(CVector sphereCenter, float radius, std::optional<CClientEntity*> ignoredEntity, std::optional<bool> checkBuildings, std::optional<bool> checkVehicles, std::optional<bool> checkPeds, std::optional<bool> checkObjects, std::optional<bool> checkDummies, std::optional<bool> cameraIgnore)
2283+
CLuaMultiReturn<bool, CClientEntity*, int, int, int> CLuaWorldDefs::TestSphereAgainstWorld(CVector sphereCenter, float radius, std::optional<CClientEntity*> ignoredEntity, std::optional<bool> checkBuildings, std::optional<bool> checkVehicles, std::optional<bool> checkPeds, std::optional<bool> checkObjects, std::optional<bool> checkDummies, std::optional<bool> cameraIgnore)
22842284
{
2285-
bool collisionDetected = false;
2285+
STestSphereAgainstWorldResult result;
22862286
CClientEntity* collidedEntity = nullptr;
22872287

2288-
CEntity* entity = g_pGame->GetWorld()->TestSphereAgainstWorld(sphereCenter, radius, ignoredEntity.has_value() ? ignoredEntity.value()->GetGameEntity() : nullptr, checkBuildings.value_or(true), checkVehicles.value_or(true), checkPeds.value_or(true), checkObjects.value_or(true), checkDummies.value_or(true), cameraIgnore.value_or(false), collisionDetected);
2288+
CEntity* entity = g_pGame->GetWorld()->TestSphereAgainstWorld(sphereCenter, radius, ignoredEntity.has_value() ? ignoredEntity.value()->GetGameEntity() : nullptr, checkBuildings.value_or(true), checkVehicles.value_or(true), checkPeds.value_or(true), checkObjects.value_or(true), checkDummies.value_or(true), cameraIgnore.value_or(false), result);
22892289
if (entity)
22902290
collidedEntity = reinterpret_cast<CClientEntity*>(entity->GetStoredPointer());
22912291

2292-
return {collisionDetected, collidedEntity};
2292+
return {result.collisionDetected, collidedEntity, result.modelID, result.lodID, result.type};
22932293
}

Client/mods/deathmatch/logic/luadefs/CLuaWorldDefs.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -141,7 +141,7 @@ class CLuaWorldDefs : public CLuaDefs
141141

142142
static void ResetWorldProperties(std::optional<bool> resetSpecialWorldProperties, std::optional<bool> resetWorldProperties, std::optional<bool> resetWeatherProperties, std::optional<bool> resetLODs, std::optional<bool> resetSounds) noexcept;
143143

144-
static CLuaMultiReturn<bool, std::variant<CClientEntity*, std::nullptr_t>> TestSphereAgainstWorld(CVector sphereCenter, float radius, std::optional<CClientEntity*> ignoredEntity, std::optional<bool> checkBuildings, std::optional<bool> checkVehicles, std::optional<bool> checkPeds, std::optional<bool> checkObjects, std::optional<bool> checkDummies, std::optional<bool> cameraIgnore);
144+
static CLuaMultiReturn<bool, CClientEntity*, int, int, int> TestSphereAgainstWorld(CVector sphereCenter, float radius, std::optional<CClientEntity*> ignoredEntity, std::optional<bool> checkBuildings, std::optional<bool> checkVehicles, std::optional<bool> checkPeds, std::optional<bool> checkObjects, std::optional<bool> checkDummies, std::optional<bool> cameraIgnore);
145145

146146
};
147147

Client/sdk/game/CWorld.h

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,14 @@ struct SProcessLineOfSightMaterialInfoResult {
6161
bool valid{}; //< Data found in this struct is only valid if this is `true`!
6262
};
6363

64+
struct STestSphereAgainstWorldResult
65+
{
66+
bool collisionDetected{false};
67+
std::uint32_t modelID{0};
68+
std::uint32_t lodID{0};
69+
std::uint8_t type{0};
70+
};
71+
6472
enum eDebugCaller
6573
{
6674
CEntity_SetMatrix,
@@ -275,5 +283,5 @@ class CWorld
275283
virtual void ResetAllSurfaceInfo() = 0;
276284
virtual bool ResetSurfaceInfo(short sSurfaceID) = 0;
277285

278-
virtual CEntity* TestSphereAgainstWorld(const CVector& sphereCenter, float radius, CEntity* ignoredEntity, bool checkBuildings, bool checkVehicles, bool checkPeds, bool checkObjects, bool checkDummies, bool cameraIgnore, bool& collisionDetectedOut) = 0;
286+
virtual CEntity* TestSphereAgainstWorld(const CVector& sphereCenter, float radius, CEntity* ignoredEntity, bool checkBuildings, bool checkVehicles, bool checkPeds, bool checkObjects, bool checkDummies, bool cameraIgnore, STestSphereAgainstWorldResult& result) = 0;
279287
};

0 commit comments

Comments
 (0)