55 lines
2.5 KiB
GDScript
55 lines
2.5 KiB
GDScript
class_name Diagram extends Sprite2D
|
||
|
||
const NUM_OF_RANGE = 7
|
||
const NUM_OF_DIRECTIONS = 4
|
||
var fs_default_colors: Array ## Цвета по умолчанию для блоков ФС.
|
||
|
||
func _ready() -> void:
|
||
signaller.connect('map_mode_changed', Callable(self, 'set_view_mode'))
|
||
set_def_colors()
|
||
|
||
|
||
func sv(val: float) -> float: return val / ($строб.scale.x / 2.0) * 0.125
|
||
|
||
func set_strob_visible(val: bool): $строб.visible = val
|
||
func set_strob_center(val: Vector2): $строб.position = val
|
||
func set_strob_dir(val: float): $строб.set_instance_shader_parameter('dir', val)
|
||
func set_strob_color(val: Color): $строб.set_instance_shader_parameter('color', val)
|
||
func set_strob_width(val: float): $строб.set_instance_shader_parameter('width', val)
|
||
func set_strob_band(val: float): $строб.set_instance_shader_parameter('band', val / 125.0)
|
||
func set_strob_radius(val: float): $строб.set_instance_shader_parameter('radius', sv(val))
|
||
|
||
func get_strob_center() -> Vector2: return $строб.position
|
||
func get_strob_visible() -> bool: return $строб.visible
|
||
func get_strob_width() -> float: return $строб.get_instance_shader_parameter('width')
|
||
func get_strob_band() -> float: return $строб.get_instance_shader_parameter('band') * 125.0
|
||
func get_strob_radius() -> float: return $строб.get_instance_shader_parameter('radius') * 125.0
|
||
|
||
func get_radius_outter() -> float: return material.get('shader_parameter/radius_outter')
|
||
func get_radius_inner_0() -> float: return material.get('shader_parameter/radius_inner_0')
|
||
func get_radius_inner_1() -> float: return material.get('shader_parameter/radius_inner_1')
|
||
|
||
func set_band_colors(val: Array): material.set('shader_parameter/ant_band_c', val)
|
||
|
||
|
||
func set_view_mode(val: int):
|
||
if val == 1:
|
||
$строб.hide()
|
||
else:
|
||
$строб.show()
|
||
material.set('shader_parameter/mode', val)
|
||
|
||
|
||
## Закрашивание по умолчанию блоков ФС цветами из настроек.
|
||
func set_def_colors():
|
||
var color0: Vector3 = ProjectSettings.get_setting('application/interfer/default_color0', Vector3(0.38, 0.47, 0.51))
|
||
var color1: Vector3 = ProjectSettings.get_setting('application/interfer/default_color1', Vector3(0.39, 0.44, 0.50))
|
||
var col_arr: Array = [color0, color1]
|
||
var col = false
|
||
for i in NUM_OF_RANGE:
|
||
for j in NUM_OF_DIRECTIONS:
|
||
fs_default_colors.append(col_arr[int(col)])
|
||
col = not col
|
||
col = not col
|
||
set_band_colors(fs_default_colors)
|