mirror of
https://github.com/OpenRCT2/OpenRCT2
synced 2026-01-21 05:53:02 +01:00
Ensure the spatial index invalidates when moving the entity position
This commit is contained in:
@@ -20,18 +20,6 @@ template<> bool EntityBase::Is<EntityBase>() const
|
||||
return true;
|
||||
}
|
||||
|
||||
CoordsXYZ EntityBase::GetLocation() const
|
||||
{
|
||||
return { x, y, z };
|
||||
}
|
||||
|
||||
void EntityBase::SetLocation(const CoordsXYZ& newLocation)
|
||||
{
|
||||
x = newLocation.x;
|
||||
y = newLocation.y;
|
||||
z = newLocation.z;
|
||||
}
|
||||
|
||||
void EntityBase::Invalidate()
|
||||
{
|
||||
if (x == kLocationNull)
|
||||
|
||||
@@ -464,6 +464,19 @@ void UpdateEntitiesSpatialIndex()
|
||||
}
|
||||
}
|
||||
|
||||
CoordsXYZ EntityBase::GetLocation() const
|
||||
{
|
||||
return { x, y, z };
|
||||
}
|
||||
|
||||
void EntityBase::SetLocation(const CoordsXYZ& newLocation)
|
||||
{
|
||||
x = newLocation.x;
|
||||
y = newLocation.y;
|
||||
z = newLocation.z;
|
||||
SpatialIndex |= kSpatialIndexDirtyMask;
|
||||
}
|
||||
|
||||
void EntityBase::MoveTo(const CoordsXYZ& newLocation)
|
||||
{
|
||||
if (x != kLocationNull)
|
||||
@@ -478,17 +491,9 @@ void EntityBase::MoveTo(const CoordsXYZ& newLocation)
|
||||
loc.x = kLocationNull;
|
||||
}
|
||||
|
||||
const auto newSpatialIndex = ComputeSpatialIndex(loc);
|
||||
if (newSpatialIndex != GetSpatialIndex(this))
|
||||
{
|
||||
SpatialIndex |= kSpatialIndexDirtyMask;
|
||||
}
|
||||
|
||||
if (loc.x == kLocationNull)
|
||||
{
|
||||
x = loc.x;
|
||||
y = loc.y;
|
||||
z = loc.z;
|
||||
SetLocation(loc);
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user