48 lines
1.3 KiB
GDScript
48 lines
1.3 KiB
GDScript
extends MeshInstance
|
|
|
|
var t = 0.0
|
|
var mat
|
|
var peakt = 0.0
|
|
var peako = false
|
|
|
|
const dim = 0.2
|
|
|
|
var lights = [
|
|
[Vector3(6,-4.5,-2.25),Vector3.ZERO],
|
|
[Vector3(10,-4.5,-4),Vector3.ZERO],
|
|
[Vector3(6,-4.5,-6.25),Vector3.ZERO],
|
|
[Vector3(10,-4.5,-8),Vector3.ZERO]
|
|
]
|
|
|
|
func rcv3():
|
|
var tcol = Color.from_hsv(randf(),rand_range(0.85,1),1.0)
|
|
return Vector3(tcol.r,tcol.g,tcol.b)
|
|
|
|
func _ready():
|
|
for light in lights:
|
|
light[0] = to_global(light[0])
|
|
mat = get_surface_material(1)
|
|
for light in lights:
|
|
light[1] = rcv3()*dim
|
|
|
|
func _process(delta):
|
|
t += delta
|
|
if !peako and $kobolds.rpeak >= 0.5 and peakt >= 0.2:
|
|
peako = true
|
|
lights[randi()%len(lights)][1] = rcv3()
|
|
if peako and $kobolds.rpeak <= 0.3:
|
|
peako = false
|
|
peakt = 0.0
|
|
#lights[0][1] = Vector3(1,0,0)*float(cycle==0) #(sin(t*4)/2+0.5)
|
|
#lights[1][1] = Vector3(0,1,0)*float(cycle==1) #(sin(t*5.123)/2+0.5)
|
|
#lights[2][1] = Vector3(0,0,1)*float(cycle==2) #(sin(t*6.7)/2+0.5)
|
|
#lights[3][1] = Vector3(1,0.5,0)*float(cycle==3) #(sin(t*3.141)/2+0.5)
|
|
mat.set_shader_param("col1",lights[0][1])
|
|
mat.set_shader_param("col2",lights[1][1])
|
|
mat.set_shader_param("col3",lights[2][1])
|
|
mat.set_shader_param("col4",lights[3][1])
|
|
for light in lights:
|
|
if Color(light[1].x,light[1].y,light[1].z).v > 0.2:
|
|
light[1] *= 0.9
|
|
peakt += delta
|