* Optimise emergency lights a bit * Fixes * Delete the failing test, sinple * Revert "Delete the failing test, sinple" This reverts commit 7d9e3a3bb6975c15add2987e39e0d3ba85d88be3. * Start server and fix test It just werks
49 lines
1.7 KiB
C#
49 lines
1.7 KiB
C#
using System;
|
|
using JetBrains.Annotations;
|
|
using Robust.Client.Animations;
|
|
using Robust.Client.GameObjects;
|
|
using Robust.Shared.Animations;
|
|
using Robust.Shared.GameObjects;
|
|
|
|
namespace Content.Client.Light
|
|
{
|
|
[UsedImplicitly]
|
|
public class LanternVisualizer : AppearanceVisualizer
|
|
{
|
|
private readonly Animation _radiatingLightAnimation = new()
|
|
{
|
|
Length = TimeSpan.FromSeconds(5),
|
|
AnimationTracks =
|
|
{
|
|
new AnimationTrackComponentProperty
|
|
{
|
|
ComponentType = typeof(PointLightComponent),
|
|
InterpolationMode = AnimationInterpolationMode.Linear,
|
|
Property = nameof(PointLightComponent.Radius),
|
|
KeyFrames =
|
|
{
|
|
new AnimationTrackProperty.KeyFrame(3.0f, 0),
|
|
new AnimationTrackProperty.KeyFrame(2.0f, 1.5f),
|
|
new AnimationTrackProperty.KeyFrame(3.0f, 3f)
|
|
}
|
|
}
|
|
}
|
|
};
|
|
|
|
public override void OnChangeData(AppearanceComponent component)
|
|
{
|
|
base.OnChangeData(component);
|
|
|
|
PlayAnimation(component);
|
|
}
|
|
|
|
private void PlayAnimation(AppearanceComponent component)
|
|
{
|
|
component.Owner.EnsureComponent(out AnimationPlayerComponent animationPlayer);
|
|
if (animationPlayer.HasRunningAnimation("radiatingLight")) return;
|
|
animationPlayer.Play(_radiatingLightAnimation, "radiatingLight");
|
|
animationPlayer.AnimationCompleted += s => animationPlayer.Play(_radiatingLightAnimation, s);
|
|
}
|
|
}
|
|
}
|