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:
+28
-38
@@ -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:
|
||||
|
||||
Reference in New Issue
Block a user