Code/Vehicle/VehicleController.Client.cs
using Sandbox;
using System;
using System.Collections.Generic;
using System.Linq;

namespace Meteor.VehicleTool.Vehicle;

partial class VehicleController
{
	public static IReadOnlyList<VehicleController> All => _internalPlayers;
	public static List<VehicleController> _internalPlayers = [];

	private Guid _guid;

	[Sync( SyncFlags.FromHost )]
	public Guid ConnectionID
	{
		get => _guid;
		set
		{
			_guid = value;
			Connection = Connection.Find( _guid );

			if ( !_internalPlayers.Contains( this ) )
				_internalPlayers.Add( this );
		}
	}

	public Connection Connection { get; private set; }

	public ulong SteamID => Connection.SteamId;
	public string Name => Connection.DisplayName;

	public void SetupConnection( Connection connection )
	{
		ConnectionID = connection.Id;
		GameObject.Name = $"{Name} / {SteamID}";
	}

	public static VehicleController GetByID( Guid id )
		=> _internalPlayers.FirstOrDefault( x => x.ConnectionID == id );
}