Rework CollisionGroups (#7656)
* Replace Mob, Vault, and Small impassable with Mid, High, Low * Remove CollisionGroup.Underplating * Remove CollisionGroup.Passable * Fix constructed APCs not being interactable * Change firelocks to occlude * Make pipe inherit from BaseItem * Clean up pipes * Remove duplicate physics and fixtures from bucket * Rework CollisionGroups on all entities * Add SlipLayer * Remove fixture from delta * Fix maps * Address reviews * Add SubfloorMask * Fix glass collisions for flying mobs * Fix maps * Update new items * Fix bagel again * Fix slug * Fix maps * Touchups * Fix tables blocking high pressure movement * Update StandingState to allow going under flaps * Cleanup * More formatting
This commit is contained in:
@@ -48,9 +48,9 @@ namespace Content.Server.AI.Pathfinding
|
||||
|
||||
public const int TrackedCollisionLayers = (int)
|
||||
(CollisionGroup.Impassable |
|
||||
CollisionGroup.MobImpassable |
|
||||
CollisionGroup.SmallImpassable |
|
||||
CollisionGroup.VaultImpassable);
|
||||
CollisionGroup.MidImpassable |
|
||||
CollisionGroup.LowImpassable |
|
||||
CollisionGroup.HighImpassable);
|
||||
|
||||
/// <summary>
|
||||
/// Ask for the pathfinder to gimme somethin
|
||||
|
||||
@@ -60,7 +60,7 @@ namespace Content.Server.Atmos.EntitySystems
|
||||
{
|
||||
foreach (var (_, fixture) in fixtures.Fixtures)
|
||||
{
|
||||
_physics.AddCollisionMask(fixtures, fixture, (int) CollisionGroup.VaultImpassable);
|
||||
_physics.AddCollisionMask(fixtures, fixture, (int) CollisionGroup.TableLayer);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -79,7 +79,7 @@ namespace Content.Server.Atmos.EntitySystems
|
||||
|
||||
foreach (var fixture in fixtures.Fixtures.Values)
|
||||
{
|
||||
_physics.RemoveCollisionMask(fixtures, fixture, (int) CollisionGroup.VaultImpassable);
|
||||
_physics.RemoveCollisionMask(fixtures, fixture, (int) CollisionGroup.TableLayer);
|
||||
}
|
||||
|
||||
// TODO: Make them dynamic type? Ehh but they still want movement so uhh make it non-predicted like weightless?
|
||||
|
||||
@@ -35,7 +35,7 @@ public sealed class ClimbSystem : SharedClimbSystem
|
||||
[Dependency] private readonly StunSystem _stunSystem = default!;
|
||||
|
||||
private const string ClimbingFixtureName = "climb";
|
||||
private const int ClimbingCollisionGroup = (int) CollisionGroup.VaultImpassable;
|
||||
private const int ClimbingCollisionGroup = (int) CollisionGroup.TableLayer;
|
||||
|
||||
private readonly Dictionary<EntityUid, List<Fixture>> _fixtureRemoveQueue = new();
|
||||
|
||||
|
||||
@@ -62,7 +62,7 @@ public sealed partial class TriggerSystem
|
||||
_fixtures.TryCreateFixture(body, new Fixture(body, component.Shape)
|
||||
{
|
||||
// TODO: Should probably have these settable via datafield but I'm lazy and it's a pain
|
||||
CollisionLayer = (int) (CollisionGroup.MobImpassable | CollisionGroup.SmallImpassable | CollisionGroup.VaultImpassable), Hard = false, ID = TriggerOnProximityComponent.FixtureID
|
||||
CollisionLayer = (int) (CollisionGroup.MidImpassable | CollisionGroup.LowImpassable | CollisionGroup.HighImpassable), Hard = false, ID = TriggerOnProximityComponent.FixtureID
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
@@ -26,6 +26,8 @@ namespace Content.Server.Morgue.Components
|
||||
{
|
||||
[Dependency] private readonly IEntityManager _entMan = default!;
|
||||
|
||||
private const CollisionGroup TrayCanOpenMask = CollisionGroup.Impassable | CollisionGroup.MidImpassable;
|
||||
|
||||
[ViewVariables(VVAccess.ReadWrite)]
|
||||
[DataField("trayPrototype", customTypeSerializer:typeof(PrototypeIdSerializer<EntityPrototype>))]
|
||||
private string? _trayPrototypeId;
|
||||
@@ -69,7 +71,7 @@ namespace Content.Server.Morgue.Components
|
||||
{
|
||||
if (!EntitySystem.Get<SharedInteractionSystem>().InRangeUnobstructed(Owner,
|
||||
_entMan.GetComponent<TransformComponent>(Owner).Coordinates.Offset(_entMan.GetComponent<TransformComponent>(Owner).LocalRotation.GetCardinalDir()),
|
||||
collisionMask: CollisionGroup.Impassable | CollisionGroup.VaultImpassable
|
||||
collisionMask: TrayCanOpenMask
|
||||
))
|
||||
{
|
||||
if (!silent)
|
||||
|
||||
@@ -271,7 +271,7 @@ namespace Content.Server.Shuttles.EntitySystems
|
||||
{
|
||||
ID = BurnFixture,
|
||||
Hard = false,
|
||||
CollisionLayer = (int) CollisionGroup.MobImpassable
|
||||
CollisionLayer = (int) CollisionGroup.FullTileMask
|
||||
};
|
||||
|
||||
_fixtureSystem.TryCreateFixture(physicsComponent, fixture);
|
||||
|
||||
@@ -42,9 +42,9 @@ namespace Content.Server.Storage.Components
|
||||
/// Collision masks that get removed when the storage gets opened.
|
||||
/// </summary>
|
||||
private const int MasksToRemove = (int) (
|
||||
CollisionGroup.MobImpassable |
|
||||
CollisionGroup.VaultImpassable |
|
||||
CollisionGroup.SmallImpassable);
|
||||
CollisionGroup.MidImpassable |
|
||||
CollisionGroup.HighImpassable |
|
||||
CollisionGroup.LowImpassable);
|
||||
|
||||
/// <summary>
|
||||
/// Collision masks that were removed from ANY layer when the storage was opened;
|
||||
|
||||
Reference in New Issue
Block a user