blob: c6285240a7e82fb21eae679ab9298f27f0633764 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
|
extends Node
signal speed_changed
var speed := 1.0 :
set(value):
speed = value
speed_changed.emit()
signal score_changed
var score := 0 :
set(value):
score = value
score_changed.emit()
var selected_unit_type: PackedScene
func erase_map(points: PackedVector2Array, collision_container: StaticBody2D, visibility_container: Node2D):
var collision_polygons = collision_container.get_children()
var visibility_polygons = visibility_container.get_children()
for idx in range(collision_polygons.size()):
var collision_node: CollisionPolygon2D = collision_polygons[idx]
var visibility_node: Polygon2D = visibility_polygons[idx]
var clipped = Geometry2D.clip_polygons(collision_node.polygon, points)
if clipped.size() > 0 and not Geometry2D.is_polygon_clockwise(clipped[0]):
collision_node.polygon = clipped[0]
visibility_node.polygon = clipped[0]
if clipped.size() > 1 and not Geometry2D.is_polygon_clockwise(clipped[1]):
var collision_polygon = CollisionPolygon2D.new()
collision_polygon.polygon = clipped[1]
collision_container.add_child(collision_polygon)
var visibility_polygon = Polygon2D.new()
visibility_polygon.polygon = clipped[1]
visibility_polygon.clip_children = CanvasItem.CLIP_CHILDREN_ONLY
visibility_polygon.add_child(visibility_node.get_node("TileMapLayer").duplicate())
visibility_container.add_child(visibility_polygon)
|