28 lines
738 B
GDScript3
28 lines
738 B
GDScript3
|
extends Spatial
|
||
|
|
||
|
## NOTE: LightLevel Detector is on Layer 20. Keep this layer hidden from main camera
|
||
|
|
||
|
var lightLevel : float
|
||
|
|
||
|
func _process(_delta):
|
||
|
var o = global_transform.origin
|
||
|
$Viewport/Camera.global_transform.origin = Vector3(o.x, o.y + 0.5, o.z)
|
||
|
var image : Image = $Viewport.get_texture().get_data()
|
||
|
var floats : Array = []
|
||
|
|
||
|
image.lock()
|
||
|
|
||
|
for y in range(0, image.get_height()):
|
||
|
for x in range(0, image.get_width()):
|
||
|
var pixel = image.get_pixel(x,y)
|
||
|
var lightVal = (pixel.r + pixel.g + pixel.b) / 3
|
||
|
floats.append(lightVal)
|
||
|
lightLevel = average(floats)
|
||
|
image.unlock()
|
||
|
|
||
|
func average(numbers : Array) -> float:
|
||
|
var sum = 0.0
|
||
|
for n in numbers:
|
||
|
sum += n
|
||
|
return sum / numbers.size()
|