Re-organize all projects (#4166)
This commit is contained in:
67
Content.Client/Rotation/RotationVisualizer.cs
Normal file
67
Content.Client/Rotation/RotationVisualizer.cs
Normal file
@@ -0,0 +1,67 @@
|
||||
using System;
|
||||
using Content.Shared.Rotation;
|
||||
using JetBrains.Annotations;
|
||||
using Robust.Client.Animations;
|
||||
using Robust.Client.GameObjects;
|
||||
using Robust.Shared.Animations;
|
||||
using Robust.Shared.Maths;
|
||||
|
||||
namespace Content.Client.Rotation
|
||||
{
|
||||
[UsedImplicitly]
|
||||
public class RotationVisualizer : AppearanceVisualizer
|
||||
{
|
||||
public override void OnChangeData(AppearanceComponent component)
|
||||
{
|
||||
base.OnChangeData(component);
|
||||
|
||||
if (component.TryGetData<RotationState>(RotationVisuals.RotationState, out var state))
|
||||
{
|
||||
switch (state)
|
||||
{
|
||||
case RotationState.Vertical:
|
||||
SetRotation(component, 0);
|
||||
break;
|
||||
case RotationState.Horizontal:
|
||||
SetRotation(component, Angle.FromDegrees(90));
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void SetRotation(AppearanceComponent component, Angle rotation)
|
||||
{
|
||||
var sprite = component.Owner.GetComponent<ISpriteComponent>();
|
||||
|
||||
if (!sprite.Owner.TryGetComponent(out AnimationPlayerComponent? animation))
|
||||
{
|
||||
sprite.Rotation = rotation;
|
||||
return;
|
||||
}
|
||||
|
||||
if (animation.HasRunningAnimation("rotate"))
|
||||
{
|
||||
animation.Stop("rotate");
|
||||
}
|
||||
|
||||
animation.Play(new Animation
|
||||
{
|
||||
Length = TimeSpan.FromSeconds(0.125),
|
||||
AnimationTracks =
|
||||
{
|
||||
new AnimationTrackComponentProperty
|
||||
{
|
||||
ComponentType = typeof(ISpriteComponent),
|
||||
Property = nameof(ISpriteComponent.Rotation),
|
||||
InterpolationMode = AnimationInterpolationMode.Linear,
|
||||
KeyFrames =
|
||||
{
|
||||
new AnimationTrackProperty.KeyFrame(sprite.Rotation, 0),
|
||||
new AnimationTrackProperty.KeyFrame(rotation, 0.125f)
|
||||
}
|
||||
}
|
||||
}
|
||||
}, "rotate");
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user