Example #1
0
        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();
            }
        }
    }