diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 0000000..f28239b --- /dev/null +++ b/.editorconfig @@ -0,0 +1,4 @@ +root = true + +[*] +charset = utf-8 diff --git a/.gitattributes b/.gitattributes index dfe0770..8ad74f7 100644 --- a/.gitattributes +++ b/.gitattributes @@ -1,2 +1,2 @@ -# Auto detect text files and perform LF normalization -* text=auto +# Normalize EOL for all files that Git considers text files. +* text=auto eol=lf diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..0af181c --- /dev/null +++ b/.gitignore @@ -0,0 +1,3 @@ +# Godot 4+ specific ignores +.godot/ +/android/ diff --git a/addons/godot-donut-collision-polygon-2d-7780d026ae3d4a37fe68f43cc1f97ba664dd775d/addons/donut_collision_polygon2D/LICENSE b/addons/godot-donut-collision-polygon-2d-7780d026ae3d4a37fe68f43cc1f97ba664dd775d/addons/donut_collision_polygon2D/LICENSE new file mode 100644 index 0000000..e7dab16 --- /dev/null +++ b/addons/godot-donut-collision-polygon-2d-7780d026ae3d4a37fe68f43cc1f97ba664dd775d/addons/donut_collision_polygon2D/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2021 angrykoala + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/addons/godot-donut-collision-polygon-2d-7780d026ae3d4a37fe68f43cc1f97ba664dd775d/addons/donut_collision_polygon2D/README.md b/addons/godot-donut-collision-polygon-2d-7780d026ae3d4a37fe68f43cc1f97ba664dd775d/addons/donut_collision_polygon2D/README.md new file mode 100644 index 0000000..0a6b4ae --- /dev/null +++ b/addons/godot-donut-collision-polygon-2d-7780d026ae3d4a37fe68f43cc1f97ba664dd775d/addons/donut_collision_polygon2D/README.md @@ -0,0 +1,26 @@ +# Donut Collision Polygon 2D for Godot +_by @angrykoala_ +A donut-shaped collision shape for Godot. + +This plugin creates a new Node type for a donut collision shape for 2D collisions. + +![Donut Example](screenshots/donut_example.png) + +![Donut Rectangle](screenshots/donut_rectangle_example.png) + +## Instructions + +1. Add the folder `donut_collision_polygon2D` to `addons/`. +2. Activate the plugin in [Godot](https://docs.godotengine.org/en/stable/tutorials/plugins/editor/installing_plugins.html). +3. Create any collision or physics 2D node (e.g. `Area2D` or `RigidBody2D`). +4. Add a `DonutCollisionPolygon2D` or `DonutCollisionRectangle2D` as child. +![Tree Example](screenshots/tree_example.png) + +## Properties + +* **radius**: Defines the radius of the donut. This will be the circumference at the **center** of the donut. +* **width**: The width of the donut. +* **quality**: The number of points to use **per circumference**. The total points count will be `quality*2+1`. + +## License +Made by [@angrykoala](https://github.com/angrykoala). [MIT License](LICENSE) diff --git a/addons/godot-donut-collision-polygon-2d-7780d026ae3d4a37fe68f43cc1f97ba664dd775d/addons/donut_collision_polygon2D/donut_collision_polygon2D.gd b/addons/godot-donut-collision-polygon-2d-7780d026ae3d4a37fe68f43cc1f97ba664dd775d/addons/donut_collision_polygon2D/donut_collision_polygon2D.gd new file mode 100644 index 0000000..b974b45 --- /dev/null +++ b/addons/godot-donut-collision-polygon-2d-7780d026ae3d4a37fe68f43cc1f97ba664dd775d/addons/donut_collision_polygon2D/donut_collision_polygon2D.gd @@ -0,0 +1,48 @@ +@tool +class_name DonutCollisionPolygon2D +extends CollisionPolygon2D +## A Collider in the shape of a Donut + +@export var radius: float = 10.0: + set(rad): + radius = rad + update_polygons() +@export var width: float = 2.0: + set(w): + width = w + update_polygons() +@export_range(5, 256) var quality: int = 32: + set(q): + quality = q + update_polygons() + + +func _ready() -> void: + build_mode = CollisionPolygon2D.BUILD_SOLIDS + update_polygons() + + +func update_polygons() -> void: + var points := get_polygon_points(Vector2(0,0), radius) + polygon = points + + +func get_polygon_points(center: Vector2, radius: float) -> PackedVector2Array: + var half_width := width / 2 + var inner_circle := get_circle_points(center, radius - half_width) + var outer_circle := get_circle_points(center, radius + half_width) + inner_circle.reverse() + var points := PackedVector2Array() + points.append_array(outer_circle) + points.append_array(inner_circle) + points.append(outer_circle[0] + Vector2(0.0001, 0.0001)) + return points + + +func get_circle_points(center: Vector2, radius: float, angle_from: float = 0, angle_to: float = 360) -> PackedVector2Array: + var nb_points := 16 + var points_arc := PackedVector2Array() + for i in range(quality + 1): + var angle_point := deg_to_rad(angle_from + i * (angle_to - angle_from) / quality - 90) + points_arc.push_back(center + Vector2(cos(angle_point), sin(angle_point)) * radius) + return points_arc diff --git a/addons/godot-donut-collision-polygon-2d-7780d026ae3d4a37fe68f43cc1f97ba664dd775d/addons/donut_collision_polygon2D/donut_collision_polygon2D.gd.uid b/addons/godot-donut-collision-polygon-2d-7780d026ae3d4a37fe68f43cc1f97ba664dd775d/addons/donut_collision_polygon2D/donut_collision_polygon2D.gd.uid new file mode 100644 index 0000000..ac83647 --- /dev/null +++ b/addons/godot-donut-collision-polygon-2d-7780d026ae3d4a37fe68f43cc1f97ba664dd775d/addons/donut_collision_polygon2D/donut_collision_polygon2D.gd.uid @@ -0,0 +1 @@ +uid://deq18nev0kwbg diff --git a/addons/godot-donut-collision-polygon-2d-7780d026ae3d4a37fe68f43cc1f97ba664dd775d/addons/donut_collision_polygon2D/donut_collision_polygon2D.svg b/addons/godot-donut-collision-polygon-2d-7780d026ae3d4a37fe68f43cc1f97ba664dd775d/addons/donut_collision_polygon2D/donut_collision_polygon2D.svg new file mode 100644 index 0000000..f9a8ea0 --- /dev/null +++ b/addons/godot-donut-collision-polygon-2d-7780d026ae3d4a37fe68f43cc1f97ba664dd775d/addons/donut_collision_polygon2D/donut_collision_polygon2D.svg @@ -0,0 +1,4 @@ + + + + diff --git a/addons/godot-donut-collision-polygon-2d-7780d026ae3d4a37fe68f43cc1f97ba664dd775d/addons/donut_collision_polygon2D/donut_collision_polygon2D.svg.import b/addons/godot-donut-collision-polygon-2d-7780d026ae3d4a37fe68f43cc1f97ba664dd775d/addons/donut_collision_polygon2D/donut_collision_polygon2D.svg.import new file mode 100644 index 0000000..9ef15e4 --- /dev/null +++ b/addons/godot-donut-collision-polygon-2d-7780d026ae3d4a37fe68f43cc1f97ba664dd775d/addons/donut_collision_polygon2D/donut_collision_polygon2D.svg.import @@ -0,0 +1,37 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bcwggi4xo00lm" +path="res://.godot/imported/donut_collision_polygon2D.svg-84f3efc5ce2b2fce93bc5753624e2eb6.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://addons/godot-donut-collision-polygon-2d-7780d026ae3d4a37fe68f43cc1f97ba664dd775d/addons/donut_collision_polygon2D/donut_collision_polygon2D.svg" +dest_files=["res://.godot/imported/donut_collision_polygon2D.svg-84f3efc5ce2b2fce93bc5753624e2eb6.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 +svg/scale=1.0 +editor/scale_with_editor_scale=false +editor/convert_colors_with_editor_theme=false diff --git a/addons/godot-donut-collision-polygon-2d-7780d026ae3d4a37fe68f43cc1f97ba664dd775d/addons/donut_collision_polygon2D/donut_collision_rectangle2D.gd b/addons/godot-donut-collision-polygon-2d-7780d026ae3d4a37fe68f43cc1f97ba664dd775d/addons/donut_collision_polygon2D/donut_collision_rectangle2D.gd new file mode 100644 index 0000000..d8d0d94 --- /dev/null +++ b/addons/godot-donut-collision-polygon-2d-7780d026ae3d4a37fe68f43cc1f97ba664dd775d/addons/donut_collision_polygon2D/donut_collision_rectangle2D.gd @@ -0,0 +1,46 @@ +@tool +class_name DonutCollisionRectangle +extends CollisionPolygon2D +## A Collider in the shape of a Rectangle with a hole in the middle + +@export var size := Vector2(10.0, 20.0): + set(new_size): + size = new_size + update_polygons() +@export var width: float = 2.0: + set(new_width): + width = new_width + update_polygons() + + +func _ready() -> void: + build_mode = CollisionPolygon2D.BUILD_SOLIDS + update_polygons() + + +func update_polygons() -> void: + var points := get_rectangle_points(size) + polygon = points + + +func get_rectangle_points(size: Vector2) -> PackedVector2Array: + var half_width := width / 2 + var inner_rectangle := get_rectangle_corners(size - Vector2(half_width, half_width)) + var outer_rectangle := get_rectangle_corners(size + Vector2(half_width, half_width)) + inner_rectangle.reverse() + var points := PackedVector2Array() + points.append_array(outer_rectangle) + points.append(outer_rectangle[0]) # Connect the last point of the outer rectangle to the first point + points.append_array(inner_rectangle) + points.append(inner_rectangle[0]) # Connect the last point of the inner rectangle to the first point + return points + + +func get_rectangle_corners(size: Vector2) -> PackedVector2Array: + var half_size := size / 2 + var points := PackedVector2Array() + points.push_back(Vector2(-half_size.x, -half_size.y)) + points.push_back(Vector2(half_size.x, -half_size.y)) + points.push_back(Vector2(half_size.x, half_size.y)) + points.push_back(Vector2(-half_size.x, half_size.y)) + return points diff --git a/addons/godot-donut-collision-polygon-2d-7780d026ae3d4a37fe68f43cc1f97ba664dd775d/addons/donut_collision_polygon2D/donut_collision_rectangle2D.gd.uid b/addons/godot-donut-collision-polygon-2d-7780d026ae3d4a37fe68f43cc1f97ba664dd775d/addons/donut_collision_polygon2D/donut_collision_rectangle2D.gd.uid new file mode 100644 index 0000000..e339419 --- /dev/null +++ b/addons/godot-donut-collision-polygon-2d-7780d026ae3d4a37fe68f43cc1f97ba664dd775d/addons/donut_collision_polygon2D/donut_collision_rectangle2D.gd.uid @@ -0,0 +1 @@ +uid://dtfe5w8mxp05m diff --git a/addons/godot-donut-collision-polygon-2d-7780d026ae3d4a37fe68f43cc1f97ba664dd775d/addons/donut_collision_polygon2D/donut_collision_rectangle2D.svg b/addons/godot-donut-collision-polygon-2d-7780d026ae3d4a37fe68f43cc1f97ba664dd775d/addons/donut_collision_polygon2D/donut_collision_rectangle2D.svg new file mode 100644 index 0000000..41bd76c --- /dev/null +++ b/addons/godot-donut-collision-polygon-2d-7780d026ae3d4a37fe68f43cc1f97ba664dd775d/addons/donut_collision_polygon2D/donut_collision_rectangle2D.svg @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/addons/godot-donut-collision-polygon-2d-7780d026ae3d4a37fe68f43cc1f97ba664dd775d/addons/donut_collision_polygon2D/donut_collision_rectangle2D.svg.import b/addons/godot-donut-collision-polygon-2d-7780d026ae3d4a37fe68f43cc1f97ba664dd775d/addons/donut_collision_polygon2D/donut_collision_rectangle2D.svg.import new file mode 100644 index 0000000..ab95bec --- /dev/null +++ b/addons/godot-donut-collision-polygon-2d-7780d026ae3d4a37fe68f43cc1f97ba664dd775d/addons/donut_collision_polygon2D/donut_collision_rectangle2D.svg.import @@ -0,0 +1,37 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dn8hljsdwd42q" +path="res://.godot/imported/donut_collision_rectangle2D.svg-1850bd2eee6a5b0e414b6b5601b42d81.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://addons/godot-donut-collision-polygon-2d-7780d026ae3d4a37fe68f43cc1f97ba664dd775d/addons/donut_collision_polygon2D/donut_collision_rectangle2D.svg" +dest_files=["res://.godot/imported/donut_collision_rectangle2D.svg-1850bd2eee6a5b0e414b6b5601b42d81.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 +svg/scale=1.0 +editor/scale_with_editor_scale=false +editor/convert_colors_with_editor_theme=false diff --git a/addons/godot-donut-collision-polygon-2d-7780d026ae3d4a37fe68f43cc1f97ba664dd775d/addons/donut_collision_polygon2D/plugin.cfg b/addons/godot-donut-collision-polygon-2d-7780d026ae3d4a37fe68f43cc1f97ba664dd775d/addons/donut_collision_polygon2D/plugin.cfg new file mode 100644 index 0000000..6dac55d --- /dev/null +++ b/addons/godot-donut-collision-polygon-2d-7780d026ae3d4a37fe68f43cc1f97ba664dd775d/addons/donut_collision_polygon2D/plugin.cfg @@ -0,0 +1,7 @@ +[plugin] + +name="DonutCollisionPolygon2D" +description="A donut-shaped collision polygon" +author="angrykoala" +version="1.2" +script="plugin.gd" diff --git a/addons/godot-donut-collision-polygon-2d-7780d026ae3d4a37fe68f43cc1f97ba664dd775d/addons/donut_collision_polygon2D/plugin.gd b/addons/godot-donut-collision-polygon-2d-7780d026ae3d4a37fe68f43cc1f97ba664dd775d/addons/donut_collision_polygon2D/plugin.gd new file mode 100644 index 0000000..9f23fc6 --- /dev/null +++ b/addons/godot-donut-collision-polygon-2d-7780d026ae3d4a37fe68f43cc1f97ba664dd775d/addons/donut_collision_polygon2D/plugin.gd @@ -0,0 +1,11 @@ +@tool +extends EditorPlugin + +func _enter_tree(): + add_custom_type("DonutCollisionPolygon2D", "CollisionPolygon2D", preload("donut_collision_polygon2D.gd"), preload("donut_collision_polygon2D.svg")) + add_custom_type("DonutCollisionRectangle2D", "CollisionPolygon2D", preload("donut_collision_rectangle2D.gd"),preload("donut_collision_rectangle2D.svg")) + + +func _exit_tree(): + remove_custom_type("DonutCollisionPolygon2D") + remove_custom_type("DonutCollisionRectangle2D") diff --git a/addons/godot-donut-collision-polygon-2d-7780d026ae3d4a37fe68f43cc1f97ba664dd775d/addons/donut_collision_polygon2D/plugin.gd.uid b/addons/godot-donut-collision-polygon-2d-7780d026ae3d4a37fe68f43cc1f97ba664dd775d/addons/donut_collision_polygon2D/plugin.gd.uid new file mode 100644 index 0000000..89fd2e8 --- /dev/null +++ b/addons/godot-donut-collision-polygon-2d-7780d026ae3d4a37fe68f43cc1f97ba664dd775d/addons/donut_collision_polygon2D/plugin.gd.uid @@ -0,0 +1 @@ +uid://be3xoruguvh4v diff --git a/addons/godot-donut-collision-polygon-2d-7780d026ae3d4a37fe68f43cc1f97ba664dd775d/default_env.tres b/addons/godot-donut-collision-polygon-2d-7780d026ae3d4a37fe68f43cc1f97ba664dd775d/default_env.tres new file mode 100644 index 0000000..20207a4 --- /dev/null +++ b/addons/godot-donut-collision-polygon-2d-7780d026ae3d4a37fe68f43cc1f97ba664dd775d/default_env.tres @@ -0,0 +1,7 @@ +[gd_resource type="Environment" load_steps=2 format=2] + +[sub_resource type="ProceduralSky" id=1] + +[resource] +background_mode = 2 +background_sky = SubResource( 1 ) diff --git a/addons/godot-donut-collision-polygon-2d-7780d026ae3d4a37fe68f43cc1f97ba664dd775d/example/example.tscn b/addons/godot-donut-collision-polygon-2d-7780d026ae3d4a37fe68f43cc1f97ba664dd775d/example/example.tscn new file mode 100644 index 0000000..7540c60 --- /dev/null +++ b/addons/godot-donut-collision-polygon-2d-7780d026ae3d4a37fe68f43cc1f97ba664dd775d/example/example.tscn @@ -0,0 +1,26 @@ +[gd_scene load_steps=4 format=3 uid="uid://drd1j4dv673ld"] + +[ext_resource type="Script" path="res://example/example_area.gd" id="1"] +[ext_resource type="Script" path="res://addons/donut_collision_polygon2D/donut_collision_polygon2D.gd" id="2"] +[ext_resource type="Texture2D" uid="uid://xfkvttl8cxns" path="res://addons/godot-donut-collision-polygon-2d-7780d026ae3d4a37fe68f43cc1f97ba664dd775d/example/icon.png" id="3"] + +[node name="Example" type="Node2D"] + +[node name="Area2D" type="Area2D" parent="."] +script = ExtResource("1") + +[node name="DonutCollisionPolygon2D" type="CollisionPolygon2D" parent="Area2D"] +polygon = PackedVector2Array(1.01033e-14, -165, 32.1899, -161.83, 63.1428, -152.44, 91.6691, -137.192, 116.673, -116.673, 137.192, -91.6691, 152.44, -63.1428, 161.83, -32.1899, 165, 0, 161.83, 32.1899, 152.44, 63.1428, 137.192, 91.6691, 116.673, 116.673, 91.6691, 137.192, 63.1428, 152.44, 32.1899, 161.83, 1.01033e-14, 165, -32.1899, 161.83, -63.1428, 152.44, -91.6691, 137.192, -116.673, 116.673, -137.192, 91.6691, -152.44, 63.1428, -161.83, 32.1899, -165, 2.02067e-14, -161.83, -32.1899, -152.44, -63.1428, -137.192, -91.6691, -116.673, -116.673, -91.6691, -137.192, -63.1428, -152.44, -32.1899, -161.83, -3.031e-14, -165, -2.47991e-14, -135, -26.3372, -132.406, -51.6623, -124.724, -75.002, -112.248, -95.4594, -95.4594, -112.248, -75.002, -124.724, -51.6623, -132.406, -26.3372, -135, 1.65327e-14, -132.406, 26.3372, -124.724, 51.6623, -112.248, 75.002, -95.4594, 95.4594, -75.002, 112.248, -51.6623, 124.724, -26.3372, 132.406, 8.26637e-15, 135, 26.3372, 132.406, 51.6623, 124.724, 75.002, 112.248, 95.4594, 95.4594, 112.248, 75.002, 124.724, 51.6623, 132.406, 26.3372, 135, 0, 132.406, -26.3372, 124.724, -51.6623, 112.248, -75.002, 95.4594, -95.4594, 75.002, -112.248, 51.6623, -124.724, 26.3372, -132.406, 8.26637e-15, -135, 0.0001, -165) +script = ExtResource("2") +radius = 150.0 +width = 30.0 + +[node name="Camera2D" type="Camera2D" parent="."] + +[node name="icon" type="Sprite2D" parent="."] +scale = Vector2(3, 3) +texture = ExtResource("3") + +[connection signal="input_event" from="Area2D" to="Area2D" method="_on_input_event"] +[connection signal="mouse_entered" from="Area2D" to="Area2D" method="_on_mouse_enter"] +[connection signal="mouse_exited" from="Area2D" to="Area2D" method="_on_mouse_exit"] diff --git a/addons/godot-donut-collision-polygon-2d-7780d026ae3d4a37fe68f43cc1f97ba664dd775d/example/example_area.gd b/addons/godot-donut-collision-polygon-2d-7780d026ae3d4a37fe68f43cc1f97ba664dd775d/example/example_area.gd new file mode 100644 index 0000000..4215bbc --- /dev/null +++ b/addons/godot-donut-collision-polygon-2d-7780d026ae3d4a37fe68f43cc1f97ba664dd775d/example/example_area.gd @@ -0,0 +1,16 @@ +extends Area2D + + +func _on_mouse_enter() -> void: + print("Mouse Enter") + + +func _on_mouse_exit() -> void: + print("Mouse Exit") + + +func _on_input_event(_viewport: Node, event: InputEvent, _shape_idx: int) -> void: + if event is InputEventMouseButton \ + and event.button_index == MOUSE_BUTTON_LEFT \ + and event.is_pressed(): + print("On Mouse Click") diff --git a/addons/godot-donut-collision-polygon-2d-7780d026ae3d4a37fe68f43cc1f97ba664dd775d/example/example_area.gd.uid b/addons/godot-donut-collision-polygon-2d-7780d026ae3d4a37fe68f43cc1f97ba664dd775d/example/example_area.gd.uid new file mode 100644 index 0000000..380653d --- /dev/null +++ b/addons/godot-donut-collision-polygon-2d-7780d026ae3d4a37fe68f43cc1f97ba664dd775d/example/example_area.gd.uid @@ -0,0 +1 @@ +uid://duxotjfepjkfh diff --git a/addons/godot-donut-collision-polygon-2d-7780d026ae3d4a37fe68f43cc1f97ba664dd775d/example/example_square.tscn b/addons/godot-donut-collision-polygon-2d-7780d026ae3d4a37fe68f43cc1f97ba664dd775d/example/example_square.tscn new file mode 100644 index 0000000..8d45193 --- /dev/null +++ b/addons/godot-donut-collision-polygon-2d-7780d026ae3d4a37fe68f43cc1f97ba664dd775d/example/example_square.tscn @@ -0,0 +1,26 @@ +[gd_scene load_steps=4 format=3 uid="uid://vogtjcpnjohc"] + +[ext_resource type="Script" path="res://example/example_area.gd" id="1_fnxl8"] +[ext_resource type="Script" path="res://addons/donut_collision_polygon2D/donut_collision_rectangle2D.gd" id="2_xud1h"] +[ext_resource type="Texture2D" uid="uid://xfkvttl8cxns" path="res://addons/godot-donut-collision-polygon-2d-7780d026ae3d4a37fe68f43cc1f97ba664dd775d/example/icon.png" id="3_qnowy"] + +[node name="ExampleSquare" type="Node2D"] + +[node name="Area2D" type="Area2D" parent="."] +script = ExtResource("1_fnxl8") + +[node name="DonutCollisionRectangle2D" type="CollisionPolygon2D" parent="Area2D"] +polygon = PackedVector2Array(-160, -160, 160, -160, 160, 160, -160, 160, -160, -160, -140, 140, 140, 140, 140, -140, -140, -140, -140, 140) +script = ExtResource("2_xud1h") +size = Vector2(300, 300) +width = 40.0 + +[node name="Camera2D" type="Camera2D" parent="."] + +[node name="icon" type="Sprite2D" parent="."] +scale = Vector2(3, 3) +texture = ExtResource("3_qnowy") + +[connection signal="input_event" from="Area2D" to="Area2D" method="_on_input_event"] +[connection signal="mouse_entered" from="Area2D" to="Area2D" method="_on_mouse_enter"] +[connection signal="mouse_exited" from="Area2D" to="Area2D" method="_on_mouse_exit"] diff --git a/addons/godot-donut-collision-polygon-2d-7780d026ae3d4a37fe68f43cc1f97ba664dd775d/example/icon.png b/addons/godot-donut-collision-polygon-2d-7780d026ae3d4a37fe68f43cc1f97ba664dd775d/example/icon.png new file mode 100644 index 0000000..c98fbb6 Binary files /dev/null and b/addons/godot-donut-collision-polygon-2d-7780d026ae3d4a37fe68f43cc1f97ba664dd775d/example/icon.png differ diff --git a/addons/godot-donut-collision-polygon-2d-7780d026ae3d4a37fe68f43cc1f97ba664dd775d/example/icon.png.import b/addons/godot-donut-collision-polygon-2d-7780d026ae3d4a37fe68f43cc1f97ba664dd775d/example/icon.png.import new file mode 100644 index 0000000..8240509 --- /dev/null +++ b/addons/godot-donut-collision-polygon-2d-7780d026ae3d4a37fe68f43cc1f97ba664dd775d/example/icon.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://xfkvttl8cxns" +path="res://.godot/imported/icon.png-7eea17e57ed3675faa8b72817d0880ed.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://addons/godot-donut-collision-polygon-2d-7780d026ae3d4a37fe68f43cc1f97ba664dd775d/example/icon.png" +dest_files=["res://.godot/imported/icon.png-7eea17e57ed3675faa8b72817d0880ed.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/addons/godot-donut-collision-polygon-2d-7780d026ae3d4a37fe68f43cc1f97ba664dd775d/icon.png.import b/addons/godot-donut-collision-polygon-2d-7780d026ae3d4a37fe68f43cc1f97ba664dd775d/icon.png.import new file mode 100644 index 0000000..8696800 --- /dev/null +++ b/addons/godot-donut-collision-polygon-2d-7780d026ae3d4a37fe68f43cc1f97ba664dd775d/icon.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://byywtrj3eq3wm" +path="res://.godot/imported/icon.png-487276ed1e3a0c39cad0279d744ee560.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://icon.png" +dest_files=["res://.godot/imported/icon.png-487276ed1e3a0c39cad0279d744ee560.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/addons/godot-donut-collision-polygon-2d-7780d026ae3d4a37fe68f43cc1f97ba664dd775d/screenshots/.gdignore b/addons/godot-donut-collision-polygon-2d-7780d026ae3d4a37fe68f43cc1f97ba664dd775d/screenshots/.gdignore new file mode 100644 index 0000000..e69de29 diff --git a/addons/godot-donut-collision-polygon-2d-7780d026ae3d4a37fe68f43cc1f97ba664dd775d/screenshots/donut_example.png b/addons/godot-donut-collision-polygon-2d-7780d026ae3d4a37fe68f43cc1f97ba664dd775d/screenshots/donut_example.png new file mode 100644 index 0000000..60217b0 Binary files /dev/null and b/addons/godot-donut-collision-polygon-2d-7780d026ae3d4a37fe68f43cc1f97ba664dd775d/screenshots/donut_example.png differ diff --git a/addons/godot-donut-collision-polygon-2d-7780d026ae3d4a37fe68f43cc1f97ba664dd775d/screenshots/donut_example.png.import b/addons/godot-donut-collision-polygon-2d-7780d026ae3d4a37fe68f43cc1f97ba664dd775d/screenshots/donut_example.png.import new file mode 100644 index 0000000..0a48c9b --- /dev/null +++ b/addons/godot-donut-collision-polygon-2d-7780d026ae3d4a37fe68f43cc1f97ba664dd775d/screenshots/donut_example.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/donut_example.png-e10c5658522da25266912e65fd566f17.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://screenshots/donut_example.png" +dest_files=[ "res://.import/donut_example.png-e10c5658522da25266912e65fd566f17.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=true +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/addons/godot-donut-collision-polygon-2d-7780d026ae3d4a37fe68f43cc1f97ba664dd775d/screenshots/donut_rectangle.png b/addons/godot-donut-collision-polygon-2d-7780d026ae3d4a37fe68f43cc1f97ba664dd775d/screenshots/donut_rectangle.png new file mode 100644 index 0000000..3b25e75 Binary files /dev/null and b/addons/godot-donut-collision-polygon-2d-7780d026ae3d4a37fe68f43cc1f97ba664dd775d/screenshots/donut_rectangle.png differ diff --git a/addons/godot-donut-collision-polygon-2d-7780d026ae3d4a37fe68f43cc1f97ba664dd775d/screenshots/tree_example.png b/addons/godot-donut-collision-polygon-2d-7780d026ae3d4a37fe68f43cc1f97ba664dd775d/screenshots/tree_example.png new file mode 100644 index 0000000..6f125aa Binary files /dev/null and b/addons/godot-donut-collision-polygon-2d-7780d026ae3d4a37fe68f43cc1f97ba664dd775d/screenshots/tree_example.png differ diff --git a/addons/godot-donut-collision-polygon-2d-7780d026ae3d4a37fe68f43cc1f97ba664dd775d/screenshots/tree_example.png.import b/addons/godot-donut-collision-polygon-2d-7780d026ae3d4a37fe68f43cc1f97ba664dd775d/screenshots/tree_example.png.import new file mode 100644 index 0000000..6a1a279 --- /dev/null +++ b/addons/godot-donut-collision-polygon-2d-7780d026ae3d4a37fe68f43cc1f97ba664dd775d/screenshots/tree_example.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/tree_example.png-30e5634b0df2b8ed1a0c3af2929c3498.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://screenshots/tree_example.png" +dest_files=[ "res://.import/tree_example.png-30e5634b0df2b8ed1a0c3af2929c3498.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=true +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/icon.svg b/icon.svg new file mode 100644 index 0000000..9d8b7fa --- /dev/null +++ b/icon.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/icon.svg.import b/icon.svg.import new file mode 100644 index 0000000..1a55945 --- /dev/null +++ b/icon.svg.import @@ -0,0 +1,37 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://dyxnlko6tpmui" +path="res://.godot/imported/icon.svg-218a8f2b3041327d8a5756f3a245f83b.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://icon.svg" +dest_files=["res://.godot/imported/icon.svg-218a8f2b3041327d8a5756f3a245f83b.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 +svg/scale=1.0 +editor/scale_with_editor_scale=false +editor/convert_colors_with_editor_theme=false diff --git a/project.godot b/project.godot new file mode 100644 index 0000000..089154d --- /dev/null +++ b/project.godot @@ -0,0 +1,24 @@ +; Engine configuration file. +; It's best edited using the editor UI and not directly, +; since the parameters that go here are not all obvious. +; +; Format: +; [section] ; section goes between [] +; param=value ; assign values to parameters + +config_version=5 + +[application] + +config/name="Snake" +config/features=PackedStringArray("4.4", "GL Compatibility") +config/icon="res://icon.svg" + +[editor_plugins] + +enabled=PackedStringArray("res://addons/godot-donut-collision-polygon-2d-7780d026ae3d4a37fe68f43cc1f97ba664dd775d/addons/donut_collision_polygon2D/plugin.cfg") + +[rendering] + +renderer/rendering_method="gl_compatibility" +renderer/rendering_method.mobile="gl_compatibility"