Rename usages of collidable to physics (#2230)

* Rename usages of collidable to physics

* high tier PANIQUE

* aaaaaaaaAAAAAa

* cursed commit dont research

* Fix urist and items being anchored

* Fix the rest
This commit is contained in:
DrSmugleaf
2020-10-11 16:36:58 +02:00
committed by GitHub
parent 413ca9812d
commit b64cb24059
79 changed files with 292 additions and 268 deletions

View File

@@ -20,9 +20,9 @@ namespace Content.Client.GameObjects.Components.Mobs.State
EntitySystem.Get<StandingStateSystem>().Down(entity);
if (entity.TryGetComponent(out CollidableComponent collidable))
if (entity.TryGetComponent(out PhysicsComponent physics))
{
collidable.CanCollide = false;
physics.CanCollide = false;
}
}
@@ -30,9 +30,9 @@ namespace Content.Client.GameObjects.Components.Mobs.State
{
EntitySystem.Get<StandingStateSystem>().Standing(entity);
if (entity.TryGetComponent(out CollidableComponent collidable))
if (entity.TryGetComponent(out PhysicsComponent physics))
{
collidable.CanCollide = true;
physics.CanCollide = true;
}
}

View File

@@ -73,7 +73,7 @@ namespace Content.Client.GameObjects.Components.Suspicion
return;
}
if (!ally.TryGetComponent(out ICollidableComponent collidable))
if (!ally.TryGetComponent(out IPhysicsComponent physics))
{
return;
}
@@ -85,7 +85,7 @@ namespace Content.Client.GameObjects.Components.Suspicion
}
// all entities have a TransformComponent
var transform = collidable.Entity.Transform;
var transform = physics.Entity.Transform;
// if not on the same map, continue
if (transform.MapID != _eyeManager.CurrentMap || !transform.IsMapTransform)
@@ -93,7 +93,7 @@ namespace Content.Client.GameObjects.Components.Suspicion
continue;
}
var worldBox = collidable.WorldAABB;
var worldBox = physics.WorldAABB;
// if not on screen, or too small, continue
if (!worldBox.Intersects(in viewport) || worldBox.IsEmpty())
@@ -101,7 +101,7 @@ namespace Content.Client.GameObjects.Components.Suspicion
continue;
}
var screenCoordinates = _eyeManager.WorldToScreen(collidable.WorldAABB.TopLeft + (0, 0.5f));
var screenCoordinates = _eyeManager.WorldToScreen(physics.WorldAABB.TopLeft + (0, 0.5f));
DrawString(screen, _font, screenCoordinates, _traitorText, Color.OrangeRed);
}
}

View File

@@ -30,10 +30,10 @@ namespace Content.Client.GameObjects.EntitySystems
return;
}
var collidable = playerEnt.GetComponent<ICollidableComponent>();
collidable.Predict = true;
var physics = playerEnt.GetComponent<IPhysicsComponent>();
physics.Predict = true;
UpdateKinematics(playerEnt.Transform, mover, collidable);
UpdateKinematics(playerEnt.Transform, mover, physics);
}
public override void Update(float frameTime)

View File

@@ -101,9 +101,9 @@ namespace Content.IntegrationTests.Tests.Doors
airlock = entityManager.SpawnEntity("Airlock", new MapCoordinates((0, 0), mapId));
Assert.True(human.TryGetComponent(out ICollidableComponent collidable));
Assert.True(human.TryGetComponent(out IPhysicsComponent physics));
controller = collidable.EnsureController<TestController>();
controller = physics.EnsureController<TestController>();
Assert.True(airlock.TryGetComponent(out airlockComponent));
Assert.That(airlockComponent.State, Is.EqualTo(DoorState.Closed));
@@ -117,7 +117,7 @@ namespace Content.IntegrationTests.Tests.Doors
for (var i = 0; i < 240; i += 10)
{
// Keep the airlock awake so they collide
airlock.GetComponent<ICollidableComponent>().WakeBody();
airlock.GetComponent<IPhysicsComponent>().WakeBody();
// Ensure that it is still closed
Assert.That(airlockComponent.State, Is.EqualTo(DoorState.Closed));

View File

@@ -46,7 +46,7 @@ namespace Content.IntegrationTests.Tests.GameObjects.Components.Movement
// Now let's make the player enter a climbing transitioning state.
climbing.IsClimbing = true;
climbing.TryMoveTo(human.Transform.WorldPosition, table.Transform.WorldPosition);
var body = human.GetComponent<ICollidableComponent>();
var body = human.GetComponent<IPhysicsComponent>();
Assert.That(body.HasController<ClimbController>(), "Player has no ClimbController", Is.True);

View File

@@ -112,9 +112,9 @@ namespace Content.Server.Administration
if (found.GetGridId(entityManager) != GridId.Invalid)
{
player.AttachedEntity.Transform.Coordinates = found;
if (player.AttachedEntity.TryGetComponent(out ICollidableComponent collidable))
if (player.AttachedEntity.TryGetComponent(out IPhysicsComponent physics))
{
collidable.Stop();
physics.Stop();
}
}
else

View File

@@ -17,7 +17,7 @@ namespace Content.Server.Atmos
{
[Dependency] private IRobustRandom _robustRandom = default!;
[Dependency] private IPhysicsManager _physicsManager = default!;
public override ICollidableComponent? ControlledComponent { protected get; set; }
public override IPhysicsComponent? ControlledComponent { protected get; set; }
private const float MoveForcePushRatio = 1f;
private const float MoveForceForcePushRatio = 1f;

View File

@@ -202,7 +202,7 @@ namespace Content.Server.Atmos
foreach (var entity in _gridTileLookupSystem.GetEntitiesIntersecting(GridIndex, GridIndices))
{
if (!entity.TryGetComponent(out ICollidableComponent physics)
if (!entity.TryGetComponent(out IPhysicsComponent physics)
|| !entity.TryGetComponent(out MovedByPressureComponent pressure)
|| ContainerHelpers.IsInContainer(entity))
continue;

View File

@@ -20,9 +20,9 @@ namespace Content.Server.Construction.Completions
public async Task PerformAction(IEntity entity, IEntity? user)
{
if (!entity.TryGetComponent(out CollidableComponent? collidable)) return;
if (!entity.TryGetComponent(out IPhysicsComponent? physics)) return;
collidable.Anchored = Value;
physics.Anchored = Value;
}
}
}

View File

@@ -20,19 +20,19 @@ namespace Content.Server.Construction.Conditions
public async Task<bool> Condition(IEntity entity)
{
if (!entity.TryGetComponent(out ICollidableComponent collidable)) return false;
if (!entity.TryGetComponent(out IPhysicsComponent physics)) return false;
return collidable.Anchored == Anchored;
return physics.Anchored == Anchored;
}
public void DoExamine(IEntity entity, FormattedMessage message, bool inDetailsRange)
{
if (!entity.TryGetComponent(out ICollidableComponent collidable)) return;
if (!entity.TryGetComponent(out IPhysicsComponent physics)) return;
if(Anchored && !collidable.Anchored)
if(Anchored && !physics.Anchored)
message.AddMarkup("First, anchor it.\n");
if(!Anchored && collidable.Anchored)
if(!Anchored && physics.Anchored)
message.AddMarkup("First, unanchor it.\n");
}
}

View File

@@ -38,7 +38,7 @@ namespace Content.Server.GameObjects.Components
/// <returns>true if it is valid, false otherwise</returns>
private async Task<bool> Valid(IEntity user, IEntity? utilizing, [MaybeNullWhen(false)] bool force = false)
{
if (!Owner.HasComponent<ICollidableComponent>())
if (!Owner.HasComponent<IPhysicsComponent>())
{
return false;
}
@@ -70,7 +70,7 @@ namespace Content.Server.GameObjects.Components
return false;
}
var physics = Owner.GetComponent<ICollidableComponent>();
var physics = Owner.GetComponent<IPhysicsComponent>();
physics.Anchored = true;
return true;
@@ -90,7 +90,7 @@ namespace Content.Server.GameObjects.Components
return false;
}
var physics = Owner.GetComponent<ICollidableComponent>();
var physics = Owner.GetComponent<IPhysicsComponent>();
physics.Anchored = false;
return true;
@@ -105,12 +105,12 @@ namespace Content.Server.GameObjects.Components
/// <returns>true if toggled, false otherwise</returns>
private async Task<bool> TryToggleAnchor(IEntity user, IEntity? utilizing = null, bool force = false)
{
if (!Owner.TryGetComponent(out ICollidableComponent? collidable))
if (!Owner.TryGetComponent(out IPhysicsComponent? physics))
{
return false;
}
return collidable.Anchored ?
return physics.Anchored ?
await TryUnAnchor(user, utilizing, force) :
await TryAnchor(user, utilizing, force);
}
@@ -118,7 +118,7 @@ namespace Content.Server.GameObjects.Components
public override void Initialize()
{
base.Initialize();
Owner.EnsureComponent<CollidableComponent>();
Owner.EnsureComponent<PhysicsComponent>();
}
async Task<bool> IInteractUsing.InteractUsing(InteractUsingEventArgs eventArgs)

View File

@@ -39,9 +39,9 @@ namespace Content.Server.GameObjects.Components.Atmos
airtightComponent.AirBlocked = false;
}
if (Owner.TryGetComponent(out ICollidableComponent collidableComponent))
if (Owner.TryGetComponent(out IPhysicsComponent physics))
{
collidableComponent.Hard = false;
physics.Hard = false;
}
AutoClose = false;

View File

@@ -142,10 +142,10 @@ namespace Content.Server.GameObjects.Components.Atmos
}
var entity = _entityManager.GetEntity(uid);
var collidable = Owner.GetComponent<ICollidableComponent>();
var otherCollidable = entity.GetComponent<ICollidableComponent>();
var physics = Owner.GetComponent<IPhysicsComponent>();
var otherPhysics = entity.GetComponent<IPhysicsComponent>();
if (!collidable.WorldAABB.Intersects(otherCollidable.WorldAABB))
if (!physics.WorldAABB.Intersects(otherPhysics.WorldAABB))
{
_collided.Remove(uid);
}

View File

@@ -20,7 +20,7 @@ namespace Content.Server.GameObjects.Components.Atmos
public GasMixture Air { get; set; }
[ViewVariables]
public bool Anchored => !Owner.TryGetComponent<ICollidableComponent>(out var collidable) || collidable.Anchored;
public bool Anchored => !Owner.TryGetComponent<IPhysicsComponent>(out var physics) || physics.Anchored;
[ViewVariables]
public GasCanisterPortComponent ConnectedPort { get; private set; }
@@ -39,19 +39,19 @@ namespace Content.Server.GameObjects.Components.Atmos
public override void Initialize()
{
base.Initialize();
if (Owner.TryGetComponent<ICollidableComponent>(out var collidable))
if (Owner.TryGetComponent<IPhysicsComponent>(out var physics))
{
AnchorUpdate();
collidable.AnchoredChanged += AnchorUpdate;
physics.AnchoredChanged += AnchorUpdate;
}
}
public override void OnRemove()
{
base.OnRemove();
if (Owner.TryGetComponent<ICollidableComponent>(out var collidable))
if (Owner.TryGetComponent<IPhysicsComponent>(out var physics))
{
collidable.AnchoredChanged -= AnchorUpdate;
physics.AnchoredChanged -= AnchorUpdate;
}
DisconnectFromPort();
}

View File

@@ -58,9 +58,9 @@ namespace Content.Server.GameObjects.Components.Chemistry
_velocity = velocity;
_aliveTime = aliveTime;
// Set Move
if (Owner.TryGetComponent(out ICollidableComponent collidable))
if (Owner.TryGetComponent(out IPhysicsComponent physics))
{
var controller = collidable.EnsureController<VaporController>();
var controller = physics.EnsureController<VaporController>();
controller.Move(_direction, _velocity);
}
}
@@ -82,7 +82,7 @@ namespace Content.Server.GameObjects.Components.Chemistry
_timer += frameTime;
_reactTimer += frameTime;
if (_reactTimer >= ReactTime && Owner.TryGetComponent(out ICollidableComponent collidable))
if (_reactTimer >= ReactTime && Owner.TryGetComponent(out IPhysicsComponent physics))
{
_reactTimer = 0;
var mapGrid = _mapManager.GetGrid(Owner.Transform.GridID);
@@ -101,7 +101,7 @@ namespace Content.Server.GameObjects.Components.Chemistry
{
_reached = true;
if (Owner.TryGetComponent(out ICollidableComponent coll))
if (Owner.TryGetComponent(out IPhysicsComponent coll))
{
var controller = coll.EnsureController<VaporController>();
controller.Stop();
@@ -150,11 +150,11 @@ namespace Content.Server.GameObjects.Components.Chemistry
}
// Check for collision with a impassable object (e.g. wall) and stop
if (collidedWith.TryGetComponent(out ICollidableComponent collidable))
if (collidedWith.TryGetComponent(out IPhysicsComponent physics))
{
if ((collidable.CollisionLayer & (int) CollisionGroup.Impassable) != 0 && collidable.Hard)
if ((physics.CollisionLayer & (int) CollisionGroup.Impassable) != 0 && physics.Hard)
{
if (Owner.TryGetComponent(out ICollidableComponent coll))
if (Owner.TryGetComponent(out IPhysicsComponent coll))
{
var controller = coll.EnsureController<VaporController>();
controller.Stop();

View File

@@ -422,10 +422,10 @@ namespace Content.Server.GameObjects.Components.Construction
}
}
if (Owner.TryGetComponent(out CollidableComponent? collidable) &&
entity.TryGetComponent(out CollidableComponent? otherCollidable))
if (Owner.TryGetComponent(out IPhysicsComponent? physics) &&
entity.TryGetComponent(out IPhysicsComponent? otherPhysics))
{
otherCollidable.Anchored = collidable.Anchored;
otherPhysics.Anchored = physics.Anchored;
}
Owner.Delete();

View File

@@ -111,8 +111,8 @@ namespace Content.Server.GameObjects.Components.Conveyor
return false;
}
if (!entity.TryGetComponent(out ICollidableComponent? collidable) ||
collidable.Anchored)
if (!entity.TryGetComponent(out IPhysicsComponent? physics) ||
physics.Anchored)
{
return false;
}
@@ -152,9 +152,9 @@ namespace Content.Server.GameObjects.Components.Conveyor
continue;
}
if (entity.TryGetComponent(out ICollidableComponent? collidable))
if (entity.TryGetComponent(out IPhysicsComponent? physics))
{
var controller = collidable.EnsureController<ConveyedController>();
var controller = physics.EnsureController<ConveyedController>();
controller.Move(direction, _speed * frameTime);
}
}

View File

@@ -52,9 +52,9 @@ namespace Content.Server.GameObjects.Components.Damage
public void CollideWith(IEntity collidedWith)
{
if (!Owner.TryGetComponent(out ICollidableComponent collidable) || !Owner.TryGetComponent(out IDamageableComponent damageable)) return;
if (!Owner.TryGetComponent(out IPhysicsComponent physics) || !Owner.TryGetComponent(out IDamageableComponent damageable)) return;
var speed = collidable.LinearVelocity.Length;
var speed = physics.LinearVelocity.Length;
if (speed < MinimumSpeed) return;

View File

@@ -56,8 +56,8 @@ namespace Content.Server.GameObjects.Components.Disposal
return false;
}
if (!entity.TryGetComponent(out ICollidableComponent? collidable) ||
!collidable.CanCollide)
if (!entity.TryGetComponent(out IPhysicsComponent? physics) ||
!physics.CanCollide)
{
return false;
}
@@ -73,9 +73,9 @@ namespace Content.Server.GameObjects.Components.Disposal
return false;
}
if (entity.TryGetComponent(out ICollidableComponent? collidable))
if (entity.TryGetComponent(out IPhysicsComponent? physics))
{
collidable.CanCollide = false;
physics.CanCollide = false;
}
return true;
@@ -105,9 +105,9 @@ namespace Content.Server.GameObjects.Components.Disposal
foreach (var entity in _contents.ContainedEntities.ToArray())
{
if (entity.TryGetComponent(out ICollidableComponent? collidable))
if (entity.TryGetComponent(out IPhysicsComponent? physics))
{
collidable.CanCollide = true;
physics.CanCollide = true;
}
_contents.ForceRemove(entity);

View File

@@ -34,8 +34,8 @@ namespace Content.Server.GameObjects.Components.Disposal
[ViewVariables]
public bool Anchored =>
!Owner.TryGetComponent(out ICollidableComponent? collidable) ||
collidable.Anchored;
!Owner.TryGetComponent(out IPhysicsComponent? physics) ||
physics.Anchored;
[ViewVariables] private BoundUserInterface? UserInterface => Owner.GetUIOrNull(DisposalRouterUiKey.Key);

View File

@@ -31,8 +31,8 @@ namespace Content.Server.GameObjects.Components.Disposal
[ViewVariables]
public bool Anchored =>
!Owner.TryGetComponent(out CollidableComponent? collidable) ||
collidable.Anchored;
!Owner.TryGetComponent(out PhysicsComponent? physics) ||
physics.Anchored;
[ViewVariables] private BoundUserInterface? UserInterface => Owner.GetUIOrNull(DisposalTaggerUiKey.Key);

View File

@@ -43,8 +43,8 @@ namespace Content.Server.GameObjects.Components.Disposal
[ViewVariables]
private bool Anchored =>
!Owner.TryGetComponent(out CollidableComponent? collidable) ||
collidable.Anchored;
!Owner.TryGetComponent(out PhysicsComponent? physics) ||
physics.Anchored;
/// <summary>
/// The directions that this tube can connect to others from
@@ -192,12 +192,12 @@ namespace Content.Server.GameObjects.Components.Disposal
private void AnchoredChanged()
{
if (!Owner.TryGetComponent(out CollidableComponent? collidable))
if (!Owner.TryGetComponent(out PhysicsComponent? physics))
{
return;
}
if (collidable.Anchored)
if (physics.Anchored)
{
OnAnchor();
}
@@ -232,16 +232,16 @@ namespace Content.Server.GameObjects.Components.Disposal
Contents = ContainerManagerComponent.Ensure<Container>(Name, Owner);
Owner.EnsureComponent<AnchorableComponent>();
var collidable = Owner.EnsureComponent<CollidableComponent>();
var physics = Owner.EnsureComponent<PhysicsComponent>();
collidable.AnchoredChanged += AnchoredChanged;
physics.AnchoredChanged += AnchoredChanged;
}
protected override void Startup()
{
base.Startup();
if (!Owner.EnsureComponent<CollidableComponent>().Anchored)
if (!Owner.EnsureComponent<PhysicsComponent>().Anchored)
{
return;
}
@@ -254,8 +254,8 @@ namespace Content.Server.GameObjects.Components.Disposal
{
base.OnRemove();
var collidable = Owner.EnsureComponent<CollidableComponent>();
collidable.AnchoredChanged -= AnchoredChanged;
var physics = Owner.EnsureComponent<PhysicsComponent>();
physics.AnchoredChanged -= AnchoredChanged;
Disconnect();
}

View File

@@ -136,8 +136,8 @@ namespace Content.Server.GameObjects.Components.Disposal
return false;
}
if (!entity.TryGetComponent(out ICollidableComponent? collidable) ||
!collidable.CanCollide)
if (!entity.TryGetComponent(out IPhysicsComponent? physics) ||
!physics.CanCollide)
{
return false;
}
@@ -549,9 +549,9 @@ namespace Content.Server.GameObjects.Components.Disposal
Logger.WarningS("VitalComponentMissing", $"Disposal unit {Owner.Uid} is missing an anchorable component");
}
if (Owner.TryGetComponent(out CollidableComponent? collidable))
if (Owner.TryGetComponent(out IPhysicsComponent? physics))
{
collidable.AnchoredChanged += UpdateVisualState;
physics.AnchoredChanged += UpdateVisualState;
}
if (Owner.TryGetComponent(out PowerReceiverComponent? receiver))
@@ -564,9 +564,9 @@ namespace Content.Server.GameObjects.Components.Disposal
public override void OnRemove()
{
if (Owner.TryGetComponent(out ICollidableComponent? collidable))
if (Owner.TryGetComponent(out IPhysicsComponent? physics))
{
collidable.AnchoredChanged -= UpdateVisualState;
physics.AnchoredChanged -= UpdateVisualState;
}
if (Owner.TryGetComponent(out PowerReceiverComponent? receiver))

View File

@@ -254,9 +254,9 @@ namespace Content.Server.GameObjects.Components.Doors
airtight.AirBlocked = false;
}
if (Owner.TryGetComponent(out ICollidableComponent? collidable))
if (Owner.TryGetComponent(out IPhysicsComponent? physics))
{
collidable.Hard = false;
physics.Hard = false;
}
await Timer.Delay(OpenTimeTwo, _cancellationTokenSource.Token);
@@ -297,7 +297,7 @@ namespace Content.Server.GameObjects.Components.Doors
private void CheckCrush()
{
if (!Owner.TryGetComponent(out ICollidableComponent? body))
if (!Owner.TryGetComponent(out IPhysicsComponent? body))
return;
// Crush
@@ -305,7 +305,7 @@ namespace Content.Server.GameObjects.Components.Doors
{
if (!e.TryGetComponent(out StunnableComponent? stun)
|| !e.TryGetComponent(out IDamageableComponent? damage)
|| !e.TryGetComponent(out ICollidableComponent? otherBody))
|| !e.TryGetComponent(out IPhysicsComponent? otherBody))
continue;
var percentage = otherBody.WorldAABB.IntersectPercentage(body.WorldAABB);
@@ -377,7 +377,8 @@ namespace Content.Server.GameObjects.Components.Doors
{
bool shouldCheckCrush = false;
if (_canCrush && Owner.TryGetComponent(out ICollidableComponent? collidable) && collidable.IsColliding(Vector2.Zero, false))
if (_canCrush && Owner.TryGetComponent(out IPhysicsComponent? physics) &&
physics.IsColliding(Vector2.Zero, false))
{
if (Safety)
return false;
@@ -406,7 +407,7 @@ namespace Content.Server.GameObjects.Components.Doors
airtight.AirBlocked = true;
}
if (Owner.TryGetComponent(out ICollidableComponent? body))
if (Owner.TryGetComponent(out IPhysicsComponent? body))
{
body.Hard = true;
}

View File

@@ -377,8 +377,8 @@ namespace Content.Server.GameObjects.Components.Fluids
foreach (var entity in _snapGrid.GetInDir(direction))
{
if (entity.TryGetComponent(out ICollidableComponent collidable) &&
(collidable.CollisionLayer & (int) CollisionGroup.Impassable) != 0)
if (entity.TryGetComponent(out IPhysicsComponent physics) &&
(physics.CollisionLayer & (int) CollisionGroup.Impassable) != 0)
{
puddle = default;
return false;

View File

@@ -533,9 +533,9 @@ namespace Content.Server.GameObjects.Components.GUI
StopPull();
}
PulledObject = pullable.Owner.GetComponent<ICollidableComponent>();
PulledObject = pullable.Owner.GetComponent<IPhysicsComponent>();
var controller = PulledObject.EnsureController<PullController>();
controller.StartPull(Owner.GetComponent<ICollidableComponent>());
controller.StartPull(Owner.GetComponent<IPhysicsComponent>());
}
public void MovePulledObject(EntityCoordinates puller, EntityCoordinates to)
@@ -686,13 +686,13 @@ namespace Content.Server.GameObjects.Components.GUI
Dirty();
if (!message.Entity.TryGetComponent(out ICollidableComponent? collidable))
if (!message.Entity.TryGetComponent(out IPhysicsComponent? physics))
{
return;
}
// set velocity to zero
collidable.Stop();
physics.Stop();
return;
}
}

View File

@@ -201,15 +201,15 @@ namespace Content.Server.GameObjects.Components.Items.Storage
private void ModifyComponents()
{
if (!_isCollidableWhenOpen && Owner.TryGetComponent<ICollidableComponent>(out var collidableComponent))
if (!_isCollidableWhenOpen && Owner.TryGetComponent<IPhysicsComponent>(out var physics))
{
if (Open)
{
collidableComponent.Hard = false;
physics.Hard = false;
}
else
{
collidableComponent.Hard = true;
physics.Hard = true;
}
}
@@ -226,31 +226,30 @@ namespace Content.Server.GameObjects.Components.Items.Storage
private bool AddToContents(IEntity entity)
{
var collidableComponent = Owner.GetComponent<ICollidableComponent>();
ICollidableComponent entityCollidableComponent;
if (entity.TryGetComponent(out entityCollidableComponent))
var physics = Owner.GetComponent<IPhysicsComponent>();
if (entity.TryGetComponent(out IPhysicsComponent entityPhysicsComponent))
{
if(MaxSize < entityCollidableComponent.WorldAABB.Size.X
|| MaxSize < entityCollidableComponent.WorldAABB.Size.Y)
if(MaxSize < entityPhysicsComponent.WorldAABB.Size.X
|| MaxSize < entityPhysicsComponent.WorldAABB.Size.Y)
{
return false;
}
if (collidableComponent.WorldAABB.Left > entityCollidableComponent.WorldAABB.Left)
if (physics.WorldAABB.Left > entityPhysicsComponent.WorldAABB.Left)
{
entity.Transform.WorldPosition += new Vector2(collidableComponent.WorldAABB.Left - entityCollidableComponent.WorldAABB.Left, 0);
entity.Transform.WorldPosition += new Vector2(physics.WorldAABB.Left - entityPhysicsComponent.WorldAABB.Left, 0);
}
else if (collidableComponent.WorldAABB.Right < entityCollidableComponent.WorldAABB.Right)
else if (physics.WorldAABB.Right < entityPhysicsComponent.WorldAABB.Right)
{
entity.Transform.WorldPosition += new Vector2(collidableComponent.WorldAABB.Right - entityCollidableComponent.WorldAABB.Right, 0);
entity.Transform.WorldPosition += new Vector2(physics.WorldAABB.Right - entityPhysicsComponent.WorldAABB.Right, 0);
}
if (collidableComponent.WorldAABB.Bottom > entityCollidableComponent.WorldAABB.Bottom)
if (physics.WorldAABB.Bottom > entityPhysicsComponent.WorldAABB.Bottom)
{
entity.Transform.WorldPosition += new Vector2(0, collidableComponent.WorldAABB.Bottom - entityCollidableComponent.WorldAABB.Bottom);
entity.Transform.WorldPosition += new Vector2(0, physics.WorldAABB.Bottom - entityPhysicsComponent.WorldAABB.Bottom);
}
else if (collidableComponent.WorldAABB.Top < entityCollidableComponent.WorldAABB.Top)
else if (physics.WorldAABB.Top < entityPhysicsComponent.WorldAABB.Top)
{
entity.Transform.WorldPosition += new Vector2(0, collidableComponent.WorldAABB.Top - entityCollidableComponent.WorldAABB.Top);
entity.Transform.WorldPosition += new Vector2(0, physics.WorldAABB.Top - entityPhysicsComponent.WorldAABB.Top);
}
}
if (Contents.CanInsert(entity))
@@ -268,9 +267,9 @@ namespace Content.Server.GameObjects.Components.Items.Storage
}
Contents.Insert(entity);
entity.Transform.WorldPosition = worldPos;
if (entityCollidableComponent != null)
if (entityPhysicsComponent != null)
{
entityCollidableComponent.CanCollide = false;
entityPhysicsComponent.CanCollide = false;
}
return true;
}
@@ -283,9 +282,9 @@ namespace Content.Server.GameObjects.Components.Items.Storage
{
if(Contents.Remove(contained))
{
if (contained.TryGetComponent<ICollidableComponent>(out var entityCollidableComponent))
if (contained.TryGetComponent<IPhysicsComponent>(out var physics))
{
entityCollidableComponent.CanCollide = true;
physics.CanCollide = true;
}
}
}

View File

@@ -85,7 +85,7 @@ namespace Content.Server.GameObjects.Components.Items.Storage
return false;
}
if (Owner.TryGetComponent(out ICollidableComponent physics) &&
if (Owner.TryGetComponent(out IPhysicsComponent physics) &&
physics.Anchored)
{
return false;

View File

@@ -36,9 +36,9 @@ namespace Content.Server.GameObjects.Components.Mobs.State
EntitySystem.Get<StandingStateSystem>().Down(entity);
if (entity.TryGetComponent(out CollidableComponent collidable))
if (entity.TryGetComponent(out IPhysicsComponent physics))
{
collidable.CanCollide = false;
physics.CanCollide = false;
}
}
@@ -46,9 +46,9 @@ namespace Content.Server.GameObjects.Components.Mobs.State
{
EntitySystem.Get<StandingStateSystem>().Standing(entity);
if (entity.TryGetComponent(out CollidableComponent collidable))
if (entity.TryGetComponent(out IPhysicsComponent physics))
{
collidable.CanCollide = true;
physics.CanCollide = true;
}
if (entity.TryGetComponent(out ServerOverlayEffectsComponent overlay))

View File

@@ -55,8 +55,8 @@ namespace Content.Server.GameObjects.Components.Movement
{
base.Initialize();
// This component requires a collidable component.
Owner.EnsureComponent<CollidableComponent>();
// This component requires a physics component.
Owner.EnsureComponent<PhysicsComponent>();
EntitySystem.Get<AiSystem>().ProcessorInitialize(this);
}

View File

@@ -46,9 +46,9 @@ namespace Content.Server.GameObjects.Components.Movement
{
base.Initialize();
if (!Owner.EnsureComponent(out CollidableComponent _))
if (!Owner.EnsureComponent(out PhysicsComponent _))
{
Logger.Warning($"Entity {Owner.Name} at {Owner.Transform.MapPosition} didn't have a {nameof(CollidableComponent)}");
Logger.Warning($"Entity {Owner.Name} at {Owner.Transform.MapPosition} didn't have a {nameof(PhysicsComponent)}");
}
_doAfterSystem = EntitySystem.Get<DoAfterSystem>();
@@ -178,7 +178,7 @@ namespace Content.Server.GameObjects.Components.Movement
var result = await _doAfterSystem.DoAfter(doAfterEventArgs);
if (result != DoAfterStatus.Cancelled && entityToMove.TryGetComponent(out ICollidableComponent body) && body.PhysicsShapes.Count >= 1)
if (result != DoAfterStatus.Cancelled && entityToMove.TryGetComponent(out IPhysicsComponent body) && body.PhysicsShapes.Count >= 1)
{
var direction = (Owner.Transform.WorldPosition - entityToMove.Transform.WorldPosition).Normalized;
var endPoint = Owner.Transform.WorldPosition;
@@ -220,7 +220,7 @@ namespace Content.Server.GameObjects.Components.Movement
var result = await _doAfterSystem.DoAfter(doAfterEventArgs);
if (result != DoAfterStatus.Cancelled && user.TryGetComponent(out ICollidableComponent body) && body.PhysicsShapes.Count >= 1)
if (result != DoAfterStatus.Cancelled && user.TryGetComponent(out IPhysicsComponent body) && body.PhysicsShapes.Count >= 1)
{
var direction = (Owner.Transform.WorldPosition - user.Transform.WorldPosition).Normalized;
var endPoint = Owner.Transform.WorldPosition;

View File

@@ -69,15 +69,15 @@ namespace Content.Server.GameObjects.Components.Movement
_entityManager.TryGetEntity(grid.GridEntityId, out var gridEntity))
{
//TODO: Switch to shuttle component
if (!gridEntity.TryGetComponent(out ICollidableComponent? collidable))
if (!gridEntity.TryGetComponent(out IPhysicsComponent? physics))
{
collidable = gridEntity.AddComponent<CollidableComponent>();
collidable.Mass = 1;
collidable.CanCollide = true;
collidable.PhysicsShapes.Add(new PhysShapeGrid(grid));
physics = gridEntity.AddComponent<PhysicsComponent>();
physics.Mass = 1;
physics.CanCollide = true;
physics.PhysicsShapes.Add(new PhysShapeGrid(grid));
}
var controller = collidable.EnsureController<ShuttleController>();
var controller = physics.EnsureController<ShuttleController>();
controller.Push(CalcNewVelocity(direction, enabled), CurrentWalkSpeed);
}
}

View File

@@ -39,7 +39,7 @@ namespace Content.Server.GameObjects.Components.NodeContainer.Nodes
/// </summary>
private bool Connectable => !_deleting && Anchored;
private bool Anchored => !Owner.TryGetComponent<ICollidableComponent>(out var collidable) || collidable.Anchored;
private bool Anchored => !Owner.TryGetComponent<IPhysicsComponent>(out var physics) || physics.Anchored;
/// <summary>
/// Prevents a node from being used by other nodes while midway through removal.
@@ -63,19 +63,19 @@ namespace Content.Server.GameObjects.Components.NodeContainer.Nodes
{
TryAssignGroupIfNeeded();
CombineGroupWithReachable();
if (Owner.TryGetComponent<ICollidableComponent>(out var collidable))
if (Owner.TryGetComponent<IPhysicsComponent>(out var physics))
{
AnchorUpdate();
collidable.AnchoredChanged += AnchorUpdate;
physics.AnchoredChanged += AnchorUpdate;
}
}
public void OnContainerRemove()
{
_deleting = true;
if (Owner.TryGetComponent<ICollidableComponent>(out var collidable))
if (Owner.TryGetComponent<IPhysicsComponent>(out var physics))
{
collidable.AnchoredChanged -= AnchorUpdate;
physics.AnchoredChanged -= AnchorUpdate;
}
NodeGroup.RemoveNode(this);
}

View File

@@ -107,7 +107,7 @@ namespace Content.Server.GameObjects.Components.Portal
{
// Added this component to avoid stacking portals and causing shenanigans
// TODO: Doesn't do a great job of stopping stacking portals for directed
if (entity.HasComponent<ICollidableComponent>() || entity.HasComponent<TeleporterComponent>())
if (entity.HasComponent<IPhysicsComponent>() || entity.HasComponent<TeleporterComponent>())
{
return;
}
@@ -151,7 +151,7 @@ namespace Content.Server.GameObjects.Components.Portal
// TODO: Check the user's spot? Upside is no stacking TPs but downside is they can't unstuck themselves from walls.
foreach (var entity in _serverEntityManager.GetEntitiesIntersecting(user.Transform.MapID, target))
{
if (entity.HasComponent<ICollidableComponent>() || entity.HasComponent<PortalComponent>())
if (entity.HasComponent<IPhysicsComponent>() || entity.HasComponent<PortalComponent>())
{
return false;
}

View File

@@ -50,7 +50,7 @@ namespace Content.Server.GameObjects.Components.Power.ApcNetComponents
/// </summary>
public bool Connectable => Anchored;
private bool Anchored => !Owner.TryGetComponent<ICollidableComponent>(out var collidable) || collidable.Anchored;
private bool Anchored => !Owner.TryGetComponent<IPhysicsComponent>(out var physics) || physics.Anchored;
[ViewVariables]
public bool NeedsProvider { get; private set; } = true;
@@ -92,18 +92,18 @@ namespace Content.Server.GameObjects.Components.Power.ApcNetComponents
{
TryFindAndSetProvider();
}
if (Owner.TryGetComponent<ICollidableComponent>(out var collidable))
if (Owner.TryGetComponent<IPhysicsComponent>(out var physics))
{
AnchorUpdate();
collidable.AnchoredChanged += AnchorUpdate;
physics.AnchoredChanged += AnchorUpdate;
}
}
public override void OnRemove()
{
if (Owner.TryGetComponent<ICollidableComponent>(out var collidable))
if (Owner.TryGetComponent<IPhysicsComponent>(out var physics))
{
collidable.AnchoredChanged -= AnchorUpdate;
physics.AnchoredChanged -= AnchorUpdate;
}
_provider.RemoveReceiver(this);
base.OnRemove();

View File

@@ -72,7 +72,7 @@ namespace Content.Server.GameObjects.Components.Projectiles
}
// This is so entities that shouldn't get a collision are ignored.
if (entity.TryGetComponent(out ICollidableComponent collidable) && collidable.Hard == false)
if (entity.TryGetComponent(out IPhysicsComponent otherPhysics) && otherPhysics.Hard == false)
{
_deleteOnCollide = false;
return;
@@ -103,9 +103,9 @@ namespace Content.Server.GameObjects.Components.Projectiles
}
if (!entity.Deleted && entity.TryGetComponent(out CameraRecoilComponent recoilComponent)
&& Owner.TryGetComponent(out ICollidableComponent collidableComponent))
&& Owner.TryGetComponent(out IPhysicsComponent ownPhysics))
{
var direction = collidableComponent.LinearVelocity.Normalized;
var direction = ownPhysics.LinearVelocity.Normalized;
recoilComponent.Kick(direction);
}
}

View File

@@ -33,7 +33,7 @@ namespace Content.Server.GameObjects.Components.Projectiles
void ICollideBehavior.CollideWith(IEntity entity)
{
if (!_shouldCollide) return;
if (entity.TryGetComponent(out CollidableComponent collid))
if (entity.TryGetComponent(out PhysicsComponent collid))
{
if (!collid.Hard) // ignore non hard
return;
@@ -52,7 +52,7 @@ namespace Content.Server.GameObjects.Components.Projectiles
// after impacting the first object.
// For realism this should actually be changed when the velocity of the object is less than a threshold.
// This would allow ricochets off walls, and weird gravity effects from slowing the object.
if (Owner.TryGetComponent(out ICollidableComponent body) && body.PhysicsShapes.Count >= 1)
if (Owner.TryGetComponent(out IPhysicsComponent body) && body.PhysicsShapes.Count >= 1)
{
_shouldCollide = false;
}
@@ -65,7 +65,7 @@ namespace Content.Server.GameObjects.Components.Projectiles
return;
}
if (Owner.TryGetComponent(out ICollidableComponent body) && body.PhysicsShapes.Count >= 1)
if (Owner.TryGetComponent(out IPhysicsComponent body) && body.PhysicsShapes.Count >= 1)
{
body.PhysicsShapes[0].CollisionMask &= (int) ~CollisionGroup.ThrownItem;
@@ -91,7 +91,7 @@ namespace Content.Server.GameObjects.Components.Projectiles
public void StartThrow(Vector2 direction, float speed)
{
var comp = Owner.GetComponent<ICollidableComponent>();
var comp = Owner.GetComponent<IPhysicsComponent>();
comp.Status = BodyStatus.InAir;
var controller = comp.EnsureController<ThrownController>();
@@ -125,7 +125,7 @@ namespace Content.Server.GameObjects.Components.Projectiles
{
base.Initialize();
Owner.EnsureComponent<CollidableComponent>().EnsureController<ThrownController>();
Owner.EnsureComponent<PhysicsComponent>().EnsureController<ThrownController>();
}
}
}

View File

@@ -126,8 +126,8 @@ namespace Content.Server.GameObjects.Components.Recycling
return false;
}
if (!entity.TryGetComponent(out ICollidableComponent collidable) ||
collidable.Anchored)
if (!entity.TryGetComponent(out IPhysicsComponent physics) ||
physics.Anchored)
{
return false;
}
@@ -170,9 +170,9 @@ namespace Content.Server.GameObjects.Components.Recycling
continue;
}
if (entity.TryGetComponent(out ICollidableComponent collidable))
if (entity.TryGetComponent(out IPhysicsComponent physics))
{
var controller = collidable.EnsureController<ConveyedController>();
var controller = physics.EnsureController<ConveyedController>();
controller.Move(direction, frameTime);
}
}

View File

@@ -19,8 +19,8 @@ namespace Content.Server.GameObjects.Components.Rotatable
private void TryFlip(IEntity user)
{
if (Owner.TryGetComponent(out ICollidableComponent? collidable) &&
collidable.Anchored)
if (Owner.TryGetComponent(out IPhysicsComponent? physics) &&
physics.Anchored)
{
Owner.PopupMessage(user, Loc.GetString("It's stuck."));
return;

View File

@@ -16,9 +16,9 @@ namespace Content.Server.GameObjects.Components.Rotatable
private void TryRotate(IEntity user, Angle angle)
{
if (Owner.TryGetComponent(out ICollidableComponent collidable))
if (Owner.TryGetComponent(out IPhysicsComponent physics))
{
if (collidable.Anchored)
if (physics.Anchored)
{
Owner.PopupMessage(user, Loc.GetString("It's stuck."));
return;

View File

@@ -31,7 +31,7 @@ namespace Content.Server.GameObjects.Components.Temperature
[ViewVariables] public float HeatCapacity {
get
{
if (Owner.TryGetComponent<ICollidableComponent>(out var physics))
if (Owner.TryGetComponent<IPhysicsComponent>(out var physics))
{
return SpecificHeat * physics.Mass;
}

View File

@@ -389,15 +389,15 @@ namespace Content.Server.GameObjects.Components.Weapon.Ranged.Barrels
projectileAngle = angle;
}
var collidableComponent = projectile.GetComponent<ICollidableComponent>();
collidableComponent.Status = BodyStatus.InAir;
var physics = projectile.GetComponent<IPhysicsComponent>();
physics.Status = BodyStatus.InAir;
projectile.Transform.WorldPosition = Owner.Transform.MapPosition.Position;
var projectileComponent = projectile.GetComponent<ProjectileComponent>();
projectileComponent.IgnoreEntity(shooter);
projectile
.GetComponent<ICollidableComponent>()
.GetComponent<IPhysicsComponent>()
.EnsureController<BulletController>()
.LinearVelocity = projectileAngle.ToVec() * velocity;

View File

@@ -165,9 +165,9 @@ namespace Content.Server.GameObjects.EntitySystems.AI.Pathfinding.Accessible
var targetNode = _pathfindingSystem.GetNode(targetTile);
var collisionMask = 0;
if (entity.TryGetComponent(out ICollidableComponent collidableComponent))
if (entity.TryGetComponent(out IPhysicsComponent physics))
{
collisionMask = collidableComponent.CollisionMask;
collisionMask = physics.CollisionMask;
}
var access = AccessReader.FindAccessTags(entity);

View File

@@ -27,9 +27,9 @@ namespace Content.Server.GameObjects.EntitySystems.AI.Pathfinding.Accessible
public static ReachableArgs GetArgs(IEntity entity)
{
var collisionMask = 0;
if (entity.TryGetComponent(out ICollidableComponent collidableComponent))
if (entity.TryGetComponent(out IPhysicsComponent physics))
{
collisionMask = collidableComponent.CollisionMask;
collisionMask = physics.CollisionMask;
}
var access = AccessReader.FindAccessTags(entity);

View File

@@ -41,10 +41,10 @@ namespace Content.Server.GameObjects.EntitySystems.AI.Pathfinding
GenerateMask();
}
public static bool IsRelevant(IEntity entity, ICollidableComponent collidableComponent)
public static bool IsRelevant(IEntity entity, IPhysicsComponent physicsComponent)
{
if (entity.Transform.GridID == GridId.Invalid ||
(PathfindingSystem.TrackedCollisionLayers & collidableComponent.CollisionLayer) == 0)
(PathfindingSystem.TrackedCollisionLayers & physicsComponent.CollisionLayer) == 0)
{
return false;
}
@@ -257,7 +257,7 @@ namespace Content.Server.GameObjects.EntitySystems.AI.Pathfinding
/// <param name="entity"></param>
/// TODO: These 2 methods currently don't account for a bunch of changes (e.g. airlock unpowered, wrenching, etc.)
/// TODO: Could probably optimise this slightly more.
public void AddEntity(IEntity entity, ICollidableComponent collidableComponent)
public void AddEntity(IEntity entity, IPhysicsComponent physicsComponent)
{
// If we're a door
if (entity.HasComponent<AirlockComponent>() || entity.HasComponent<ServerDoorComponent>())
@@ -274,15 +274,15 @@ namespace Content.Server.GameObjects.EntitySystems.AI.Pathfinding
return;
}
DebugTools.Assert((PathfindingSystem.TrackedCollisionLayers & collidableComponent.CollisionLayer) != 0);
DebugTools.Assert((PathfindingSystem.TrackedCollisionLayers & physicsComponent.CollisionLayer) != 0);
if (!collidableComponent.Anchored)
if (!physicsComponent.Anchored)
{
_physicsLayers.Add(entity, collidableComponent.CollisionLayer);
_physicsLayers.Add(entity, physicsComponent.CollisionLayer);
}
else
{
_blockedCollidables.Add(entity, collidableComponent.CollisionLayer);
_blockedCollidables.Add(entity, physicsComponent.CollisionLayer);
GenerateMask();
ParentChunk.Dirty();
}

View File

@@ -275,8 +275,8 @@ namespace Content.Server.GameObjects.EntitySystems.AI.Pathfinding
{
if (entity.Deleted ||
_lastKnownPositions.ContainsKey(entity) ||
!entity.TryGetComponent(out ICollidableComponent collidableComponent) ||
!PathfindingNode.IsRelevant(entity, collidableComponent))
!entity.TryGetComponent(out IPhysicsComponent physics) ||
!PathfindingNode.IsRelevant(entity, physics))
{
return;
}
@@ -286,7 +286,7 @@ namespace Content.Server.GameObjects.EntitySystems.AI.Pathfinding
var chunk = GetChunk(tileRef);
var node = chunk.GetNode(tileRef);
node.AddEntity(entity, collidableComponent);
node.AddEntity(entity, physics);
_lastKnownPositions.Add(entity, node);
}
@@ -314,8 +314,8 @@ namespace Content.Server.GameObjects.EntitySystems.AI.Pathfinding
{
// If we've moved to space or the likes then remove us.
if (moveEvent.Sender.Deleted ||
!moveEvent.Sender.TryGetComponent(out ICollidableComponent collidableComponent) ||
!PathfindingNode.IsRelevant(moveEvent.Sender, collidableComponent))
!moveEvent.Sender.TryGetComponent(out IPhysicsComponent physics) ||
!PathfindingNode.IsRelevant(moveEvent.Sender, physics))
{
HandleEntityRemove(moveEvent.Sender);
return;
@@ -350,7 +350,7 @@ namespace Content.Server.GameObjects.EntitySystems.AI.Pathfinding
_lastKnownPositions[moveEvent.Sender] = newNode;
oldNode.RemoveEntity(moveEvent.Sender);
newNode.AddEntity(moveEvent.Sender, collidableComponent);
newNode.AddEntity(moveEvent.Sender, physics);
}
private void QueueCollisionChangeMessage(CollisionChangeMessage collisionMessage)
@@ -371,8 +371,8 @@ namespace Content.Server.GameObjects.EntitySystems.AI.Pathfinding
public bool CanTraverse(IEntity entity, PathfindingNode node)
{
if (entity.TryGetComponent(out ICollidableComponent collidableComponent) &&
(collidableComponent.CollisionMask & node.BlockedCollisionMask) != 0)
if (entity.TryGetComponent(out IPhysicsComponent physics) &&
(physics.CollisionMask & node.BlockedCollisionMask) != 0)
{
return false;
}

View File

@@ -417,9 +417,9 @@ namespace Content.Server.GameObjects.EntitySystems.AI.Steering
var startTile = gridManager.GetTileRef(entity.Transform.Coordinates);
var endTile = gridManager.GetTileRef(steeringRequest.TargetGrid);
var collisionMask = 0;
if (entity.TryGetComponent(out ICollidableComponent collidableComponent))
if (entity.TryGetComponent(out IPhysicsComponent physics))
{
collisionMask = collidableComponent.CollisionMask;
collisionMask = physics.CollisionMask;
}
var access = AccessReader.FindAccessTags(entity);
@@ -603,10 +603,10 @@ namespace Content.Server.GameObjects.EntitySystems.AI.Steering
return Vector2.Zero;
}
if (target.TryGetComponent(out ICollidableComponent collidable))
if (target.TryGetComponent(out IPhysicsComponent physics))
{
var targetDistance = (targetPos.Position - entityPos.Position);
targetPos = targetPos.Offset(collidable.LinearVelocity * targetDistance);
targetPos = targetPos.Offset(physics.LinearVelocity * targetDistance);
}
return (targetPos.Position - entityPos.Position).Normalized;
@@ -621,7 +621,7 @@ namespace Content.Server.GameObjects.EntitySystems.AI.Steering
/// <returns></returns>
private Vector2 CollisionAvoidance(IEntity entity, Vector2 direction, ICollection<IEntity> ignoredTargets)
{
if (direction == Vector2.Zero || !entity.TryGetComponent(out ICollidableComponent collidableComponent))
if (direction == Vector2.Zero || !entity.TryGetComponent(out IPhysicsComponent physics))
{
return Vector2.Zero;
}
@@ -629,7 +629,7 @@ namespace Content.Server.GameObjects.EntitySystems.AI.Steering
// We'll check tile-by-tile
// Rewriting this frequently so not many comments as they'll go stale
// I realise this is bad so please rewrite it ;-;
var entityCollisionMask = collidableComponent.CollisionMask;
var entityCollisionMask = physics.CollisionMask;
var avoidanceVector = Vector2.Zero;
var checkTiles = new HashSet<TileRef>();
var avoidTiles = new HashSet<TileRef>();
@@ -662,8 +662,8 @@ namespace Content.Server.GameObjects.EntitySystems.AI.Steering
// if we're moving in the same direction then ignore
// So if 2 entities are moving towards each other and both detect a collision they'll both move in the same direction
// i.e. towards the right
if (physicsEntity.TryGetComponent(out ICollidableComponent collidable) &&
Vector2.Dot(collidable.LinearVelocity, direction) > 0)
if (physicsEntity.TryGetComponent(out IPhysicsComponent otherPhysics) &&
Vector2.Dot(otherPhysics.LinearVelocity, direction) > 0)
{
continue;
}

View File

@@ -288,13 +288,13 @@ namespace Content.Server.GameObjects.EntitySystems.Click
return false;
}
if (!pull.Owner.TryGetComponent(out ICollidableComponent collidable) ||
collidable.Anchored)
if (!pull.Owner.TryGetComponent(out IPhysicsComponent physics) ||
physics.Anchored)
{
return false;
}
var controller = collidable.EnsureController<PullController>();
var controller = physics.EnsureController<PullController>();
if (controller.GettingPulled)
{

View File

@@ -58,13 +58,13 @@ namespace Content.Server.GameObjects.EntitySystems
public override void Update(float frameTime)
{
foreach (var (moverComponent, collidableComponent) in EntityManager.ComponentManager.EntityQuery<IMoverComponent, ICollidableComponent>())
foreach (var (moverComponent, physics) in EntityManager.ComponentManager.EntityQuery<IMoverComponent, IPhysicsComponent>())
{
var entity = moverComponent.Owner;
if (_pauseManager.IsEntityPaused(entity))
continue;
UpdateKinematics(entity.Transform, moverComponent, collidableComponent);
UpdateKinematics(entity.Transform, moverComponent, physics);
}
}
@@ -83,7 +83,7 @@ namespace Content.Server.GameObjects.EntitySystems
ev.Entity.RemoveComponent<PlayerInputMoverComponent>();
}
if (ev.Entity.TryGetComponent(out ICollidableComponent? physics) &&
if (ev.Entity.TryGetComponent(out IPhysicsComponent? physics) &&
physics.TryGetController(out MoverController controller))
{
controller.StopMoving();

View File

@@ -37,35 +37,35 @@ namespace Content.Server.GlobalVerbs
}
if (!user.HasComponent<ISharedHandsComponent>() ||
!user.TryGetComponent(out ICollidableComponent userCollidable) ||
!target.TryGetComponent(out ICollidableComponent targetCollidable) ||
targetCollidable.Anchored)
!user.TryGetComponent(out IPhysicsComponent userPhysics) ||
!target.TryGetComponent(out IPhysicsComponent targetPhysics) ||
targetPhysics.Anchored)
{
return;
}
var controller = targetCollidable.EnsureController<PullController>();
var controller = targetPhysics.EnsureController<PullController>();
data.Visibility = VerbVisibility.Visible;
data.Text = controller.Puller == userCollidable
data.Text = controller.Puller == userPhysics
? Loc.GetString("Stop pulling")
: Loc.GetString("Pull");
}
public override void Activate(IEntity user, IEntity target)
{
if (!user.TryGetComponent(out ICollidableComponent userCollidable) ||
!target.TryGetComponent(out ICollidableComponent targetCollidable) ||
targetCollidable.Anchored ||
if (!user.TryGetComponent(out IPhysicsComponent userPhysics) ||
!target.TryGetComponent(out IPhysicsComponent targetPhysics) ||
targetPhysics.Anchored ||
!target.TryGetComponent(out PullableComponent pullable) ||
!user.TryGetComponent(out HandsComponent hands))
{
return;
}
var controller = targetCollidable.EnsureController<PullController>();
var controller = targetPhysics.EnsureController<PullController>();
if (controller.Puller == userCollidable)
if (controller.Puller == userPhysics)
{
hands.StopPull();
}

View File

@@ -41,7 +41,7 @@ namespace Content.Server.Throw
/// </param>
public static void Throw(IEntity thrownEnt, float throwForce, EntityCoordinates targetLoc, EntityCoordinates sourceLoc, bool spread = false, IEntity throwSourceEnt = null)
{
if (!thrownEnt.TryGetComponent(out ICollidableComponent colComp))
if (!thrownEnt.TryGetComponent(out IPhysicsComponent colComp))
return;
var entityManager = IoCManager.Resolve<IEntityManager>();
@@ -84,7 +84,7 @@ namespace Content.Server.Throw
projComp.StartThrow(angle.ToVec(), spd);
if (throwSourceEnt != null &&
throwSourceEnt.TryGetComponent<ICollidableComponent>(out var physics) &&
throwSourceEnt.TryGetComponent<IPhysicsComponent>(out var physics) &&
physics.TryGetController(out MoverController mover))
{
var physicsMgr = IoCManager.Resolve<IPhysicsManager>();
@@ -139,9 +139,9 @@ namespace Content.Server.Throw
var throwDuration = ThrownItemComponent.DefaultThrowTime;
var mass = 1f;
if (thrownEnt.TryGetComponent(out ICollidableComponent collidable))
if (thrownEnt.TryGetComponent(out IPhysicsComponent physics))
{
mass = collidable.Mass;
mass = physics.Mass;
}
var velocityNecessary = distance / throwDuration;

View File

@@ -20,8 +20,8 @@ namespace Content.Shared.GameObjects.Components.Disposal
[ViewVariables]
public bool Anchored =>
!Owner.TryGetComponent(out CollidableComponent? collidable) ||
collidable.Anchored;
!Owner.TryGetComponent(out IPhysicsComponent? physics) ||
physics.Anchored;
[Serializable, NetSerializable]
public enum Visuals

View File

@@ -15,7 +15,7 @@ namespace Content.Shared.GameObjects.Components.Items
public sealed override uint? NetID => ContentNetIDs.HANDS;
[ViewVariables]
public ICollidableComponent? PulledObject { get; protected set; }
public IPhysicsComponent? PulledObject { get; protected set; }
[ViewVariables]
protected bool IsPulling => PulledObject != null;

View File

@@ -13,7 +13,7 @@ namespace Content.Shared.GameObjects.Components.Movement
public sealed override string Name => "Climbing";
public sealed override uint? NetID => ContentNetIDs.CLIMBING;
protected ICollidableComponent Body;
protected IPhysicsComponent Body;
protected bool IsOnClimbableThisFrame = false;
protected bool OwnerIsTransitioning

View File

@@ -144,11 +144,11 @@ namespace Content.Shared.GameObjects.Components.Movement
/// <inheritdoc />
public override void OnAdd()
{
// This component requires that the entity has a CollidableComponent.
if (!Owner.HasComponent<ICollidableComponent>())
// This component requires that the entity has a IPhysicsComponent.
if (!Owner.HasComponent<IPhysicsComponent>())
Logger.Error(
$"[ECS] {Owner.Prototype?.Name} - {nameof(SharedPlayerInputMoverComponent)} requires" +
$" {nameof(ICollidableComponent)}. ");
$" {nameof(IPhysicsComponent)}. ");
base.OnAdd();
}

View File

@@ -62,8 +62,8 @@ namespace Content.Shared.GameObjects.Components.Movement
|| ContainerHelpers.IsInContainer(Owner)
|| _slipped.Contains(entity.Uid)
|| !entity.TryGetComponent(out SharedStunnableComponent stun)
|| !entity.TryGetComponent(out ICollidableComponent otherBody)
|| !Owner.TryGetComponent(out ICollidableComponent body))
|| !entity.TryGetComponent(out IPhysicsComponent otherBody)
|| !Owner.TryGetComponent(out IPhysicsComponent body))
{
return false;
}
@@ -85,10 +85,10 @@ namespace Content.Shared.GameObjects.Components.Movement
return false;
}
if (entity.TryGetComponent(out ICollidableComponent collidable))
if (entity.TryGetComponent(out IPhysicsComponent physics))
{
var controller = collidable.EnsureController<SlipController>();
controller.LinearVelocity = collidable.LinearVelocity * LaunchForwardsMultiplier;
var controller = physics.EnsureController<SlipController>();
controller.LinearVelocity = physics.LinearVelocity * LaunchForwardsMultiplier;
}
stun.Paralyze(5);
@@ -117,10 +117,10 @@ namespace Content.Shared.GameObjects.Components.Movement
}
var entity = _entityManager.GetEntity(uid);
var collidable = Owner.GetComponent<ICollidableComponent>();
var otherCollidable = entity.GetComponent<ICollidableComponent>();
var physics = Owner.GetComponent<IPhysicsComponent>();
var otherPhysics = entity.GetComponent<IPhysicsComponent>();
if (!collidable.WorldAABB.Intersects(otherCollidable.WorldAABB))
if (!physics.WorldAABB.Intersects(otherPhysics.WorldAABB))
{
_slipped.Remove(uid);
}
@@ -131,11 +131,11 @@ namespace Content.Shared.GameObjects.Components.Movement
{
base.Initialize();
var collidable = Owner.EnsureComponent<CollidableComponent>();
var physics = Owner.EnsureComponent<PhysicsComponent>();
collidable.Hard = false;
physics.Hard = false;
var shape = collidable.PhysicsShapes.FirstOrDefault();
var shape = physics.PhysicsShapes.FirstOrDefault();
if (shape != null)
{

View File

@@ -13,9 +13,9 @@ namespace Content.Shared.GameObjects.Components.Portal
{
base.OnAdd();
if (Owner.TryGetComponent<ICollidableComponent>(out var collidable))
if (Owner.TryGetComponent<IPhysicsComponent>(out var physics))
{
collidable.Hard = false;
physics.Hard = false;
}
}
}

View File

@@ -22,10 +22,10 @@ namespace Content.Shared.GameObjects.EntitySystems.Atmos
public GameTick LastUpdate { get; private set; }
public GasOverlayChunk(GridId gridIndices, Vector2i Vector2i)
public GasOverlayChunk(GridId gridIndices, Vector2i vector2i)
{
GridIndices = gridIndices;
Vector2i = Vector2i;
Vector2i = vector2i;
}
public void Dirty(GameTick currentTick)

View File

@@ -52,9 +52,9 @@ namespace Content.Shared.GameObjects.EntitySystems
base.Shutdown();
}
protected void UpdateKinematics(ITransformComponent transform, IMoverComponent mover, ICollidableComponent collidable)
protected void UpdateKinematics(ITransformComponent transform, IMoverComponent mover, IPhysicsComponent physics)
{
collidable.EnsureController<MoverController>();
physics.EnsureController<MoverController>();
var weightless = !transform.Owner.HasComponent<MovementIgnoreGravityComponent>() &&
_physicsManager.IsWeightless(transform.Coordinates);
@@ -62,7 +62,7 @@ namespace Content.Shared.GameObjects.EntitySystems
if (weightless)
{
// No gravity: is our entity touching anything?
var touching = IsAroundCollider(transform, mover, collidable);
var touching = IsAroundCollider(transform, mover, physics);
if (!touching)
{
@@ -75,7 +75,7 @@ namespace Content.Shared.GameObjects.EntitySystems
var combined = walkDir + sprintDir;
if (combined.LengthSquared < 0.001 || !ActionBlockerSystem.CanMove(mover.Owner) && !weightless)
{
if (collidable.TryGetController(out MoverController controller))
if (physics.TryGetController(out MoverController controller))
{
controller.StopMoving();
}
@@ -84,7 +84,7 @@ namespace Content.Shared.GameObjects.EntitySystems
{
if (weightless)
{
if (collidable.TryGetController(out MoverController controller))
if (physics.TryGetController(out MoverController controller))
{
controller.Push(combined, mover.CurrentPushSpeed);
}
@@ -96,7 +96,7 @@ namespace Content.Shared.GameObjects.EntitySystems
var total = walkDir * mover.CurrentWalkSpeed + sprintDir * mover.CurrentSprintSpeed;
{
if (collidable.TryGetController(out MoverController controller))
if (physics.TryGetController(out MoverController controller))
{
controller.Move(total, 1);
}
@@ -114,7 +114,7 @@ namespace Content.Shared.GameObjects.EntitySystems
}
private bool IsAroundCollider(ITransformComponent transform, IMoverComponent mover,
ICollidableComponent collider)
IPhysicsComponent collider)
{
foreach (var entity in _entityManager.GetEntitiesInRange(transform.Owner, mover.GrabRange, true))
{
@@ -123,7 +123,7 @@ namespace Content.Shared.GameObjects.EntitySystems
continue; // Don't try to push off of yourself!
}
if (!entity.TryGetComponent<ICollidableComponent>(out var otherCollider))
if (!entity.TryGetComponent<IPhysicsComponent>(out var otherCollider))
{
continue;
}

View File

@@ -7,7 +7,7 @@ namespace Content.Shared.Physics
{
public class BulletController : VirtualController
{
public override ICollidableComponent? ControlledComponent { protected get; set; }
public override IPhysicsComponent? ControlledComponent { protected get; set; }
public void Push(Vector2 velocityDirection, float speed)
{

View File

@@ -10,7 +10,7 @@ namespace Content.Shared.Physics
{
public class ConveyedController : VirtualController
{
public override ICollidableComponent? ControlledComponent { protected get; set; }
public override IPhysicsComponent? ControlledComponent { protected get; set; }
public void Move(Vector2 velocityDirection, float speed)
{

View File

@@ -12,7 +12,7 @@ namespace Content.Shared.Physics
{
[Dependency] private readonly IPhysicsManager _physicsManager = default!;
public override ICollidableComponent? ControlledComponent { protected get; set; }
public override IPhysicsComponent? ControlledComponent { protected get; set; }
public void Move(Vector2 velocityDirection, float speed)
{

View File

@@ -18,15 +18,15 @@ namespace Content.Shared.Physics.Pull
private const float DistBeforeStopPull = SharedInteractionSystem.InteractionRange;
private ICollidableComponent? _puller;
private IPhysicsComponent? _puller;
public bool GettingPulled => _puller != null;
private EntityCoordinates? _movingTo;
public ICollidableComponent? Puller => _puller;
public IPhysicsComponent? Puller => _puller;
public void StartPull(ICollidableComponent puller)
public void StartPull(IPhysicsComponent puller)
{
DebugTools.AssertNotNull(puller);

View File

@@ -6,10 +6,10 @@ namespace Content.Shared.Physics.Pull
public class PullMessage : ComponentMessage
{
public readonly PullController Controller;
public readonly ICollidableComponent Puller;
public readonly ICollidableComponent Pulled;
public readonly IPhysicsComponent Puller;
public readonly IPhysicsComponent Pulled;
protected PullMessage(PullController controller, ICollidableComponent puller, ICollidableComponent pulled)
protected PullMessage(PullController controller, IPhysicsComponent puller, IPhysicsComponent pulled)
{
Controller = controller;
Puller = puller;

View File

@@ -4,7 +4,7 @@ namespace Content.Shared.Physics.Pull
{
public class PullStartedMessage : PullMessage
{
public PullStartedMessage(PullController controller, ICollidableComponent puller, ICollidableComponent pulled) :
public PullStartedMessage(PullController controller, IPhysicsComponent puller, IPhysicsComponent pulled) :
base(controller, puller, pulled)
{
}

View File

@@ -4,7 +4,7 @@ namespace Content.Shared.Physics.Pull
{
public class PullStoppedMessage : PullMessage
{
public PullStoppedMessage(PullController controller, ICollidableComponent puller, ICollidableComponent pulled) :
public PullStoppedMessage(PullController controller, IPhysicsComponent puller, IPhysicsComponent pulled) :
base(controller, puller, pulled)
{
}

View File

@@ -7,7 +7,7 @@ namespace Content.Shared.Physics
{
public class ShuttleController : VirtualController
{
public override ICollidableComponent? ControlledComponent { protected get; set; }
public override IPhysicsComponent? ControlledComponent { protected get; set; }
public void Push(Vector2 velocityDirection, float speed)
{

View File

@@ -7,7 +7,7 @@ namespace Content.Shared.Physics
{
public class ThrownController : VirtualController
{
public override ICollidableComponent? ControlledComponent { protected get; set; }
public override IPhysicsComponent? ControlledComponent { protected get; set; }
public void Push(Vector2 velocityDirection, float speed)
{

View File

@@ -26,6 +26,7 @@
sprite: Mobs/Animals/monkey.rsi
- type: Clickable
- type: Collidable
anchored: false
mass: 50
shapes:
- !type:PhysShapeAabb
@@ -77,6 +78,7 @@
state: crawling
sprite: Mobs/Animals/gorilla.rsi
- type: Collidable
anchored: false
mass: 90
shapes:
- !type:PhysShapeAabb
@@ -111,6 +113,7 @@
state: chicken-0
sprite: Mobs/Animals/chicken.rsi
- type: Collidable
anchored: false
mass: 20
shapes:
- !type:PhysShapeAabb
@@ -148,6 +151,7 @@
state: butterfly
sprite: Mobs/Animals/butterfly.rsi
- type: Collidable
anchored: false
mass: 5
shapes:
- !type:PhysShapeAabb
@@ -195,6 +199,7 @@
state: bat
sprite: Mobs/Animals/bat.rsi
- type: Collidable
anchored: false
mass: 5
shapes:
- !type:PhysShapeAabb
@@ -233,6 +238,7 @@
state: 0
sprite: Mobs/Animals/bee.rsi
- type: Collidable
anchored: false
mass: 5
shapes:
- !type:PhysShapeAabb
@@ -267,6 +273,7 @@
state: goat
sprite: Mobs/Animals/goat.rsi
- type: Collidable
anchored: false
mass: 20
shapes:
- !type:PhysShapeAabb
@@ -302,6 +309,7 @@
state: goose
sprite: Mobs/Animals/goose.rsi
- type: Collidable
anchored: false
mass: 20
shapes:
- !type:PhysShapeAabb
@@ -340,6 +348,7 @@
state: parrot
sprite: Mobs/Animals/parrot.rsi
- type: Collidable
anchored: false
mass: 20
shapes:
- !type:PhysShapeAabb
@@ -374,6 +383,7 @@
state: snake
sprite: Mobs/Animals/snake.rsi
- type: Collidable
anchored: false
mass: 10
shapes:
- !type:PhysShapeAabb
@@ -411,6 +421,7 @@
state: tarantula
sprite: Mobs/Animals/spider.rsi
- type: Collidable
anchored: false
mass: 10
shapes:
- !type:PhysShapeAabb
@@ -445,6 +456,7 @@
state: crab
sprite: Mobs/Animals/crab.rsi
- type: Collidable
anchored: false
mass: 10
shapes:
- !type:PhysShapeAabb
@@ -479,6 +491,7 @@
state: penguin
sprite: Mobs/Animals/penguin.rsi
- type: Collidable
anchored: false
mass: 10
shapes:
- !type:PhysShapeAabb

View File

@@ -20,6 +20,7 @@
state: carp
sprite: Mobs/Aliens/Carps/carp_space.rsi
- type: Collidable
anchored: false
mass: 50
shapes:
- !type:PhysShapeAabb

View File

@@ -24,6 +24,7 @@
sprite: Constructible/Power/VendingMachines/cola.rsi
state: normal
- type: Collidable
anchored: false
mass: 85
shapes:
- !type:PhysShapeAabb

View File

@@ -21,6 +21,7 @@
- type: InteractionOutline
- type: Clickable
- type: Collidable
anchored: false
mass: 50
shapes:
- !type:PhysShapeAabb

View File

@@ -23,6 +23,7 @@
sprite: Mobs/Aliens/Xenos/xeno_hunter.rsi
- type: Clickable
- type: Collidable
anchored: false
mass: 85
shapes:
- !type:PhysShapeAabb

View File

@@ -7,6 +7,7 @@
components:
- type: Mind
- type: Collidable
anchored: false
mass: 5
shapes:
- !type:PhysShapeAabb

View File

@@ -116,6 +116,7 @@
- map: [ "enum.Slots.MASK" ]
- map: [ "enum.Slots.HEAD" ]
- type: Collidable
anchored: false
mass: 85
shapes:
- !type:PhysShapeAabb
@@ -279,6 +280,7 @@
- map: ["hand-left"]
- map: ["hand-right"]
- type: Collidable
anchored: false
mass: 85
shapes:
- !type:PhysShapeAabb

View File

@@ -4,6 +4,7 @@
parent: BaseItem
components:
- type: Collidable
anchored: false
shapes:
- !type:PhysShapeAabb
bounds: "-0.15,-0.3,0.2,0.3"

View File

@@ -176,6 +176,7 @@
- state: chempuff
map: [ "enum.VaporVisualLayers.Base" ]
- type: Collidable
anchored: false
hard: false
shapes:
- !type:PhysShapeAabb

View File

@@ -12,6 +12,7 @@
sprite: Objects/Weapons/Guns/Projectiles/bullet.rsi
state: bullet
- type: Collidable
anchored: false
edgeslide: false
hard: false
shapes:

View File

@@ -10,6 +10,7 @@
- type: MovedByPressure
- type: DamageOnHighSpeedImpact
- type: Collidable
anchored: false
mass: 5
shapes:
- !type:PhysShapeAabb