diff --git a/DungeonShooting_Godot/scene/test/TestMask.tscn b/DungeonShooting_Godot/scene/test/TestMask.tscn index 2fbff95..19d360a 100644 --- a/DungeonShooting_Godot/scene/test/TestMask.tscn +++ b/DungeonShooting_Godot/scene/test/TestMask.tscn @@ -2,9 +2,8 @@ [ext_resource type="Script" path="res://src/test/TestMask.cs" id="1_0yip6"] -[node name="TestMask" type="Node2D"] +[node name="TestMask" type="Node2D" node_paths=PackedStringArray("PolygonNode")] script = ExtResource("1_0yip6") +PolygonNode = NodePath("Polygon2D") -[node name="Sprite2D" type="Sprite2D" parent="."] -modulate = Color(0, 0, 0, 1) -centered = false +[node name="Polygon2D" type="Polygon2D" parent="."] diff --git a/DungeonShooting_Godot/src/test/TestMask.cs b/DungeonShooting_Godot/src/test/TestMask.cs index 9679da0..99bcaf1 100644 --- a/DungeonShooting_Godot/src/test/TestMask.cs +++ b/DungeonShooting_Godot/src/test/TestMask.cs @@ -1,36 +1,63 @@ using Godot; using System; +using System.Linq; +using Godot.Collections; public partial class TestMask : Node2D { - private Sprite2D Sprite; - private Image _image; - private ImageTexture _texture; + [Export] + public Polygon2D PolygonNode; - private Image _maskImage; - private Grid<int> _grid; - + public Array<Vector2[]> Result = new Array<Vector2[]>(); public override void _Ready() { - Sprite = GetNode<Sprite2D>("Sprite2D"); - var size = DisplayServer.WindowGetSize(); - _image = Image.Create(size.X, size.Y, false, Image.Format.Rgba8); - //_image.Fill(Colors.Black); - _texture = ImageTexture.CreateFromImage(_image); - Sprite.Texture = _texture; - _maskImage = ResourceManager.Load<Texture2D>(ResourcePath.icon_png).GetImage(); - //Godot.c - //_grid.set + //Geometry2D. + // var point = new Vector2[] + // { + // new Vector2(0, 0), + // new Vector2(0, 500), + // new Vector2(500, 500), + // new Vector2(500, 0) + // }; + // Result = Geometry2D.ClipPolygons(point, new Vector2[] + // { + // new Vector2(20, 20), + // new Vector2(20, 100), + // new Vector2(90, 50), + // }); + //PolygonNode.Polygon = clipPolygons[0]; } - public override void _Process(double delta) { - if (Input.IsMouseButtonPressed(MouseButton.Left)) + if (Input.IsActionJustPressed("fire")) { - var usedRect = _maskImage.GetUsedRect(); - _image.BlendRect(_maskImage, usedRect, GetLocalMousePosition().AsVector2I() - usedRect.Size / 2); - _texture.Update(_image); + var position = GetGlobalMousePosition(); + Result.Add(new Vector2[] + { + new Vector2(position.X, position.Y), + new Vector2(position.X + 50, position.Y), + new Vector2(position.X + 50, position.Y + 50), + new Vector2(position.X, position.Y + 50), + }); + // Geometry2D.IsPolygonClockwise() + // Geometry2D.MergePolygons() } + QueueRedraw(); + } + + public override void _Draw() + { + if (Result != null) + { + foreach (var vector2s in Result) + { + var list = vector2s.ToList(); + list.Add(vector2s[0]); + DrawPolyline(list.ToArray(), Colors.Red); + } + //DrawColoredPolygon(Result[1], Colors.Red); + } + } }