PROXiCiDE

Light

Apr 24th, 2020
1,170
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.27 KB | None | 0 0
  1. extends Light2D
  2.  
  3. #timer
  4. export(float) var TimerWait = 0.5
  5.  
  6. #rotation
  7. export(float) var Radius = 0.1
  8. export(float) var RotationSpeed = 2.0
  9.  
  10. #energy settings
  11. export(float) var EnergyMin = 0.5
  12. export(float) var EnergyMax = 1
  13. export(float) var EnergyStepping = 0.1
  14.  
  15. var angle = 0
  16. var centre = 0
  17. var timer = 0
  18. var energy_temp = 0
  19. var energy_direction = 0
  20.  
  21. var rng = RandomNumberGenerator.new()
  22. signal timeout
  23.  
  24. # Called when the node enters the scene tree for the first time.
  25. func _ready():
  26.     centre = position
  27.     rng.randomize()
  28.     pass # Replace with function body.
  29.  
  30. # Called every frame. 'delta' is the elapsed time since the previous frame.
  31. func _process(delta):
  32.     timer += delta
  33.    
  34.     if timer > TimerWait:
  35.         timer = 0
  36.         emit_signal("timeout", timer)
  37.        
  38.     moveLight(delta)
  39.  
  40. func handleLight():
  41.     if energy_temp >= EnergyMax:
  42.         energy_direction = 0
  43.     if energy_temp <= EnergyMin:
  44.         energy_direction = 1
  45.    
  46.     match energy_direction:
  47.         0:
  48.             energy_temp -= EnergyStepping
  49.         1:
  50.             energy_temp += EnergyStepping
  51.     energy = clamp(energy_temp, EnergyMin, EnergyMax)
  52.        
  53. func moveLight(delta):
  54.          angle += RotationSpeed * delta
  55.          var offset = Vector2(sin(angle), cos(angle)) * Radius
  56.          position = centre + offset
  57.        
  58. func _on_LightSource_timeout(x):
  59.     handleLight()
Advertisement
Add Comment
Please, Sign In to add comment