diff --git a/scenes/bip.tscn b/scenes/bip.tscn index 18854c9c..71548885 100644 --- a/scenes/bip.tscn +++ b/scenes/bip.tscn @@ -5,6 +5,8 @@ [sub_resource type="ShaderMaterial" id="ShaderMaterial_2dulj"] shader = ExtResource("1_k6vue") shader_parameter/color = Color(1, 0.101961, 0.494118, 1) +shader_parameter/color_up = Color(1, 1, 1, 1) +shader_parameter/tick_update = 0 [sub_resource type="PlaceholderTexture2D" id="PlaceholderTexture2D_tgf76"] @@ -13,6 +15,7 @@ script/source = "extends Sprite2D func set_bip_color(col: Color): material.set('shader_parameter/color', col) func get_bip_color() -> Color: return material.get('shader_parameter/color') +func set_tick_update(tick): material.set('shader_parameter/tick_update', tick) " [node name="bip" type="Sprite2D"] diff --git a/scenes/работа.gd b/scenes/работа.gd index 77673878..8ff0e2ef 100644 --- a/scenes/работа.gd +++ b/scenes/работа.gd @@ -73,6 +73,8 @@ func map_threat_to_bip(th: Threats.Threat, bip: Sprite2D): REPSettings.ThreatParams.radius_outter, REPSettings.ThreatParams.freq_low, REPSettings.ThreatParams.freq_high) + var tick = Time.get_ticks_msec() + bip.set_tick_update(tick) ## Обработчик сигнала обновления цели diff --git a/shaders/bip.gdshader b/shaders/bip.gdshader index a46d779a..56ead0a5 100644 --- a/shaders/bip.gdshader +++ b/shaders/bip.gdshader @@ -3,9 +3,12 @@ shader_type canvas_item; /* Закрашенная окружность */ uniform vec4 color: source_color = vec4(1, 1, 1, 1); -const float ds = 0.01; /* Относительное расстояние на котором выполняется сглаживание краёв */ -const vec2 center = vec2(0.125, 0.125); /* Центр должен быть в (0.5, 0.5), но это не так */ -const float radius = 0.125 - ds * 2.0; /* Радиус должен быть 0.5, но это не так */ +uniform vec4 color_up: source_color = vec4(1, 1, 1, 1); /* Цвет вспышки при обновлении */ +uniform uint tick_update = 0; /* Время последнего обновления, мс */ +const float time_delta = 0.1; /* Время вспышки при обновлении, c */ +const float ds = 0.01; /* Относительное расстояние на котором выполняется сглаживание краёв */ +const vec2 center = vec2(0.125, 0.125); /* Центр должен быть в (0.5, 0.5), но это не так */ +const float radius = 0.125 - ds * 2.0; /* Радиус должен быть 0.5, но это не так */ float smooth_px(float r, float R)