private void OnProxAnimation(EntityUid uid, TriggerOnProximityComponent component, AnimationCompletedEvent args) { if (!TryComp <AppearanceComponent>(uid, out var appearance)) { return; } // So animation doesn't get spammed if no server state comes in. appearance.SetData(ProximityTriggerVisualState.State, ProximityTriggerVisuals.Inactive); OnChangeData(uid, component, appearance); }
private void OnChangeData(EntityUid uid, TriggerOnProximityComponent component, AppearanceComponent appearance) { if (!TryComp <SpriteComponent>(component.Owner, out var spriteComponent)) { return; } TryComp <AnimationPlayerComponent>(component.Owner, out var player); appearance.TryGetData(ProximityTriggerVisualState.State, out ProximityTriggerVisuals state); switch (state) { case ProximityTriggerVisuals.Inactive: // Don't interrupt the flash animation if (_player.HasRunningAnimation(uid, player, AnimKey)) { return; } _player.Stop(uid, player, AnimKey); spriteComponent.LayerSetState(ProximityTriggerVisualLayers.Base, "on"); break; case ProximityTriggerVisuals.Active: if (_player.HasRunningAnimation(uid, player, AnimKey)) { return; } _player.Play(uid, player, _flasherAnimation, AnimKey); break; case ProximityTriggerVisuals.Off: default: _player.Stop(uid, player, AnimKey); spriteComponent.LayerSetState(ProximityTriggerVisualLayers.Base, "off"); break; } }
private void OnProxAppChange(EntityUid uid, TriggerOnProximityComponent component, ref AppearanceChangeEvent args) { OnChangeData(uid, component, args.Component); }
private void OnProximityInit(EntityUid uid, TriggerOnProximityComponent component, ComponentInit args) { EntityManager.EnsureComponent <AnimationPlayerComponent>(uid); }