_physics.SetBodyStatus(uid, body, BodyStatus.OnGround);
}
- if (TryComp<FixturesComponent>(uid, out var fixtures))
+ if (TryComp<FixturesComponent>(uid, out var fixtures)
+ && TryComp<MovedByPressureComponent>(uid, out var component))
{
foreach (var (id, fixture) in fixtures.Fixtures)
{
- _physics.AddCollisionMask(uid, id, fixture, (int) CollisionGroup.TableLayer, manager: fixtures);
+ if (component.TableLayerRemoved.Contains(id))
+ {
+ _physics.AddCollisionMask(uid, id, fixture, (int)CollisionGroup.TableLayer, manager: fixtures);
+ }
}
}
}
foreach (var (id, fixture) in fixtures.Fixtures)
{
- _physics.RemoveCollisionMask(uid, id, fixture, (int) CollisionGroup.TableLayer, manager: fixtures);
+ // Mark fixtures that have TableLayer removed
+ if ((fixture.CollisionMask & (int)CollisionGroup.TableLayer) != 0)
+ {
+ component.TableLayerRemoved.Add(id);
+ _physics.RemoveCollisionMask(uid, id, fixture, (int)CollisionGroup.TableLayer, manager: fixtures);
+ }
}
-
// TODO: Make them dynamic type? Ehh but they still want movement so uhh make it non-predicted like weightless?
// idk it's hard.