extends MeshInstance3D @export_group("Animation") @export var life_time: float = 8.0 @export var fade_in_time: float = 4.0 @export var max_base_alpha: float = 1.0 func _ready(): var mat = get_active_material(0).duplicate() set_surface_override_material(0, mat) #add_to_group("camere") #set alpha to 0 before first frame to avoid "pop" mat.set_shader_parameter("base_alpha", 0.0) animate_godray(mat) func animate_godray(mat: ShaderMaterial): var tween_alpha = create_tween() tween_alpha.tween_property(mat, "shader_parameter/base_alpha", max_base_alpha, fade_in_time).from(0.0) var tween_intensity = create_tween() #tween from 1.0 to 2.0 tween_intensity.tween_property(mat, "shader_parameter/intensity_multiplier", 0.2, life_time * 0.3).from(1.0) #tween to 0.5 tween_intensity.tween_property(mat, "shader_parameter/intensity_multiplier", 0.5, life_time * 0.3) #tween to 0.0 tween_intensity.tween_property(mat, "shader_parameter/intensity_multiplier", 0.0, life_time * 0.4) tween_intensity.tween_callback(queue_free) var tween_edge = create_tween() tween_edge.tween_property(mat, "shader_parameter/edge_fade_power", 0.5, life_time * 0.5).from(2.0) tween_edge.tween_property(mat, "shader_parameter/edge_fade_power", 2.0, life_time * 0.5)