summaryrefslogtreecommitdiffstats
path: root/water/Water.gd
diff options
context:
space:
mode:
Diffstat (limited to 'water/Water.gd')
-rw-r--r--water/Water.gd72
1 files changed, 67 insertions, 5 deletions
diff --git a/water/Water.gd b/water/Water.gd
index 9937725..5a4bfe2 100644
--- a/water/Water.gd
+++ b/water/Water.gd
@@ -13,8 +13,20 @@ export var wave3_steepness = 0.5 setget _set_wave3_steepness
export var wave3_wavelength = 10.0 setget _set_wave3_wavelength
export var wave3_direction = Vector2(1.0,0.0) setget _set_wave3_direction
+export var wave4_steepness = 0.5 setget _set_wave4_steepness
+export var wave4_wavelength = 10.0 setget _set_wave4_wavelength
+export var wave4_direction = Vector2(1.0,0.0) setget _set_wave4_direction
+
+export var wave5_steepness = 0.5 setget _set_wave5_steepness
+export var wave5_wavelength = 10.0 setget _set_wave5_wavelength
+export var wave5_direction = Vector2(1.0,0.0) setget _set_wave5_direction
+
+export var wave6_steepness = 0.5 setget _set_wave6_steepness
+export var wave6_wavelength = 10.0 setget _set_wave6_wavelength
+export var wave6_direction = Vector2(1.0,0.0) setget _set_wave6_direction
+
export var wave_speed = 2.0 setget _set_wave_speed
-export var wave_size = 1.5 setget _set_wave_size
+export var wave_size = 1.0 setget _set_wave_size
onready var water_plane = $"MeshInstance"
@@ -60,12 +72,55 @@ func _set_wave3_direction(val):
wave3_direction = val
_set_wave_prop(2,"direction",val)
+func _set_wave4_steepness(val):
+ wave4_steepness = val
+ _set_wave_prop(3,"steepness",val)
+
+func _set_wave4_wavelength(val):
+ wave4_wavelength = val
+ _set_wave_prop(3,"wavelength",val)
+
+func _set_wave4_direction(val):
+ wave4_direction = val
+ _set_wave_prop(3,"direction",val)
+
+func _set_wave5_steepness(val):
+ wave5_steepness = val
+ _set_wave_prop(4,"steepness",val)
+
+func _set_wave5_wavelength(val):
+ wave5_wavelength = val
+ _set_wave_prop(4,"wavelength",val)
+
+func _set_wave5_direction(val):
+ wave5_direction = val
+ _set_wave_prop(4,"direction",val)
+
+func _set_wave6_steepness(val):
+ wave6_steepness = val
+ _set_wave_prop(5,"steepness",val)
+
+func _set_wave6_wavelength(val):
+ wave6_wavelength = val
+ _set_wave_prop(5,"wavelength",val)
+
+func _set_wave6_direction(val):
+ wave6_direction = val
+ _set_wave_prop(5,"direction",val)
+
var _time = 0.0 setget _set_time
var waves = []
func _ready():
waves.push_back(Wave.new(wave1_steepness,wave1_wavelength,wave1_direction,_time))
waves.push_back(Wave.new(wave2_steepness,wave2_wavelength,wave2_direction,_time))
waves.push_back(Wave.new(wave3_steepness,wave3_wavelength,wave3_direction,_time))
+ waves.push_back(Wave.new(wave4_steepness,wave4_wavelength,wave4_direction,_time))
+ waves.push_back(Wave.new(wave5_steepness,wave5_wavelength,wave5_direction,_time))
+ waves.push_back(Wave.new(wave6_steepness,wave6_wavelength,wave6_direction,_time))
+ for i in waves.size():
+ _update_wave(i)
+ _update_multipliers()
+ self._time = 0.0
func _wave_to_v3(wave):
return Vector3(wave.steepness,wave._k,wave._a)
@@ -75,18 +130,25 @@ func _update_wave(idx):
material.set_shader_param("wave" + str(idx+1), _wave_to_v3(waves[idx]))
material.set_shader_param("wave" + str(idx+1) + "_dir", waves[idx].direction)
+func _update_multipliers():
+ if water_plane != null:
+ var material = self.water_plane.get_surface_material(0)
+ material.set_shader_param("wave_speed", wave_speed)
+ material.set_shader_param("wave_size", wave_size)
+
func _set_wave_speed(val):
- var material = self.water_plane.get_surface_material(0)
wave_speed = val
- material.set_shader_param("wave_speed", wave_speed)
+ if val == null: return
+ _update_multipliers()
func _set_wave_size(val):
- var material = self.water_plane.get_surface_material(0)
wave_size = val
- material.set_shader_param("wave_size", wave_size)
+ if val == null: return
+ _update_multipliers()
func _set_time(val):
_time = val
+ if val == null: return
var material = self.water_plane.get_surface_material(0)
for idx in waves.size():
waves[idx]._time = _time