using Godot; public partial class ResearchList : PanelContainer { [Export] GraphEdit researchGraph; public override void _Ready() { foreach (ResearchData research in GameData.availableResearch.Values) { researchGraph.AddChild(CreateItemNode(research.Id, research.Texture)); } foreach (ResearchData research in GameData.availableResearch.Values) { researchGraph.ConnectNode( research.Research, 0, research.Id, 0 ); } } public override void _Process(double delta) { } private GraphNode CreateItemNode(string id, string texturePath) { TextureRect icon = new TextureRect { Texture = GD.Load(texturePath), StretchMode = TextureRect.StretchModeEnum.KeepAspectCentered }; GraphNode node = new GraphNode { Name = id, Title = id, PositionOffset = new Vector2(GameData.availableResearch.Count * -icon.Texture.GetWidth() + researchGraph.GetChildCount() * icon.Texture.GetWidth() * 10, 0) }; node.SetSlot( 0, true, 0, Colors.White, true, 0, Colors.White ); node.AddChild(icon); return node; } }