Gravity fixes (#2272)
* Adjust your rotation as you move (against walls and drifting) * Can't use bullets / firelocks / items to push off of. Co-authored-by: Metal Gear Sloth <metalgearsloth@gmail.com>
This commit is contained in:
@@ -58,12 +58,9 @@ namespace Content.Server.GameObjects.EntitySystems
|
||||
|
||||
public override void Update(float frameTime)
|
||||
{
|
||||
foreach (var (moverComponent, physics) in EntityManager.ComponentManager.EntityQuery<IMoverComponent, IPhysicsComponent>())
|
||||
foreach (var (moverComponent, physics) in EntityManager.ComponentManager.EntityQuery<IMoverComponent, IPhysicsComponent>(false))
|
||||
{
|
||||
var entity = moverComponent.Owner;
|
||||
if (_pauseManager.IsEntityPaused(entity))
|
||||
continue;
|
||||
|
||||
UpdateKinematics(entity.Transform, moverComponent, physics);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -65,6 +65,7 @@ namespace Content.Shared.GameObjects.EntitySystems
|
||||
|
||||
if (!touching)
|
||||
{
|
||||
transform.LocalRotation = physics.LinearVelocity.GetDir().ToAngle();
|
||||
return;
|
||||
}
|
||||
}
|
||||
@@ -88,7 +89,7 @@ namespace Content.Shared.GameObjects.EntitySystems
|
||||
controller.Push(combined, mover.CurrentPushSpeed);
|
||||
}
|
||||
|
||||
transform.LocalRotation = walkDir.GetDir().ToAngle();
|
||||
transform.LocalRotation = physics.LinearVelocity.GetDir().ToAngle();
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -122,7 +123,9 @@ namespace Content.Shared.GameObjects.EntitySystems
|
||||
continue; // Don't try to push off of yourself!
|
||||
}
|
||||
|
||||
if (!entity.TryGetComponent<IPhysicsComponent>(out var otherCollider))
|
||||
if (!entity.TryGetComponent<IPhysicsComponent>(out var otherCollider) ||
|
||||
!otherCollider.CanCollide ||
|
||||
(collider.CollisionMask & otherCollider.CollisionLayer) == 0)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user