Misc replay related changes (#17102)
This commit is contained in:
@@ -37,6 +37,7 @@ public abstract class SharedContentEyeSystem : EntitySystem
|
||||
.Register<SharedContentEyeSystem>();
|
||||
|
||||
Sawmill.Level = LogLevel.Info;
|
||||
UpdatesOutsidePrediction = true;
|
||||
}
|
||||
|
||||
private void OnContentZoomRequest(RequestTargetZoomEvent msg, EntitySessionEventArgs args)
|
||||
@@ -112,6 +113,12 @@ public abstract class SharedContentEyeSystem : EntitySystem
|
||||
Dirty(component);
|
||||
}
|
||||
|
||||
public void SetMaxZoom(EntityUid uid, Vector2 value, ContentEyeComponent? component = null)
|
||||
{
|
||||
if (Resolve(uid, ref component))
|
||||
component.MaxZoom = value;
|
||||
}
|
||||
|
||||
private void Zoom(EntityUid uid, bool zoomIn, ContentEyeComponent? component = null)
|
||||
{
|
||||
if (!Resolve(uid, ref component))
|
||||
|
||||
@@ -133,35 +133,7 @@ namespace Content.Shared.Movement.Systems
|
||||
}
|
||||
}
|
||||
|
||||
var angleDiff = Angle.ShortestDistance(mover.RelativeRotation, mover.TargetRelativeRotation);
|
||||
|
||||
// if we've just traversed then lerp to our target rotation.
|
||||
if (!angleDiff.EqualsApprox(Angle.Zero, 0.001))
|
||||
{
|
||||
var adjustment = angleDiff * 5f * frameTime;
|
||||
var minAdjustment = 0.01 * frameTime;
|
||||
|
||||
if (angleDiff < 0)
|
||||
{
|
||||
adjustment = Math.Min(adjustment, -minAdjustment);
|
||||
adjustment = Math.Clamp(adjustment, angleDiff, -angleDiff);
|
||||
}
|
||||
else
|
||||
{
|
||||
adjustment = Math.Max(adjustment, minAdjustment);
|
||||
adjustment = Math.Clamp(adjustment, -angleDiff, angleDiff);
|
||||
}
|
||||
|
||||
mover.RelativeRotation += adjustment;
|
||||
mover.RelativeRotation.FlipPositive();
|
||||
Dirty(mover);
|
||||
}
|
||||
else if (!angleDiff.Equals(Angle.Zero))
|
||||
{
|
||||
mover.TargetRelativeRotation.FlipPositive();
|
||||
mover.RelativeRotation = mover.TargetRelativeRotation;
|
||||
Dirty(mover);
|
||||
}
|
||||
LerpRotation(mover, frameTime);
|
||||
|
||||
if (!canMove
|
||||
|| physicsComponent.BodyStatus != BodyStatus.OnGround
|
||||
@@ -282,6 +254,39 @@ namespace Content.Shared.Movement.Systems
|
||||
PhysicsSystem.SetAngularVelocity(physicsUid, 0, body: physicsComponent);
|
||||
}
|
||||
|
||||
public void LerpRotation(InputMoverComponent mover, float frameTime)
|
||||
{
|
||||
var angleDiff = Angle.ShortestDistance(mover.RelativeRotation, mover.TargetRelativeRotation);
|
||||
|
||||
// if we've just traversed then lerp to our target rotation.
|
||||
if (!angleDiff.EqualsApprox(Angle.Zero, 0.001))
|
||||
{
|
||||
var adjustment = angleDiff * 5f * frameTime;
|
||||
var minAdjustment = 0.01 * frameTime;
|
||||
|
||||
if (angleDiff < 0)
|
||||
{
|
||||
adjustment = Math.Min(adjustment, -minAdjustment);
|
||||
adjustment = Math.Clamp(adjustment, angleDiff, -angleDiff);
|
||||
}
|
||||
else
|
||||
{
|
||||
adjustment = Math.Max(adjustment, minAdjustment);
|
||||
adjustment = Math.Clamp(adjustment, -angleDiff, angleDiff);
|
||||
}
|
||||
|
||||
mover.RelativeRotation += adjustment;
|
||||
mover.RelativeRotation.FlipPositive();
|
||||
Dirty(mover);
|
||||
}
|
||||
else if (!angleDiff.Equals(Angle.Zero))
|
||||
{
|
||||
mover.TargetRelativeRotation.FlipPositive();
|
||||
mover.RelativeRotation = mover.TargetRelativeRotation;
|
||||
Dirty(mover);
|
||||
}
|
||||
}
|
||||
|
||||
private void Friction(float minimumFrictionSpeed, float frameTime, float friction, ref Vector2 velocity)
|
||||
{
|
||||
var speed = velocity.Length;
|
||||
|
||||
Reference in New Issue
Block a user