Fix collision not refreshing on expired predictions and slight placement issue
This commit is contained in:
parent
3805db7722
commit
572b492b93
@ -1072,13 +1072,18 @@ void WorldClient::update(float dt) {
|
||||
|
||||
float expireTime = min((float)m_latency + 100, 2000.f);
|
||||
auto now = Time::monotonicMilliseconds();
|
||||
eraseWhere(m_predictedTiles, [now, expireTime](auto& pair) {
|
||||
eraseWhere(m_predictedTiles, [&](auto& pair) {
|
||||
float expiry = (float)(now - pair.second.time) / expireTime;
|
||||
auto center = Vec2F(pair.first) + Vec2F::filled(0.5f);
|
||||
auto size = Vec2F::filled(0.875f - expiry * 0.875f);
|
||||
auto poly = PolyF(RectF::withCenter(center, size));
|
||||
SpatialLogger::logPoly("world", poly, Color::Cyan.mix(Color::Red, expiry).toRgba());
|
||||
return expiry >= 1.0f;
|
||||
if (expiry >= 1.0f) {
|
||||
dirtyCollision(RectI::withSize(pair.first, { 1, 1 }));
|
||||
return true;
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
});
|
||||
|
||||
// Secret broadcasts are transmitted through DamageNotifications for vanilla server compatibility.
|
||||
|
@ -119,7 +119,7 @@ List<Drawable> MaterialItem::nonRotatedDrawables() const {
|
||||
}
|
||||
|
||||
void MaterialItem::fire(FireMode mode, bool shifting, bool edgeTriggered) {
|
||||
if (!initialized() || !ready() || !owner()->inToolRange())
|
||||
if (!initialized() || !ready())
|
||||
return;
|
||||
|
||||
auto layer = (mode == FireMode::Primary || !twoHanded() ? TileLayer::Foreground : TileLayer::Background);
|
||||
@ -150,6 +150,9 @@ void MaterialItem::fire(FireMode mode, bool shifting, bool edgeTriggered) {
|
||||
size_t total = 0;
|
||||
for (int i = 0; i != steps; ++i) {
|
||||
auto placementOrigin = aimPosition + diff * (1.0f - ((float)i / steps));
|
||||
if (!owner()->inToolRange(placementOrigin))
|
||||
continue;
|
||||
|
||||
for (Vec2I& pos : tileArea(radius, placementOrigin))
|
||||
modifications.emplaceAppend(pos, PlaceMaterial{layer, materialId(), placementHueShift(pos), m_collisionOverride});
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user