Fix space wind layer removal (#33888)

* Fix space wind layer removal

* apply review

* Update MovedByPressureComponent.cs

* remove this
This commit is contained in:
lzk
2025-04-19 00:52:09 +02:00
committed by GitHub
parent fbf7dd9fba
commit b96fa3dcfa
2 changed files with 18 additions and 4 deletions

View File

@@ -56,11 +56,15 @@ namespace Content.Server.Atmos.EntitySystems
_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);
}
}
}
}
@@ -80,9 +84,13 @@ namespace Content.Server.Atmos.EntitySystems
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.

View File

@@ -27,5 +27,11 @@ public sealed partial class MovedByPressureComponent : Component
[ViewVariables(VVAccess.ReadWrite)]
public int LastHighPressureMovementAirCycle { get; set; } = 0;
/// <summary>
/// Used to remember which fixtures we have to remove the table mask from and give it back accordingly
/// </summary>
[DataField]
public HashSet<string> TableLayerRemoved = new();
}