UI/Panels/BugList/BugListEntry.razor
@using System;
@using Sandbox;
@using Sandbox.UI;
@namespace Battlebugs
@inherits Panel
@attribute [StyleSheet]

<root>
	@for (int i = 0; i < Bug.SegmentCount; i++)
	{
		<BugListSegment SegmentObject=@GetObject( BugReference.ObjectIds[Bug.SegmentCount - 1 - i] ) Bug=@Bug Index=@i />
	}
</root>

@code
{
	public BoardManager.BugReference BugReference { get; set; }

	BugResource Bug => BugReference.GetBug();
	Dictionary<string, GameObject> _gameObjects = new();

	GameObject GetObject(string id)
	{
		if (!_gameObjects.TryGetValue(id, out var obj))
		{
			obj = Scene.Directory.FindByGuid(Guid.Parse(id));
			_gameObjects[id] = obj;
		}
		return obj;
	}

	protected override int BuildHash() => System.HashCode.Combine(BugReference);
}