feature/shader-animation (#83)

Co-authored-by: Vaillant Jeremy <vaillant.jeremy@dev-crea.com>
Co-authored-by: VAILLANT Jeremy <vaillant.jeremy@dev-crea.com>
Reviewed-on: Athena/game-source#83
Co-authored-by: darknight <vaillant.jeremy@dev-crea.com>
Co-committed-by: darknight <vaillant.jeremy@dev-crea.com>
This commit is contained in:
darknight
2021-06-26 15:33:34 +02:00
parent 34612f83a8
commit a33ecafb81
7 changed files with 99 additions and 40 deletions
+28 -38
View File
@@ -41,6 +41,7 @@ func _load_meshes():
if scene_detail.key() != null:
meshes[scene_detail.key()] = scene_detail
create_dissolve_mesh(scene_detail.key())
func _load_back_button():
var _back = $Quit/TextureButton.connect("pressed", Event, "_on_main_scene_pressed")
@@ -101,36 +102,19 @@ func _configure_button_object(button, scene, label):
button.set_meta("counted", 0)
func _create_animation_slide(node, name):
var animation = Animation.new()
var track_index = animation.add_track(Animation.TYPE_BEZIER)
var node_element = String(node.get_path()) + ":rect_position:x"
animation.track_set_path(track_index, node_element)
animation.bezier_track_insert_key(track_index, 0.0, 0.0, Vector2(-0.25, 0), Vector2(0.031, 190.492))
animation.bezier_track_insert_key(track_index, 1.0, 170, Vector2(-0.349, 2.576), Vector2(0.25, 0))
$ListObjects/AnimationPlayer.add_animation(name, animation)
$ListObjects/AnimationPlayer.add_animation(name, GlobalAnimation.level_hud_slide(node))
func _create_animation_warning(node, name):
var animation = Animation.new()
var track_index = animation.add_track(Animation.TYPE_BEZIER)
var node_element = String(node.get_path()) + ":rect_position:x"
animation.track_set_path(track_index, node_element)
animation.bezier_track_insert_key(track_index, 0.0, 0.0, Vector2(-0.25, 0), Vector2(0, 78.1))
animation.bezier_track_insert_key(track_index, 0.2, 34.9, Vector2(-0.25, 0), Vector2(0, -66))
animation.bezier_track_insert_key(track_index, 0.4, 12.1, Vector2(0, 73.2), Vector2(0, -124.8))
animation.bezier_track_insert_key(track_index, 0.6, -41.9, Vector2(-0.095, 109.2), Vector2(0.062, -58.8))
animation.bezier_track_insert_key(track_index, 0.8, 13.3, Vector2(-0.188, 93.6), Vector2(0.196, 104.4))
animation.bezier_track_insert_key(track_index, 1.0, 0.0, Vector2(-0.155, -135.5), Vector2(0.25, 0))
$ListObjects/AnimationPlayer.add_animation(name, animation)
$ListObjects/AnimationPlayer.add_animation(name, GlobalAnimation.level_hud_warning(node))
func _process(_delta):
_check_dissolve_mesh()
_check_change_angle_camera()
_check_victory_condition()
func create_dissolve_mesh(key):
_node_to_mesh(key).get_surface_material(0).set_shader_param("dissolve_amount", 0.0)
func _check_dissolve_mesh():
# Event dissolve in object searched by gamer
for key in meshes:
@@ -138,10 +122,10 @@ func _check_dissolve_mesh():
if meshes[key].tick_reference() == 0:
meshes[key].set_tick_reference(OS.get_ticks_msec())
_node_object_list(key)
GlobalAnimation.start_dissolve(_node_to_tween(key), _node_to_mesh(key).get_surface_material(0))
if OS.get_ticks_msec() < meshes[key].tick_reference() + TIME_MAX:
meshes[key].set_value(meshes[key].value() + 0.01)
_node_to_mesh(key).get_surface_material(0).set("shader_param/dissolve_amount", meshes[key].value())
else:
_clean_mesh(key)
@@ -226,28 +210,34 @@ func _check_victory_condition():
func _node_to_mesh(key):
return get_node(meshes[key].mesh())
func _node_to_tween(key):
return get_node(meshes[key].tween())
func _node_to_area(key):
return get_node(meshes[key].mesh()+"/Area")
func _node_object_list(key):
var animation_played = null
var name = null
for child in $ListObjects/ListContainer.get_children():
if child.get_meta("name") == meshes[key].label():
child.set_meta("counted", child.get_meta("counted") + 1)
if child.get_meta("counter") == child.get_meta("counted"):
animation_played = child.get_meta("name")
else:
var diff = child.get_meta("counter") - child.get_meta("counted")
var txt = child.get_meta("name")
if diff != 1:
txt = txt + " " + String(diff)
animation_played = child.get_meta("animation")
child.get_node("Label").set_text(txt)
$ListObjects/AnimationPlayer.queue(animation_played)
if child.has_meta("name"):
name = var2str(child.get_meta("name"))
if name == meshes[key].label():
child.set_meta("counted", child.get_meta("counted") + 1)
if child.get_meta("counter") == child.get_meta("counted"):
animation_played = name
else:
var diff = child.get_meta("counter") - child.get_meta("counted")
var txt = name
if diff != 1:
txt = txt + " " + String(diff)
animation_played = child.get_meta("animation")
child.get_node("Label").set_text(txt)
$ListObjects/AnimationPlayer.queue(animation_played)
func _input(event):
if event is InputEventMouseButton or event is InputEventScreenTouch: