diff --git a/scenes/diagram/diagram.gd b/scenes/diagram/diagram.gd index e8280394..862f3855 100644 --- a/scenes/diagram/diagram.gd +++ b/scenes/diagram/diagram.gd @@ -13,6 +13,7 @@ func _ready() -> void: func sv(val: float) -> float: return val / ($строб.scale.x / 2.0) * 0.125 +func set_canvas_rotation(val: float) -> void: material.set('shader_parameter/rotation', val) 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) @@ -29,6 +30,7 @@ func get_strob_band() -> float: return $строб.get_instance_shader_param func get_strob_radius() -> float: return $строб.get_instance_shader_parameter('radius') * 125.0 func get_strob_color() -> float: return $строб.get_instance_shader_parameter('color') +func get_canvas_rotation() -> float: return material.get('shader_parameter/rotation') 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') diff --git a/scenes/tilemap/tilemap.gd b/scenes/tilemap/tilemap.gd index d06c8f06..2cbdfb35 100644 --- a/scenes/tilemap/tilemap.gd +++ b/scenes/tilemap/tilemap.gd @@ -152,7 +152,7 @@ func on_data_received(coords: Dictionary) -> void: if not is_centered: return if coords.has_all(['latitude', 'longitude']): - set_coordinates(coords['longitude'], coords['latitude']) + set_coordinates(coords['longitude'], coords['latitude'], coords['k']) func _on_resize() -> void: @@ -677,7 +677,7 @@ func clear() -> void: queue_redraw() -func set_coordinates(lon: float, lat: float) -> void: +func set_coordinates(lon: float, lat: float, course: float) -> void: var anim: Animation = $player.get_animation('goto') var new_pos: Vector2 = lonlat_to_world(lon, lat) anim.track_insert_key(0, 0, _xyz.x) @@ -690,7 +690,8 @@ func set_coordinates(lon: float, lat: float) -> void: ship_instance = ship_mark.instantiate() add_mark_from_lon_lat(ship_id, lon, lat, ship_instance, 0.0) else: - _marks[ship_id].position = lonlat_to_world(lon, lat) + ship_instance.position = lonlat_to_world(lon, lat) + ship_instance.rotation_degrees = course - 90 func blend_mask(val: bool) -> void: diff --git a/scenes/работа/работа.gd b/scenes/работа/работа.gd index 583da524..6cb7d8d2 100644 --- a/scenes/работа/работа.gd +++ b/scenes/работа/работа.gd @@ -143,6 +143,8 @@ func _ready(): signaller.connect('map_user_panning', Callable(self, 'on_user_panning')) signaller.connect('update_coordinates_map', Callable(self, 'on_update_coordinates_label')) signaller.connect('update_scale_map', Callable(self, 'on_update_scale_label')) + var unit_nav = network.get_unit_instance('навигация') + unit_nav.connect('data_received', on_navi_data_received) on_btn_center_toggled(true) on_btn_activate_toggled(true) #$canvas.add_seczap(0, Vector4(372, 0, 30, 348)) @@ -154,6 +156,10 @@ func _ready(): #$canvas.set_seczap_color(3, Color.CHARTREUSE) +func on_navi_data_received(data: Dictionary): + $canvas.set_canvas_rotation(data.get('k', 0.0)) + + func on_user_panning(): $btn_center.button_pressed = false diff --git a/shaders/antenas.tres b/shaders/antenas.tres index 87248d14..0c40d21f 100644 --- a/shaders/antenas.tres +++ b/shaders/antenas.tres @@ -90,7 +90,7 @@ void antenas(inout vec4 c, vec2 uv, vec2 p0, int cnt, float r0, float r1, inout void vertex() { - rotate_vec2(VERTEX, radians(rotation), pc0); + rotate_vec2(VERTEX, radians(360.0 - rotation), pc0); }