public override void _Ready() { var biomes = GetChildren(); Array[] tilesTemp = new Array[biomes.Count]; int index = 0; int count = 0; foreach (var b in biomes.OfType <Node2D>()) { tilesTemp[index] = b.GetChildren(); count += tilesTemp[index].Count; index++; } tiles = new GroundTileScript[count]; index = 0; foreach (var gts in tilesTemp.OfType <GroundTileScript>()) { tiles[index] = gts; } size = tiles.Count(); GD.Print(size); }
private void Polygonize_ButtonClicked() { List <CollisionPolygon2D> addedPolygons = new List <CollisionPolygon2D>(); Array selectedNodes = GetEditorInterface().GetSelection().GetSelectedNodes(); GetEditorInterface().GetSelection().Clear(); foreach (Sprite sprite in selectedNodes.OfType <Sprite>()) { List <Vector2> polygon = _polygonizer.Scan(sprite); CollisionPolygon2D polygon2D = new CollisionPolygon2D(); Node parent = sprite.GetParent(); int targetNodePosition = parent.GetChildren().Cast <Node>().ToList().FindIndex(n => n == sprite); polygon2D.Polygon = polygon.ToArray(); polygon2D.Position = GetTargetPolygonGlobalPosition(sprite); polygon2D.Rotation = sprite.Rotation; polygon2D.Scale = sprite.Scale; polygon2D.Name = "CollisionPolygon2D"; parent.AddChild(polygon2D); parent.MoveChild(polygon2D, targetNodePosition + 1); polygon2D.Owner = GetTree().EditedSceneRoot; addedPolygons.Add(polygon2D); } if (addedPolygons.Count > 0) { foreach (CollisionPolygon2D node in addedPolygons) { GetEditorInterface().GetSelection().AddNode(node); node.Update(); } } }