Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- extends Light2D
- #timer
- export(float) var TimerWait = 0.5
- #rotation
- export(float) var Radius = 0.1
- export(float) var RotationSpeed = 2.0
- #energy settings
- export(float) var EnergyMin = 0.5
- export(float) var EnergyMax = 1
- export(float) var EnergyStepping = 0.1
- var angle = 0
- var centre = 0
- var timer = 0
- var energy_temp = 0
- var energy_direction = 0
- var rng = RandomNumberGenerator.new()
- signal timeout
- # Called when the node enters the scene tree for the first time.
- func _ready():
- centre = position
- rng.randomize()
- pass # Replace with function body.
- # Called every frame. 'delta' is the elapsed time since the previous frame.
- func _process(delta):
- timer += delta
- if timer > TimerWait:
- timer = 0
- emit_signal("timeout", timer)
- moveLight(delta)
- func handleLight():
- if energy_temp >= EnergyMax:
- energy_direction = 0
- if energy_temp <= EnergyMin:
- energy_direction = 1
- match energy_direction:
- 0:
- energy_temp -= EnergyStepping
- 1:
- energy_temp += EnergyStepping
- energy = clamp(energy_temp, EnergyMin, EnergyMax)
- func moveLight(delta):
- angle += RotationSpeed * delta
- var offset = Vector2(sin(angle), cos(angle)) * Radius
- position = centre + offset
- func _on_LightSource_timeout(x):
- handleLight()
Advertisement
Add Comment
Please, Sign In to add comment