diff options
Diffstat (limited to 'water/Water.gd')
-rw-r--r-- | water/Water.gd | 72 |
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 |