Follow mouse rotation in combat mode (#20433)
This commit is contained in:
@@ -16,6 +16,7 @@ public abstract class SharedMouseRotatorSystem : EntitySystem
|
||||
base.Initialize();
|
||||
|
||||
SubscribeAllEvent<RequestMouseRotatorRotationEvent>(OnRequestRotation);
|
||||
SubscribeAllEvent<RequestMouseRotatorRotationSimpleEvent>(OnRequestSimpleRotation);
|
||||
}
|
||||
|
||||
public override void Update(float frameTime)
|
||||
@@ -48,13 +49,27 @@ public abstract class SharedMouseRotatorSystem : EntitySystem
|
||||
|
||||
private void OnRequestRotation(RequestMouseRotatorRotationEvent msg, EntitySessionEventArgs args)
|
||||
{
|
||||
if (args.SenderSession.AttachedEntity is not { } ent || !TryComp<MouseRotatorComponent>(ent, out var rotator))
|
||||
if (args.SenderSession.AttachedEntity is not { } ent
|
||||
|| !TryComp<MouseRotatorComponent>(ent, out var rotator) || rotator.Simple4DirMode)
|
||||
{
|
||||
Log.Error($"User {args.SenderSession.Name} ({args.SenderSession.UserId}) tried setting local rotation without a mouse rotator component attached!");
|
||||
Log.Error($"User {args.SenderSession.Name} ({args.SenderSession.UserId}) tried setting local rotation directly without a valid mouse rotator component attached!");
|
||||
return;
|
||||
}
|
||||
|
||||
rotator.GoalRotation = msg.Rotation;
|
||||
Dirty(ent, rotator);
|
||||
}
|
||||
|
||||
private void OnRequestSimpleRotation(RequestMouseRotatorRotationSimpleEvent ev, EntitySessionEventArgs args)
|
||||
{
|
||||
if (args.SenderSession.AttachedEntity is not { } ent
|
||||
|| !TryComp<MouseRotatorComponent>(ent, out var rotator) || !rotator.Simple4DirMode)
|
||||
{
|
||||
Log.Error($"User {args.SenderSession.Name} ({args.SenderSession.UserId}) tried setting 4-dir rotation directly without a valid mouse rotator component attached!");
|
||||
return;
|
||||
}
|
||||
|
||||
rotator.GoalRotation = ev.Direction.ToAngle();
|
||||
Dirty(ent, rotator);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user