many small changes, and few big ones
This commit is contained in:
parent
e8985f4e79
commit
a3ca623258
32 changed files with 391 additions and 247 deletions
62
reusable/conveyor/conveyor.gd
Normal file
62
reusable/conveyor/conveyor.gd
Normal file
|
@ -0,0 +1,62 @@
|
|||
@tool
|
||||
class_name Conveyor extends Node2D
|
||||
|
||||
const GAP = 8.0
|
||||
const SPEED = 0.0041 # ~ the targeted physics tick time
|
||||
|
||||
@export var conveyor_segments: int = 20:
|
||||
set(v):
|
||||
conveyor_segments = v
|
||||
create_segments()
|
||||
get:
|
||||
return conveyor_segments
|
||||
|
||||
@export var speed_mult: float = 20.0
|
||||
|
||||
var conveyor_seg_scn = preload("uid://be7ki66sskav5")
|
||||
var segments_top: Array[Node2D] = []
|
||||
var segments_bottom: Array[Node2D] = []
|
||||
|
||||
func create_segments():
|
||||
for c in self.get_children():
|
||||
c.call_deferred("queue_free")
|
||||
segments_top = []
|
||||
segments_bottom = []
|
||||
# top
|
||||
for i in range(0, conveyor_segments + 1):
|
||||
var c = conveyor_seg_scn.instantiate()
|
||||
c.position.x = i*8.0
|
||||
self.segments_top.append(c)
|
||||
self.add_child(c)
|
||||
# bottom
|
||||
for i in range(0, conveyor_segments + 1):
|
||||
var c = conveyor_seg_scn.instantiate()
|
||||
c.position.x = i*8.0
|
||||
c.position.y = 5.0
|
||||
self.segments_bottom.append(c)
|
||||
self.add_child(c)
|
||||
|
||||
func _ready() -> void:
|
||||
create_segments()
|
||||
|
||||
func _process(_delta: float) -> void:
|
||||
if Engine.is_editor_hint():
|
||||
return
|
||||
# make it NOT framerate-depedent bc this would fuck up the positioning over time
|
||||
var s = sign(speed_mult)
|
||||
for p in segments_top:
|
||||
if s > 0.0:
|
||||
if p.position.x > conveyor_segments * GAP:
|
||||
p.position.x = 0.0
|
||||
else:
|
||||
if p.position.x < 0.0:
|
||||
p.position.x = conveyor_segments * GAP
|
||||
p.position.x += SPEED * speed_mult
|
||||
for p in segments_bottom:
|
||||
if s > 0.0:
|
||||
if p.position.x < 0.0:
|
||||
p.position.x = conveyor_segments * GAP
|
||||
else:
|
||||
if p.position.x > conveyor_segments * GAP:
|
||||
p.position.x = 0.0
|
||||
p.position.x -= SPEED * speed_mult
|
Reference in a new issue