mirror of
https://github.com/HarmonyHoney/ROTA.git
synced 2026-07-18 00:56:58 +00:00
TreeTop.gd simplify + drawing different leaf counts! (:
This commit is contained in:
parent
48383e4bad
commit
bd9869c773
2 changed files with 47 additions and 26 deletions
|
|
@ -1,31 +1,40 @@
|
|||
tool
|
||||
extends CanvasItem
|
||||
|
||||
export var start_dist := 170.0 setget set_start
|
||||
export var distance := 130.0 setget set_distance
|
||||
export var circle_offset := Vector2.ZERO setget set_offset
|
||||
|
||||
export var gon := PoolVector2Array()
|
||||
export var points := 16 setget set_points
|
||||
export var leaves := 8 setget set_leaves
|
||||
export var dist := 130.0 setget set_dist
|
||||
export var radius := 70.0 setget set_radius
|
||||
export var points := 8 setget set_points
|
||||
export var draw_offset := Vector2.ZERO setget set_offset
|
||||
|
||||
var gon := PoolVector2Array()
|
||||
export var poly_path : NodePath setget set_poly
|
||||
onready var poly := get_node_or_null(poly_path)
|
||||
|
||||
|
||||
export var is_draw_debug := false setget set_debug
|
||||
var _draw_me := Vector2.ZERO
|
||||
var _draw_circle := Vector2.ZERO
|
||||
|
||||
func u():
|
||||
gon = []
|
||||
|
||||
for i in 8:
|
||||
var start = Vector2(start_dist, 0).rotated(deg2rad((i * 45) - 22.5))
|
||||
var end = Vector2(start_dist, 0).rotated(deg2rad((i * 45) + 22.5))
|
||||
|
||||
var center = start.linear_interpolate(end, 0.5).normalized() * distance
|
||||
var r = center.distance_to(start)
|
||||
var a1 = center.angle_to_point(start)
|
||||
var a2 = center.angle_to_point(end)
|
||||
#print("a1: ", rad2deg(a1), " a2: ", rad2deg(a2), " r: ", r)
|
||||
|
||||
var s = Vector2(dist, 0)
|
||||
var r = PI*(1.0/leaves)
|
||||
var line = Vector2(dist * 3.0, 0).rotated(r)
|
||||
|
||||
var seg = Geometry.segment_intersects_circle(line, Vector2.ZERO, s, radius)
|
||||
var l = line * (1.0 - seg)
|
||||
var ang = (l - s).angle()
|
||||
|
||||
#print("r: ", rad2deg(r), " leaves: ", leaves, " line: ", line, "seg: ", seg, " l: ", l, " ang: ", rad2deg(ang))
|
||||
_draw_me = l
|
||||
_draw_circle = s
|
||||
|
||||
for i in leaves:
|
||||
var a = (float(i) / leaves) * TAU
|
||||
for y in points:
|
||||
gon.append(circle_offset + center + Vector2(r, 0).rotated(lerp_angle(a2 + deg2rad(45), a1 + deg2rad(45), -float(y) / points)))
|
||||
gon.append(draw_offset + s.rotated(a) + Vector2(radius, 0).rotated(a + lerp_angle(-ang, ang, float(y) / points)))
|
||||
|
||||
if !poly: poly = get_node_or_null(poly_path)
|
||||
if poly:
|
||||
|
|
@ -38,17 +47,27 @@ func u():
|
|||
|
||||
func _draw():
|
||||
if !poly: draw_colored_polygon(gon, Color.white, PoolVector2Array(), null, null, true)
|
||||
if is_draw_debug:
|
||||
var c = Color(0,0,0, 0.5)
|
||||
draw_line(Vector2.ZERO, Vector2(dist * 2, 0), c, 5.0)
|
||||
draw_line(Vector2.ZERO, _draw_me, c, 5.0)
|
||||
draw_circle(_draw_me, 10, c)
|
||||
draw_circle(_draw_circle, radius, c)
|
||||
|
||||
func set_start(arg := start_dist):
|
||||
start_dist = arg
|
||||
func set_radius(arg := radius):
|
||||
radius = arg
|
||||
u()
|
||||
|
||||
func set_distance(arg := distance):
|
||||
distance = abs(arg)
|
||||
func set_leaves(arg := leaves):
|
||||
leaves = max(1, arg)
|
||||
u()
|
||||
|
||||
func set_offset(arg := circle_offset):
|
||||
circle_offset = arg
|
||||
func set_dist(arg := dist):
|
||||
dist = abs(arg)
|
||||
u()
|
||||
|
||||
func set_offset(arg := draw_offset):
|
||||
draw_offset = arg
|
||||
u()
|
||||
|
||||
func set_points(arg := points):
|
||||
|
|
@ -58,3 +77,7 @@ func set_points(arg := points):
|
|||
func set_poly(arg := poly_path):
|
||||
poly_path = arg
|
||||
u()
|
||||
|
||||
func set_debug(arg := is_draw_debug):
|
||||
is_draw_debug = arg
|
||||
u()
|
||||
|
|
|
|||
|
|
@ -28,10 +28,8 @@ pitch_to = 0.5
|
|||
|
||||
[node name="Sprite" type="Polygon2D" parent="."]
|
||||
modulate = Color( 0.494118, 0.890196, 0.337255, 1 )
|
||||
polygon = PoolVector2Array( 156.868, -65.1356, 174.599, -54.5481, 188.498, -39.2745, 197.372, -20.627, 200.459, -0.207595, 197.493, 20.2297, 188.729, 38.9291, 174.919, 54.2843, 156.98, 64.8644, 162.031, 84.8885, 161.06, 105.517, 154.149, 124.978, 141.893, 141.599, 125.344, 153.953, 105.924, 160.978, 85.3018, 162.071, 65.1356, 156.868, 54.5481, 174.599, 39.2745, 188.498, 20.6271, 197.372, 0.20763, 200.459, -20.2296, 197.493, -38.9291, 188.729, -54.2843, 174.919, -64.8644, 156.98, -84.8885, 162.031, -105.517, 161.06, -124.978, 154.149, -141.599, 141.893, -153.953, 125.344, -160.978, 105.924, -162.071, 85.3018, -156.868, 65.1356, -174.599, 54.5481, -188.498, 39.2745, -197.372, 20.627, -200.459, 0.2076, -197.493, -20.2297, -188.729, -38.9291, -174.919, -54.2843, -156.98, -64.8644, -162.031, -84.8885, -161.06, -105.517, -154.149, -124.978, -141.893, -141.599, -125.344, -153.953, -105.924, -160.978, -85.3019, -162.071, -65.1356, -156.868, -54.5481, -174.599, -39.2745, -188.498, -20.627, -197.372, -0.207559, -200.459, 20.2297, -197.493, 38.9292, -188.729, 54.2843, -174.919, 64.8644, -156.98, 84.8885, -162.031, 105.517, -161.06, 124.978, -154.149, 141.599, -141.893, 153.953, -125.344, 160.978, -105.924, 162.071, -85.3018 )
|
||||
polygon = PoolVector2Array( 156.458, -64.8071, 174.201, -54.2799, 188.104, -39.0379, 196.96, -20.4052, 200, 0, 196.96, 20.4052, 188.104, 39.0379, 174.201, 54.2799, 156.458, 64.8072, 161.56, 84.7968, 160.613, 105.405, 153.7, 124.843, 141.421, 141.421, 124.843, 153.7, 105.405, 160.613, 84.7968, 161.56, 64.8071, 156.458, 54.2799, 174.201, 39.0379, 188.104, 20.4052, 196.96, -8.74228e-06, 200, -20.4052, 196.96, -39.0379, 188.104, -54.2799, 174.201, -64.8072, 156.458, -84.7968, 161.56, -105.405, 160.613, -124.843, 153.7, -141.421, 141.421, -153.7, 124.843, -160.613, 105.405, -161.56, 84.7968, -156.458, 64.8071, -174.201, 54.2799, -188.104, 39.0379, -196.96, 20.4052, -200, -1.74846e-05, -196.96, -20.4052, -188.104, -39.038, -174.201, -54.2799, -156.458, -64.8072, -161.56, -84.7968, -160.613, -105.405, -153.7, -124.843, -141.421, -141.421, -124.843, -153.7, -105.405, -160.613, -84.7968, -161.56, -64.8071, -156.458, -54.2799, -174.201, -39.038, -188.104, -20.4052, -196.96, 2.38498e-06, -200, 20.4052, -196.96, 39.0379, -188.104, 54.2799, -174.201, 64.8071, -156.458, 84.7968, -161.56, 105.405, -160.613, 124.843, -153.7, 141.421, -141.421, 153.7, -124.843, 160.613, -105.405, 161.56, -84.7968 )
|
||||
script = ExtResource( 1 )
|
||||
gon = PoolVector2Array( 156.868, -65.1356, 174.599, -54.5481, 188.498, -39.2745, 197.372, -20.627, 200.459, -0.207595, 197.493, 20.2297, 188.729, 38.9291, 174.919, 54.2843, 156.98, 64.8644, 162.031, 84.8885, 161.06, 105.517, 154.149, 124.978, 141.893, 141.599, 125.344, 153.953, 105.924, 160.978, 85.3018, 162.071, 65.1356, 156.868, 54.5481, 174.599, 39.2745, 188.498, 20.6271, 197.372, 0.20763, 200.459, -20.2296, 197.493, -38.9291, 188.729, -54.2843, 174.919, -64.8644, 156.98, -84.8885, 162.031, -105.517, 161.06, -124.978, 154.149, -141.599, 141.893, -153.953, 125.344, -160.978, 105.924, -162.071, 85.3018, -156.868, 65.1356, -174.599, 54.5481, -188.498, 39.2745, -197.372, 20.627, -200.459, 0.2076, -197.493, -20.2297, -188.729, -38.9291, -174.919, -54.2843, -156.98, -64.8644, -162.031, -84.8885, -161.06, -105.517, -154.149, -124.978, -141.893, -141.599, -125.344, -153.953, -105.924, -160.978, -85.3019, -162.071, -65.1356, -156.868, -54.5481, -174.599, -39.2745, -188.498, -20.627, -197.372, -0.207559, -200.459, 20.2297, -197.493, 38.9292, -188.729, 54.2843, -174.919, 64.8644, -156.98, 84.8885, -162.031, 105.517, -161.06, 124.978, -154.149, 141.599, -141.893, 153.953, -125.344, 160.978, -105.924, 162.071, -85.3018 )
|
||||
points = 8
|
||||
poly_path = NodePath(".")
|
||||
|
||||
[node name="Area2D" type="Area2D" parent="."]
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue