diff --git a/Content.Server/GameObjects/Components/Doors/ServerDoorComponent.cs b/Content.Server/GameObjects/Components/Doors/ServerDoorComponent.cs index 5ace07e054..8b52ae3794 100644 --- a/Content.Server/GameObjects/Components/Doors/ServerDoorComponent.cs +++ b/Content.Server/GameObjects/Components/Doors/ServerDoorComponent.cs @@ -2,12 +2,14 @@ using System.Collections.Generic; using Content.Server.GameObjects.Components.Access; using Content.Server.GameObjects.EntitySystems; +using Content.Server.Interfaces.GameObjects.Components.Movement; using Content.Server.Utility; using Content.Shared.GameObjects.Components.Doors; using Robust.Server.GameObjects; using Robust.Shared.GameObjects; using Robust.Shared.GameObjects.Components; using Robust.Shared.Interfaces.GameObjects; +using Robust.Shared.Interfaces.GameObjects.Components; using Robust.Shared.Interfaces.Network; using Robust.Shared.Maths; using Robust.Shared.Serialization; @@ -96,6 +98,12 @@ namespace Content.Server.GameObjects } if (entity.HasComponent(typeof(SpeciesComponent))) { + if (!entity.TryGetComponent(out var mover)) return; + + // TODO: temporary hack to fix the physics system raising collision events akwardly. + // E.g. when moving parallel to a door by going off the side of a wall. + var dotProduct = Vector2.Dot(mover.VelocityDir.Normalized, (entity.Transform.WorldPosition - Owner.Transform.WorldPosition).Normalized); + if (dotProduct <= -0.9f) TryOpen(entity); } }