исправление
This commit is contained in:
@@ -1,4 +1,4 @@
|
||||
[gd_scene load_steps=49 format=3 uid="uid://cvor2jm4xk3ha"]
|
||||
[gd_scene load_steps=53 format=3 uid="uid://cvor2jm4xk3ha"]
|
||||
|
||||
[ext_resource type="Script" path="res://scripts/PRD.gd" id="1_v273n"]
|
||||
[ext_resource type="Texture2D" uid="uid://cdxdluvyb5uei" path="res://table/on.png" id="2_dv7xx"]
|
||||
@@ -7,14 +7,15 @@
|
||||
[ext_resource type="Texture2D" uid="uid://cfktmk2rowmul" path="res://table/off.png" id="3_qvuyu"]
|
||||
[ext_resource type="Shader" path="res://Shaders/ray.gdshader" id="4_uy5o2"]
|
||||
[ext_resource type="Texture2D" uid="uid://co8dxcd8eckjs" path="res://Web.png" id="5_i3nvb"]
|
||||
[ext_resource type="Shader" path="res://ray_2.gdshader" id="8_12mng"]
|
||||
[ext_resource type="Shader" path="res://Shaders/ray_2.gdshader" id="8_12mng"]
|
||||
[ext_resource type="Texture2D" uid="uid://cgtg4gbqnuxrc" path="res://nine-patch-round.png" id="9_0r2qk"]
|
||||
[ext_resource type="Script" path="res://scripts/control_panel.gd" id="9_akagi"]
|
||||
[ext_resource type="Script" path="res://scripts/ems_g.gd" id="9_g1wia"]
|
||||
[ext_resource type="Shader" path="res://load.gdshader" id="10_lf1xh"]
|
||||
[ext_resource type="Shader" path="res://Shaders/load.gdshader" id="10_lf1xh"]
|
||||
[ext_resource type="PackedScene" uid="uid://bdb0bhfu7366l" path="res://kasseta-fs-kd.tscn" id="10_tdh2s"]
|
||||
[ext_resource type="PackedScene" uid="uid://p2suppildvq0" path="res://table/элемент-в.tscn" id="11_fg7ul"]
|
||||
[ext_resource type="Script" path="res://scripts/modul_fs.gd" id="15_b4pr1"]
|
||||
[ext_resource type="Shader" path="res://Shaders/loadead.gdshader" id="16_4osrw"]
|
||||
|
||||
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_eib3t"]
|
||||
bg_color = Color(0.223529, 0.168627, 0.223529, 1)
|
||||
@@ -129,6 +130,35 @@ shader_parameter/inner_radius = 0.32
|
||||
|
||||
[sub_resource type="StyleBoxTexture" id="StyleBoxTexture_ooo4i"]
|
||||
|
||||
[sub_resource type="ShaderMaterial" id="ShaderMaterial_cm644"]
|
||||
shader = ExtResource("16_4osrw")
|
||||
shader_parameter/dot_scale = 0.5
|
||||
shader_parameter/ring_radius = 0.2
|
||||
shader_parameter/num_points = 8
|
||||
shader_parameter/gap_ratio = 0.102
|
||||
shader_parameter/all_dots_same_size = false
|
||||
shader_parameter/dot_color_start = Color(0.5, 0, 0.5, 1)
|
||||
shader_parameter/dot_color_end = Color(0.8, 0.5, 1, 1)
|
||||
shader_parameter/enable_shadow = true
|
||||
shader_parameter/shadow_color = Color(0, 0, 0, 0.35)
|
||||
shader_parameter/shadow_offset = Vector2(0.03, 0.01)
|
||||
shader_parameter/rotation_speed = 1.5
|
||||
shader_parameter/icon_size = 0.15
|
||||
shader_parameter/enable_icon_rotation = false
|
||||
shader_parameter/reverse_icon_rotation = false
|
||||
shader_parameter/icon_rotation_speed = 1.0
|
||||
shader_parameter/show_icon = false
|
||||
|
||||
[sub_resource type="Gradient" id="Gradient_kvhy4"]
|
||||
colors = PackedColorArray(1, 1, 1, 1, 0, 0, 0, 1)
|
||||
|
||||
[sub_resource type="GradientTexture2D" id="GradientTexture2D_2sr0p"]
|
||||
gradient = SubResource("Gradient_kvhy4")
|
||||
width = 100
|
||||
height = 150
|
||||
fill = 1
|
||||
fill_from = Vector2(0.521368, 0.512821)
|
||||
|
||||
[sub_resource type="ShaderMaterial" id="ShaderMaterial_slcfo"]
|
||||
shader = ExtResource("10_lf1xh")
|
||||
shader_parameter/frequency = 5.0
|
||||
@@ -738,6 +768,14 @@ offset_bottom = 782.0
|
||||
color = Color(0, 0, 0, 0.596078)
|
||||
metadata/_edit_lock_ = true
|
||||
|
||||
[node name="win_load" type="TextureButton" parent="TabContainer/EMS_G/load_boadr"]
|
||||
material = SubResource("ShaderMaterial_cm644")
|
||||
offset_left = 730.0
|
||||
offset_top = 311.0
|
||||
offset_right = 830.0
|
||||
offset_bottom = 461.0
|
||||
texture_normal = SubResource("GradientTexture2D_2sr0p")
|
||||
|
||||
[node name="load" type="Sprite2D" parent="TabContainer/EMS_G/load_boadr"]
|
||||
material = SubResource("ShaderMaterial_slcfo")
|
||||
position = Vector2(785.001, 361.5)
|
||||
@@ -746,6 +784,7 @@ texture = SubResource("GradientTexture2D_0pk2o")
|
||||
metadata/_edit_lock_ = true
|
||||
|
||||
[node name="Load_text" type="Label" parent="TabContainer/EMS_G/load_boadr"]
|
||||
visible = false
|
||||
layout_mode = 0
|
||||
offset_left = 693.0
|
||||
offset_top = 341.0
|
||||
|
||||
118
Shaders/loadead.gdshader
Normal file
118
Shaders/loadead.gdshader
Normal file
@@ -0,0 +1,118 @@
|
||||
shader_type canvas_item;
|
||||
|
||||
// Конфигурационные униформы для кольца.
|
||||
uniform float dot_scale : hint_range(0.1, 9.1) = 0.5; // Масштаб точек кольца.
|
||||
uniform float ring_radius : hint_range(0.1, 1.0) = 0.2; // Радиус кольца.
|
||||
uniform int num_points : hint_range(3, 10) = 8; // Количество точек на кольце.
|
||||
uniform float gap_ratio : hint_range(0.0, 0.9) = 0.22; // Отношение пробелов между точками.
|
||||
uniform bool all_dots_same_size = false; // Флаг, указывающий, должны ли все точки быть одинакового размера.
|
||||
|
||||
// Визуальные свойства точек кольца.
|
||||
uniform vec4 dot_color_start : source_color = vec4(0.5, 0.0, 0.5, 1.0); // Начальный цвет точек.
|
||||
uniform vec4 dot_color_end : source_color = vec4(0.8, 0.5, 1.0, 1.0); // Конечный цвет точек.
|
||||
uniform bool enable_shadow = true; // Флаг для включения/выключения теней.
|
||||
uniform vec4 shadow_color : source_color = vec4(0.0, 0.0, 0.0, 0.35); // Цвет теней.
|
||||
uniform vec2 shadow_offset = vec2(0.03, 0.01); // Смещение теней от точек.
|
||||
|
||||
// Контроль анимации кольца.
|
||||
uniform float rotation_speed : hint_range(0.0, 10.0) = 1.5; // Скорость вращения кольца.
|
||||
|
||||
// Новые униформы для текстуры иконки и её внешнего вида.
|
||||
uniform sampler2D icon_texture; // Текстура иконки.
|
||||
uniform float icon_size : hint_range(0.0, 1.0) = 0.15; // Контроль радиуса иконки.
|
||||
|
||||
// Новые униформы для контроля вращения иконки.
|
||||
uniform bool enable_icon_rotation = false; // Флаг для включения вращения иконки.
|
||||
uniform bool reverse_icon_rotation = false; // Флаг для инверсии вращения иконки.
|
||||
uniform float icon_rotation_speed : hint_range(-10.0, 10.0) = 1.0; // Скорость вращения иконки.
|
||||
|
||||
// Униформ для контроля отрисовки иконки.
|
||||
uniform bool show_icon = false; // Если false, текстура иконки игнорируется.
|
||||
|
||||
void fragment() {
|
||||
// Преобразование UV-координат для центрирования начала координат и корректировки в зависимости от аспекта экрана.
|
||||
float aspect_ratio = SCREEN_PIXEL_SIZE.x / SCREEN_PIXEL_SIZE.y;
|
||||
vec2 uv = (UV * 2.0 - 1.0) * vec2(0.3, aspect_ratio); // Нормализация UV координат.
|
||||
|
||||
// Подсчет кольца (точек и опциональной тени).
|
||||
vec4 ring_color = vec4(0.0); // Начальный цвет кольца.
|
||||
float dot_accum = 0.0; // Накапливаемый вклад от точек.
|
||||
float shadow_accum = 0.0; // Накапливаемый вклад от теней.
|
||||
|
||||
float total_angle = 6.283185307; // Полный круг в радианах (2π).
|
||||
float gap = total_angle * gap_ratio; // Вычисление ширины пробела между точками.
|
||||
float spacing = (total_angle - gap) / float(num_points); // Вычисление интервала между точками.
|
||||
|
||||
// Определение направления вращения кольца.
|
||||
float direction = 1.0; // Вращение по часовой стрелке или против.
|
||||
float rotation = TIME * rotation_speed * direction; // Вычисление текущего угла поворота.
|
||||
|
||||
for (int i = 0; i < num_points; i++) { // Проход по каждой точке кольца.
|
||||
float angle = rotation + spacing * float(i); // Вычисление угла для данной точки.
|
||||
|
||||
vec2 pos = vec2(cos(angle), sin(angle)) * ring_radius; // Вычисление позиции точки по окружности.
|
||||
|
||||
// Вычисление размера точки:
|
||||
float size_factor = 0.5 + (float(i) / float(num_points)); // Фактор уменьшения размера.
|
||||
float radius = all_dots_same_size ? 0.1 * dot_scale : 0.1 * size_factor * dot_scale; // Радиус точки.
|
||||
|
||||
// Интерполяция цвета точки вдоль кольца от начала к концу.
|
||||
float gradient_factor = float(i) / float(num_points - 1); // Фактор градиента для цветовой интерполяции.
|
||||
vec4 dot_color = mix(dot_color_start, dot_color_end, gradient_factor); // Цвет точки.
|
||||
|
||||
// Вычисление вклада точки на основе расстояния.
|
||||
float distance = length(uv - pos); // Расстояние до текущей точки.
|
||||
float contribution = smoothstep(radius + 0.01, radius, distance); // Плавный вклад на основе расстояния.
|
||||
|
||||
if (contribution > 0.0) { // Если вклад точки больше нуля,
|
||||
ring_color = mix(ring_color, dot_color, contribution); // Смешивание с цветом кольца.
|
||||
dot_accum += contribution; // Накопление вклада от точки.
|
||||
}
|
||||
|
||||
// Опциональная тень за каждой точкой.
|
||||
if (enable_shadow) {
|
||||
vec2 shadow_pos = pos + shadow_offset; // Позиция для тени.
|
||||
float shadow_dist = length(uv - shadow_pos); // Расстояние до тени.
|
||||
float shadow_contrib = smoothstep(radius * 1.2 + 0.005, radius * 1.2, shadow_dist); // Вклад от тени.
|
||||
shadow_accum += shadow_contrib; // Накопление вклада от теней.
|
||||
}
|
||||
}
|
||||
|
||||
// Определение базового цвета для кольца или тени.
|
||||
vec4 base_color = vec4(0.0); // Начальный цвет.
|
||||
if (dot_accum > 0.0) { // Если есть вклад от точек,
|
||||
base_color = ring_color; // Установка базового цвета на цвет кольца.
|
||||
} else if (enable_shadow && shadow_accum > 0.0) { // Если тени включены и есть вклад от теней,
|
||||
base_color = shadow_color; // Установка базового цвета на цвет тени.
|
||||
}
|
||||
|
||||
// Отрисовка иконки - приступаем только если show_icon истинно.
|
||||
if (show_icon) {
|
||||
// Создание радиальной маски, чтобы иконка была видимой внутри радиуса icon_size.
|
||||
float icon_mask = smoothstep(icon_size, icon_size - 0.005, length(uv)); // Маска для иконки.
|
||||
|
||||
// Нормализация UV-координат для иконки.
|
||||
vec2 icon_uv = (uv / icon_size + vec2(1.0)) / 2.0; // Превращение из диапазона (-icon_size ... +icon_size) в (0 ... 1).
|
||||
|
||||
// Применение вращения иконки, если оно включено.
|
||||
if (enable_icon_rotation) {
|
||||
float icon_angle = TIME * icon_rotation_speed; // Угол вращения на основе времени и скорости вращения.
|
||||
if (reverse_icon_rotation) {
|
||||
icon_angle = -icon_angle; // Инверсия угла, если требуется.
|
||||
}
|
||||
// Вращение вокруг центра (0.5, 0.5) текстуры иконки.
|
||||
vec2 centered_uv = icon_uv - vec2(0.5); // Смещение UV координат.
|
||||
float s = sin(icon_angle); // Синус угла.
|
||||
float c = cos(icon_angle); // Косинус угла.
|
||||
centered_uv = vec2(centered_uv.x * c - centered_uv.y * s,
|
||||
centered_uv.x * s + centered_uv.y * c); // Применение матрицы вращения.
|
||||
icon_uv = centered_uv + vec2(0.5); // Смещение обратно к нормализованным координатам.
|
||||
}
|
||||
|
||||
vec4 icon_sample = texture(icon_texture, icon_uv); // Получение цвета из текстуры иконки.
|
||||
// Смешивание текстуры иконки с базовым цветом кольца с учетом маски и альфа-канала текстуры.
|
||||
base_color = mix(base_color, icon_sample, icon_mask * icon_sample.a);
|
||||
}
|
||||
|
||||
COLOR = base_color; // Установка финального цвета для текущего пикселя.
|
||||
}
|
||||
@@ -1,6 +1,6 @@
|
||||
[gd_scene load_steps=11 format=3 uid="uid://c7ft3pxeufffh"]
|
||||
|
||||
[ext_resource type="Shader" path="res://opt_btn.gdshader" id="1_sq6hl"]
|
||||
[ext_resource type="Shader" path="res://Shaders/opt_btn.gdshader" id="1_sq6hl"]
|
||||
|
||||
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_0dcn8"]
|
||||
bg_color = Color(0, 0, 0, 1)
|
||||
|
||||
@@ -100,9 +100,9 @@ const OUT_x128: Array = [
|
||||
'Р',
|
||||
'К',
|
||||
'Откл.',
|
||||
'1',]
|
||||
'1'
|
||||
]
|
||||
const RAY_DICT: Array = [
|
||||
' Контроль',
|
||||
' -5°',
|
||||
' 5°',
|
||||
' 15°',
|
||||
@@ -110,7 +110,7 @@ const RAY_DICT: Array = [
|
||||
' 35°',
|
||||
' 45°',
|
||||
' Контроль',
|
||||
]
|
||||
]
|
||||
const ATT_DICT: Array = [
|
||||
' 0 dB',
|
||||
' 0.5 dB',
|
||||
@@ -120,20 +120,18 @@ const ATT_DICT: Array = [
|
||||
' 8.5 dB',
|
||||
' 10 dB',
|
||||
' 10.5 dB',
|
||||
]
|
||||
|
||||
]
|
||||
enum BASE_PORTS {
|
||||
UG = 0x100,
|
||||
EMS_G = 0x120,
|
||||
UKP_1 = 0x130,
|
||||
UKP_2 = 0x140,
|
||||
}
|
||||
|
||||
enum MODE {
|
||||
PRD_K,
|
||||
PRD_B,
|
||||
PRD_H,
|
||||
}
|
||||
}
|
||||
enum Frame {
|
||||
WORK, ## В работе
|
||||
CONSTANT, ## Постоянный сигнал
|
||||
@@ -152,7 +150,7 @@ enum DataIndices {
|
||||
TEMPERATURE_UKP_1 = 47,
|
||||
POWER_UKP_2 = 63,
|
||||
TEMPERATURE_UKP_2 = 79,
|
||||
}
|
||||
}
|
||||
enum STATE {
|
||||
WAIT,
|
||||
READ_ISA,
|
||||
@@ -160,13 +158,12 @@ enum STATE {
|
||||
DONE,
|
||||
IDLE,
|
||||
SEND,
|
||||
}
|
||||
|
||||
}
|
||||
enum STATE_VAL {
|
||||
NONE = 0,
|
||||
GOOD = 1,
|
||||
ERROR = 2 }
|
||||
|
||||
ERROR = 2
|
||||
}
|
||||
var EMS_G_PORT_DATA_HOLDER: Array = []
|
||||
|
||||
const PORT_FS = 1201
|
||||
@@ -175,7 +172,7 @@ enum GROUP {
|
||||
BASE = 0x00,
|
||||
GENERATOR = 0x03,
|
||||
RF = 0x06,
|
||||
}
|
||||
}
|
||||
|
||||
enum CMD {
|
||||
START_SESSION = 0x0,
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
[ext_resource type="Texture2D" uid="uid://ce3qpf070wgd2" path="res://состояние-исправности-0.png" id="1_2n7he"]
|
||||
[ext_resource type="Texture2D" uid="uid://cgtg4gbqnuxrc" path="res://nine-patch-round.png" id="2_4b43i"]
|
||||
[ext_resource type="Texture2D" uid="uid://byweg7pgt8o4h" path="res://состояние-исправности-1.png" id="2_38t58"]
|
||||
[ext_resource type="Shader" path="res://opt_btn.gdshader" id="2_ecsml"]
|
||||
[ext_resource type="Shader" path="res://Shaders/opt_btn.gdshader" id="2_ecsml"]
|
||||
[ext_resource type="Texture2D" uid="uid://dkef6xwxwdxi8" path="res://эмс-бланк.png" id="3_4kmgr"]
|
||||
[ext_resource type="Texture2D" uid="uid://bvikuv0lbvou8" path="res://состояние-исправности-2.png" id="3_i2t3v"]
|
||||
[ext_resource type="Texture2D" uid="uid://b15flrfytxkop" path="res://эмс-бланк-пост.png" id="4_omove"]
|
||||
|
||||
Reference in New Issue
Block a user