Files
RobustToolbox/Robust.Shared/Player/ActorSystem.cs
slarticodefast 4747e5a05a Add and update a lot of documentation (#6337)
* Serialization docs

Co-authored-by: Moony <moonheart08@users.noreply.github.com>

* ECS docs

Co-authored-by: Moony <moonheart08@users.noreply.github.com>

* scattered docs

Co-authored-by: Moony <moonheart08@users.noreply.github.com>

* Fixes

---------

Co-authored-by: Moony <moonheart08@users.noreply.github.com>
Co-authored-by: PJB3005 <pieterjan.briers+git@gmail.com>
2025-12-15 20:26:17 +01:00

56 lines
1.4 KiB
C#

using JetBrains.Annotations;
using Robust.Shared.GameObjects;
using Robust.Shared.IoC;
namespace Robust.Shared.Player;
/// <summary>
/// System that handles <see cref="ActorComponent"/>.
/// </summary>
public sealed class ActorSystem : EntitySystem
{
[Dependency] private readonly ISharedPlayerManager _playerManager = default!;
public override void Initialize()
{
base.Initialize();
SubscribeLocalEvent<ActorComponent, ComponentShutdown>(OnActorShutdown);
}
private void OnActorShutdown(EntityUid entity, ActorComponent component, ComponentShutdown args)
{
_playerManager.SetAttachedEntity(component.PlayerSession, null);
}
/// <summary>
/// Retrieves the session on a given entity, if one exists.
/// </summary>
[PublicAPI]
public bool TryGetSession(EntityUid? uid, out ICommonSession? session)
{
if (TryComp(uid, out ActorComponent? actorComp))
{
session = actorComp.PlayerSession;
return true;
}
session = null;
return false;
}
/// <summary>
/// Retrieves the session on a given entity, if one exists.
/// </summary>
[PublicAPI]
[Pure]
public ICommonSession? GetSession(EntityUid? uid)
{
if (TryComp(uid, out ActorComponent? actorComp))
{
return actorComp.PlayerSession;
}
return null;
}
}