summaryrefslogtreecommitdiff
path: root/src/core/World.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/core/World.cpp')
-rw-r--r--src/core/World.cpp51
1 files changed, 29 insertions, 22 deletions
diff --git a/src/core/World.cpp b/src/core/World.cpp
index f97f0ebf..f6106bb5 100644
--- a/src/core/World.cpp
+++ b/src/core/World.cpp
@@ -143,9 +143,9 @@ CWorld::ProcessLineOfSight(const CVector &point1, const CVector &point2, CColPoi
dist = 1.0f;
xstart = GetSectorIndexX(point1.x);
- ystart = GetSectorIndexX(point1.y);
+ ystart = GetSectorIndexY(point1.y);
xend = GetSectorIndexX(point2.x);
- yend = GetSectorIndexX(point2.y);
+ yend = GetSectorIndexY(point2.y);
#define LOSARGS CColLine(point1, point2), point, dist, entity, checkBuildings, checkVehicles, checkPeds, checkObjects, checkDummies, ignoreSeeThrough, ignoreSomeObjects
@@ -416,9 +416,9 @@ CWorld::GetIsLineOfSightClear(const CVector &point1, const CVector &point2, bool
AdvanceCurrentScanCode();
xstart = GetSectorIndexX(point1.x);
- ystart = GetSectorIndexX(point1.y);
+ ystart = GetSectorIndexY(point1.y);
xend = GetSectorIndexX(point2.x);
- yend = GetSectorIndexX(point2.y);
+ yend = GetSectorIndexY(point2.y);
#define LOSARGS CColLine(point1, point2), checkBuildings, checkVehicles, checkPeds, checkObjects, checkDummies, ignoreSeeThrough, ignoreSomeObjects
@@ -638,20 +638,24 @@ void
CWorld::FindObjectsInRange(CVector &centre, float distance, bool ignoreZ, short *nextObject, short lastObject, CEntity **objects, bool checkBuildings, bool checkVehicles, bool checkPeds, bool checkObjects, bool checkDummies)
{
int minX = GetSectorIndexX(centre.x - distance);
- if (minX <= 0)
- minX = 0;
+ if (minX <= 0) minX = 0;
int minY = GetSectorIndexY(centre.y - distance);
- if (minY <= 0)
- minY = 0;
+ if (minY <= 0) minY = 0;
int maxX = GetSectorIndexX(centre.x + distance);
- if (maxX >= NUMSECTORS_X)
- maxX = NUMSECTORS_X;
+#ifdef FIX_BUGS
+ if (maxX >= NUMSECTORS_X) maxX = NUMSECTORS_X - 1;
+#else
+ if (maxX >= NUMSECTORS_X) maxX = NUMSECTORS_X;
+#endif
int maxY = GetSectorIndexY(centre.y + distance);
- if (maxY >= NUMSECTORS_Y)
- maxY = NUMSECTORS_Y;
+#ifdef FIX_BUGS
+ if (maxY >= NUMSECTORS_Y) maxY = NUMSECTORS_Y - 1;
+#else
+ if (maxY >= NUMSECTORS_Y) maxY = NUMSECTORS_Y;
+#endif
AdvanceCurrentScanCode();
@@ -689,20 +693,24 @@ CWorld::TestSphereAgainstWorld(CVector centre, float distance, CEntity *entityTo
CEntity* foundE = nil;
int minX = GetSectorIndexX(centre.x - distance);
- if (minX <= 0)
- minX = 0;
+ if (minX <= 0) minX = 0;
int minY = GetSectorIndexY(centre.y - distance);
- if (minY <= 0)
- minY = 0;
+ if (minY <= 0) minY = 0;
int maxX = GetSectorIndexX(centre.x + distance);
- if (maxX >= NUMSECTORS_X)
- maxX = NUMSECTORS_X;
+#ifdef FIX_BUGS
+ if (maxX >= NUMSECTORS_X) maxX = NUMSECTORS_X - 1;
+#else
+ if (maxX >= NUMSECTORS_X) maxX = NUMSECTORS_X;
+#endif
int maxY = GetSectorIndexY(centre.y + distance);
- if (maxY >= NUMSECTORS_Y)
- maxY = NUMSECTORS_Y;
+#ifdef FIX_BUGS
+ if (maxY >= NUMSECTORS_Y) maxY = NUMSECTORS_Y - 1;
+#else
+ if (maxY >= NUMSECTORS_Y) maxY = NUMSECTORS_Y;
+#endif
AdvanceCurrentScanCode();
@@ -1171,8 +1179,7 @@ CWorld::Process(void)
for (CPtrNode* node = ms_listMovingEntityPtrs.first; node; node = node->next) {
CPed* movingPed = (CPed*)node->item;
if (movingPed->IsPed()) {
- if (movingPed->bInVehicle && movingPed->m_nPedState != PED_EXIT_TRAIN
- || movingPed->m_nPedState == PED_ENTER_CAR || movingPed->m_nPedState == PED_CARJACK) {
+ if (movingPed->bInVehicle && movingPed->m_nPedState != PED_EXIT_TRAIN || movingPed->EnteringCar()) {
CVehicle *movingCar = movingPed->m_pMyVehicle;
if (movingCar) {
if (movingCar->IsTrain()) {