Коммит 01e9d39b создал по автору Vladimir levadnij's avatar Vladimir levadnij
Просмотр файлов

Merge branch 'develop' into 'master'

Формирование релиза проекта версии 0.8.0-alfo

See merge request tehnokom/universo!186
владельцы fa3ef46e 5d3b30da
Это отличие свёрнуто
extends Camera extends Camera
var point_of_interest# к чему привязать камеру
var choose = false # привязать или отвязать камеру
var right_click_mode: bool= false
export var enabled = true setget set_enabled export var enabled = true setget set_enabled
export(int, "Visible", "Hidden", "Captured, Confined") var mouse_mode = 2 export(int, "Visible", "Hidden", "Captured, Confined") var mouse_mode = 2
...@@ -22,7 +26,7 @@ export var distance_step: float = 2.0 ...@@ -22,7 +26,7 @@ export var distance_step: float = 2.0
# Movement settings # Movement settings
export (float, 0.0, 1.0) var acceleration = 0.1 export (float, 0.0, 1.0) var acceleration = 0.1
export (float, 0.0, 0.0, 1.0) var deceleration = 0.1 export (float, 0.0, 0.0, 1.0) var deceleration = 0.1
export var max_speed = Vector3(1.0, 1.0, 1.0) export var max_speed = Vector3(100.0, 100.0, 100.0)
export var local = true export var local = true
# Intern variables. # Intern variables.
...@@ -49,34 +53,40 @@ func _ready(): ...@@ -49,34 +53,40 @@ func _ready():
event.unicode = s event.unicode = s
event.unicode = d event.unicode = d
# #
Input.set_mouse_mode(Input.MOUSE_MODE_CONFINED) Input.set_mouse_mode(Input.MOUSE_MODE_VISIBLE)
#func _input(event):
func _unhandled_input(event): func _unhandled_input(event):
if freelook: if freelook:
if Input.get_action_strength("right_click"): if Input.is_action_just_pressed("right_click"):
right_click_mode = true;
Input.set_mouse_mode(Input.MOUSE_MODE_CAPTURED) Input.set_mouse_mode(Input.MOUSE_MODE_CAPTURED)
if Input.is_action_just_released("right_click"):
right_click_mode = false;
Input.set_mouse_mode(Input.MOUSE_MODE_VISIBLE)
if right_click_mode:
if event is InputEventMouseMotion: if event is InputEventMouseMotion:
_mouse_offset = event.relative _mouse_offset = event.relative
if Input.is_action_just_pressed("ui_select"):
choose=!choose
if choose:
set_privot(point_of_interest)
else: else:
Input.set_mouse_mode(Input.MOUSE_MODE_VISIBLE) set_privot(null)
func _input(event):
if privot: if privot:
if event.is_action_pressed("wheel_down"): if event.is_action_pressed("wheel_down"):
distance-=distance_step distance-=distance_step
if event.is_action_pressed("wheel_up"): if event.is_action_pressed("wheel_up"):
distance += distance_step distance += distance_step
distance += (Input.get_action_strength("ui_down") - Input.get_action_strength("ui_up")) * distance_step * 0.5
distance = clamp(distance,distance_min,distance_max)
else:
_direction.x = Input.get_action_strength("ui_right") - Input.get_action_strength("ui_left")
_direction.y = Input.get_action_strength("ui_page_up") - Input.get_action_strength("ui_page_down")
_direction.z = Input.get_action_strength("ui_down") - Input.get_action_strength("ui_up")
func _physics_process(delta): func _physics_process(delta):
collide() collide()
if privot: if privot:
distance += (Input.get_action_strength("ui_down") - Input.get_action_strength("ui_up")) * distance_step * 0.1
distance = clamp(distance,distance_min,distance_max)
distance_smooth =lerp(distance_smooth,distance,0.05) distance_smooth =lerp(distance_smooth,distance,0.05)
set_translation(privot.get_translation()) set_translation(privot.get_translation())
translate_object_local(Vector3(0.0, 0.0, distance_smooth)) translate_object_local(Vector3(0.0, 0.0, distance_smooth))
...@@ -114,6 +124,12 @@ func collide(): ...@@ -114,6 +124,12 @@ func collide():
_direction.z =-2 _direction.z =-2
func _update_movement(delta): func _update_movement(delta):
if !privot:
_direction.x = Input.get_action_strength("ui_right") - Input.get_action_strength("ui_left")
_direction.y = Input.get_action_strength("ui_page_up") - Input.get_action_strength("ui_page_down")
_direction.z = Input.get_action_strength("ui_down") - Input.get_action_strength("ui_up")
else:
_direction = Vector3.ZERO
var offset = max_speed * acceleration * _direction var offset = max_speed * acceleration * _direction
_speed.x = clamp(_speed.x + offset.x, -max_speed.x, max_speed.x) _speed.x = clamp(_speed.x + offset.x, -max_speed.x, max_speed.x)
...@@ -135,12 +151,12 @@ func _update_movement(delta): ...@@ -135,12 +151,12 @@ func _update_movement(delta):
# warning-ignore:unused_argument # warning-ignore:unused_argument
func _update_rotation(delta): func _update_rotation(delta):
if privot:
_mouse_offset.x -= Input.get_action_strength("ui_right") - Input.get_action_strength("ui_left")
_mouse_offset.y += Input.get_action_strength("ui_page_up") - Input.get_action_strength("ui_page_down")
var offset = Vector2(); var offset = Vector2();
offset += _mouse_offset * sensitivity offset += _mouse_offset * sensitivity
_mouse_offset = Vector2() _mouse_offset = Vector2()
_yaw = _yaw * smoothness + offset.x * (1.0 - smoothness) _yaw = _yaw * smoothness + offset.x * (1.0 - smoothness)
_pitch = _pitch * smoothness + offset.y * (1.0 - smoothness) _pitch = _pitch * smoothness + offset.y * (1.0 - smoothness)
...@@ -154,6 +170,9 @@ func _update_rotation(delta): ...@@ -154,6 +170,9 @@ func _update_rotation(delta):
rotate_y(deg2rad(-_yaw)) rotate_y(deg2rad(-_yaw))
rotate_object_local(Vector3(1,0,0), deg2rad(-_pitch)) rotate_object_local(Vector3(1,0,0), deg2rad(-_pitch))
func set_point_of_interest(ship):
point_of_interest = ship
func set_privot(value): func set_privot(value):
privot = value privot = value
if privot: if privot:
......
extends Control extends Control
onready var margin = $"/root/Title/CanvasLayer/UI/Objektoj/Window/canvas/MarginContainer" onready var window = $"/root/Title/CanvasLayer/UI/Objektoj/Window"
onready var margin = $"/root/Title/CanvasLayer/UI/Objektoj/Window/VBox"
var camera #камера
export var z_away = 100 # насколько глубоко\далеко будет точка пути от экрана
var index_pos = 0 var index_pos = 0
func _input(event: InputEvent) -> void: func _input(event: InputEvent) -> void:
if Input.is_action_just_pressed("left_click"):
if event is InputEventMouseButton and event.doubleclick:
#Если кнопка нажата, то бросаем луч из камеры на глубину z_away и получаем точку, тут же устанавливаем новый вейпойнт с координатами
var celo = Transform(Basis.IDENTITY, camera.project_position(get_viewport().get_mouse_position(),z_away))
Global.fenestro_itinero.okazigi_itinero(
'', '', celo.origin.x, celo.origin.y, celo.origin.z,
celo, -1, Net.kategorio_movado, true
)
if Input.is_action_just_pressed("right_click"): if Input.is_action_just_pressed("right_click"):
# event.pressed=true # event.pressed=true
if event is InputEventMouseButton and $"/root/Title/CanvasLayer/UI/Objektoj/Window/canvas/MarginContainer".visible: if event is InputEventMouseButton and $"/root/Title/CanvasLayer/UI/Objektoj/Window/VBox".visible:
$canvas/PopupMenu.set_item_disabled(2,true) $canvas/PopupMenu.set_item_disabled(2,true)
# $canvas/PopupMenu.mouse_filter=2
var x = $".".get_global_mouse_position().x var x = $".".get_global_mouse_position().x
var y = $".".get_global_mouse_position().y var y = $".".get_global_mouse_position().y
if (margin.margin_top<y) and (y<margin.margin_bottom) and (margin.margin_left<x) and (x<margin.margin_right): var mrg = margin
if (margin.margin_top+window.rect_global_position.y<y) and \
(y<margin.margin_bottom+window.rect_global_position.y) and \
(margin.margin_left+window.rect_global_position.x<x) and \
(x<margin.margin_right+window.rect_global_position.x):
$canvas/PopupMenu.margin_left=x $canvas/PopupMenu.margin_left=x
$canvas/PopupMenu.margin_top=y $canvas/PopupMenu.margin_top=y
$canvas/PopupMenu.visible=true $canvas/PopupMenu.visible=true
# #если пункт меню - станция # #если пункт меню - станция
x = $"/root/Title/CanvasLayer/UI/Objektoj/Window/canvas/MarginContainer/VBoxContainer/scroll/ItemList".get_local_mouse_position().x x = $"/root/Title/CanvasLayer/UI/Objektoj/Window/VBox/body_texture/ItemList".get_local_mouse_position().x
y = $"/root/Title/CanvasLayer/UI/Objektoj/Window/canvas/MarginContainer/VBoxContainer/scroll/ItemList".get_local_mouse_position().y y = $"/root/Title/CanvasLayer/UI/Objektoj/Window/VBox/body_texture/ItemList".get_local_mouse_position().y
index_pos = $"/root/Title/CanvasLayer/UI/Objektoj/Window/canvas/MarginContainer/VBoxContainer/scroll/ItemList".get_item_at_position(Vector2(x,y),true) index_pos = $"/root/Title/CanvasLayer/UI/Objektoj/Window/VBox/body_texture/ItemList".get_item_at_position(Vector2(x,y),true)
$"/root/Title/CanvasLayer/UI/Objektoj/Window/canvas/MarginContainer/VBoxContainer/scroll/ItemList".select(index_pos) $"/root/Title/CanvasLayer/UI/Objektoj/Window/VBox/body_texture/ItemList".select(index_pos)
if Global.objektoj[index_pos]['resurso']['objId'] == 1:#объект станция Espero if Global.objektoj[index_pos]['resurso']['objId'] == 1:#объект станция Espero
#проверяем как далеко от станции и если менее 20, то разрешаем войти #проверяем как далеко от станции и если менее 20, то разрешаем войти
var dist = $"../ship".translation.distance_to(Vector3( var dist = $"../ship".translation.distance_to(Vector3(
...@@ -33,6 +49,7 @@ func _input(event: InputEvent) -> void: ...@@ -33,6 +49,7 @@ func _input(event: InputEvent) -> void:
$canvas/PopupMenu.set_item_disabled(2,false) $canvas/PopupMenu.set_item_disabled(2,false)
# сдвиг по всем координатам по целеполаганию полёта к объекту # сдвиг по всем координатам по целеполаганию полёта к объекту
const translacio = 20 const translacio = 20
const translacio_stat = 300 const translacio_stat = 300
...@@ -49,12 +66,12 @@ func go_kosmostacioj(): ...@@ -49,12 +66,12 @@ func go_kosmostacioj():
# закрываем проект # закрываем проект
# добавляем запись в связи, что находимся внутри # добавляем запись в связи, что находимся внутри
var uuid_tasko = '' var uuid_tasko = ''
if $"../ship".projekto_uuid: if Global.fenestro_itinero.projekto_itineroj_uuid:
uuid_tasko = Global.itineroj[0]['uuid_tasko'] uuid_tasko = Global.fenestro_itinero.itineroj.front()['uuid_tasko']
var error = Title.get_node("request").request(q.URL_DATA, var error = Title.get_node("request").request(q.URL_DATA,
Global.backend_headers, Global.backend_headers,
true, 2, q.eniri_kosmostacio( true, 2, q.eniri_kosmostacio(
$"../ship".projekto_uuid, Global.fenestro_itinero.projekto_itineroj_uuid,
uuid_tasko, uuid_tasko,
Global.objektoj[index_pos]['uuid'])) Global.objektoj[index_pos]['uuid']))
# Если запрос не выполнен из-за какой-то ошибки # Если запрос не выполнен из-за какой-то ошибки
...@@ -77,19 +94,23 @@ func go_kosmostacioj(): ...@@ -77,19 +94,23 @@ func go_kosmostacioj():
get_tree().change_scene('res://blokoj/kosmostacioj/CapKosmostacio.tscn') get_tree().change_scene('res://blokoj/kosmostacioj/CapKosmostacio.tscn')
# выбрали позицию в меню
func _on_PopupMenu_index_pressed(index): func _on_PopupMenu_index_pressed(index):
var ship = $"../".get_node("ship")
var objekto
# вычисляем объект в космосе
# проходим по всем созданным объектам в космосе и находим нужный по uuid
for child in $"../".get_children():
if child.is_in_group('create'):
if child.uuid == Global.objektoj[index_pos]['uuid']:
objekto = child
break
if index == 2: # если выбран вход в станцию if index == 2: # если выбран вход в станцию
go_kosmostacioj() go_kosmostacioj()
elif index == 3: # если выбрана стрельба по объекту elif index == 3: # если выбрана стрельба по объекту
# вычисляем объект в космосе $"../ship/laser_gun".set_target(objekto)
# проходим по всем созданным объектам в космосе и находим нужный по uuid elif index == 4: # взять в прицел
for child in $"../".get_children(): ship.set_celilo(objekto)
if child.is_in_group('create'):
if child.uuid == Global.objektoj[index_pos]['uuid']:
# for ch in $"../ship/CollisionShape".get_children():
# print('==',ch.name)
# $"../ship/CollisionShape/laser_gun".set_target(child.get_global_transform())
$"../ship/laser_gun".set_target(child)
else: # если выбрано движение к цели или добавление в маршрут else: # если выбрано движение к цели или добавление в маршрут
# вычисляем точку в пространстве, придвинутую на translacio ближе # вычисляем точку в пространстве, придвинутую на translacio ближе
# если станция, то дистанция больше # если станция, то дистанция больше
...@@ -104,23 +125,29 @@ func _on_PopupMenu_index_pressed(index): ...@@ -104,23 +125,29 @@ func _on_PopupMenu_index_pressed(index):
dist = $"../ship".translation.distance_to(celo) - translacio dist = $"../ship".translation.distance_to(celo) - translacio
var speed = celo - $"../ship".translation var speed = celo - $"../ship".translation
celo = $"../ship".translation + speed.normalized() * dist celo = $"../ship".translation + speed.normalized() * dist
if index==0: # отправка корабля к цели
Global.fenestro_itinero.add_itinero( Global.fenestro_itinero.okazigi_itinero(
'', Global.objektoj[index_pos]['uuid'],
Global.objektoj[index_pos]['uuid'], Global.objektoj[index_pos]['nomo']['enhavo'], #'nomo'
Global.objektoj[index_pos]['nomo']['enhavo'], #'nomo' celo.x,
celo.x, celo.y,
celo.y, celo.z,
celo.z, Transform(Basis.IDENTITY, celo),
dist dist,
) Net.kategorio_movado,
Global.fenestro_itinero.FillItemList() false
if index==0: )
Global.fenestro_itinero.komenci_itinero() elif index==1: # добавление точки в маршрут
# elif index==1: Global.fenestro_itinero.add_itinero(
'',
Global.objektoj[index_pos]['uuid'],
func _on_PopupMenu_draw(): Global.objektoj[index_pos]['nomo']['enhavo'], #'nomo'
# $canvas/PopupMenu.mouse_filter=0 #для отключения игнорирования меню и его реакции на выбор пунктов celo.x,
pass # Replace with function body. celo.y,
celo.z,
Transform(Basis.IDENTITY, celo),
dist,
Net.kategorio_movado,
-1 #pozicio
)
...@@ -18,8 +18,8 @@ func objecto_mutation(uuid, koordX, koordY, koordZ, rotaciaX, rotaciaY, rotaciaZ ...@@ -18,8 +18,8 @@ func objecto_mutation(uuid, koordX, koordY, koordZ, rotaciaX, rotaciaY, rotaciaZ
# устанавливаем проект # устанавливаем проект
func instalo_projekto(objektoUuid, kom_koordX, kom_koordY, kom_koordZ, func instalo_projekto_json(objektoUuid, kom_koordX, kom_koordY, kom_koordZ,
fin_koordX, fin_koordY, fin_koordZ): fin_koordX, fin_koordY, fin_koordZ, id):
var tipoId = 2 var tipoId = 2
var kategorio = 3 var kategorio = 3
var statusoId = 2 var statusoId = 2
...@@ -27,7 +27,12 @@ func instalo_projekto(objektoUuid, kom_koordX, kom_koordY, kom_koordZ, ...@@ -27,7 +27,12 @@ func instalo_projekto(objektoUuid, kom_koordX, kom_koordY, kom_koordZ,
var priskribo = "Movado de objekto" var priskribo = "Movado de objekto"
var statusoPosedantoId = 1 var statusoPosedantoId = 1
var tipoPosedantoId = 1 var tipoPosedantoId = 1
var query = JSON.print({ 'query': 'mutation ($tipoId:Int, $kategorio:[Int],'+ if !id:
id = Net.get_current_query_id()
var query = JSON.print({
'type': 'start',
'id': '%s' % id,
'payload':{ 'query': 'mutation ($tipoId:Int, $kategorio:[Int],'+
' $nomo:String, $priskribo:String, $statusoId:Int, $kom_koordX:Float, '+ ' $nomo:String, $priskribo:String, $statusoId:Int, $kom_koordX:Float, '+
' $kom_koordY:Float, $kom_koordZ:Float, $fin_koordX:Float, '+ ' $kom_koordY:Float, $kom_koordZ:Float, $fin_koordX:Float, '+
' $fin_koordY:Float, $fin_koordZ:Float, $tipoPosedantoId:Int,'+ ' $fin_koordY:Float, $fin_koordZ:Float, $tipoPosedantoId:Int,'+
...@@ -48,16 +53,17 @@ func instalo_projekto(objektoUuid, kom_koordX, kom_koordY, kom_koordZ, ...@@ -48,16 +53,17 @@ func instalo_projekto(objektoUuid, kom_koordX, kom_koordY, kom_koordZ,
"fin_koordX":fin_koordX, "fin_koordX":fin_koordX,
"fin_koordY":fin_koordY, "fin_koordZ":fin_koordZ, "fin_koordY":fin_koordY, "fin_koordZ":fin_koordZ,
"objektoUuid":objektoUuid, "statusoPosedantoId":statusoPosedantoId, "objektoUuid":objektoUuid, "statusoPosedantoId":statusoPosedantoId,
"tipoPosedantoId":tipoPosedantoId, "realecoId":Global.realeco} }) "tipoPosedantoId":tipoPosedantoId, "realecoId":Global.realeco} }})
# print('===instalo_projekto===',query) # print('===instalo_projekto===',query)
return query return query
# записываем список задач с их владельцами и текущие координаты объекту
func instalo_tasko_posedanto_koord(uuid, projekto_uuid, kom_koordX, kom_koordY, kom_koordZ, itineroj): # записываем список задач с их владельцами и текущие координаты объекту
func instalo_tasko_posedanto_koord(uuid, projekto_uuid, kom_koordX, kom_koordY, kom_koordZ, itineroj, id=0):
# создаём список задач, создаём владельца проекта, устанавливаем координаты объекту # создаём список задач, создаём владельца проекта, устанавливаем координаты объекту
var tipoId = 2 var tipoId = 2
var kategorio = 3 var kategorio = 3
var statusoId = [2] var statusoId = [2] # первая задача в работе
var nomo = "Movado" var nomo = "Movado"
var priskribo = "Movado de objekto" var priskribo = "Movado de objekto"
var tipoPosedantoId = 1 var tipoPosedantoId = 1
...@@ -81,13 +87,18 @@ func instalo_tasko_posedanto_koord(uuid, projekto_uuid, kom_koordX, kom_koordY, ...@@ -81,13 +87,18 @@ func instalo_tasko_posedanto_koord(uuid, projekto_uuid, kom_koordX, kom_koordY,
komKoordinatoX.append(itineroj[i-1]['koordinatoX']) komKoordinatoX.append(itineroj[i-1]['koordinatoX'])
komKoordinatoY.append(itineroj[i-1]['koordinatoY']) komKoordinatoY.append(itineroj[i-1]['koordinatoY'])
komKoordinatoZ.append(itineroj[i-1]['koordinatoZ']) komKoordinatoZ.append(itineroj[i-1]['koordinatoZ'])
statusoId.append(1) statusoId.append(1) # новая задача
fin_koordX.append(itineroj[i]['koordinatoX']) fin_koordX.append(itineroj[i]['koordinatoX'])
fin_koordY.append(itineroj[i]['koordinatoY']) fin_koordY.append(itineroj[i]['koordinatoY'])
fin_koordZ.append(itineroj[i]['koordinatoZ']) fin_koordZ.append(itineroj[i]['koordinatoZ'])
i += 1 i += 1
var query = JSON.print({ 'query': 'mutation ($uuid:UUID, $koordX:Float, $koordY:Float, $koordZ:Float, ' + if !id:
id = Net.get_current_query_id()
var query = JSON.print({
'type': 'start',
'id': '%s' % id,
'payload':{ 'query': 'mutation ($uuid:UUID, $koordX:Float, $koordY:Float, $koordZ:Float, ' +
'$tipoId:Int, $kategorio:[Int], $nomo:String, $priskribo:String, $statusoId:[Int], $projekto_uuid: String,' + '$tipoId:Int, $kategorio:[Int], $nomo:String, $priskribo:String, $statusoId:[Int], $projekto_uuid: String,' +
'$komKoordinatoX:[Float], $komKoordinatoY:[Float], $komKoordinatoZ:[Float], $tipoPosedantoId:Int,' + '$komKoordinatoX:[Float], $komKoordinatoY:[Float], $komKoordinatoZ:[Float], $tipoPosedantoId:Int,' +
'$fin_koordX:[Float], $fin_koordY:[Float], $fin_koordZ:[Float], $pozicio:[Int], $statusoPosedantoId:Int,' + '$fin_koordX:[Float], $fin_koordY:[Float], $fin_koordZ:[Float], $pozicio:[Int], $statusoPosedantoId:Int,' +
...@@ -107,14 +118,14 @@ func instalo_tasko_posedanto_koord(uuid, projekto_uuid, kom_koordX, kom_koordY, ...@@ -107,14 +118,14 @@ func instalo_tasko_posedanto_koord(uuid, projekto_uuid, kom_koordX, kom_koordY,
"fin_koordY":fin_koordY, "fin_koordZ":fin_koordZ, "tipoPosedantoId":tipoPosedantoId, "fin_koordY":fin_koordY, "fin_koordZ":fin_koordZ, "tipoPosedantoId":tipoPosedantoId,
"statusoPosedantoId":statusoPosedantoId, "objektoUuid":uuid, "pozicio":pozicio, "statusoPosedantoId":statusoPosedantoId, "objektoUuid":uuid, "pozicio":pozicio,
"komKoordinatoX":komKoordinatoX, "komKoordinatoY":komKoordinatoY, "komKoordinatoZ":komKoordinatoZ, "komKoordinatoX":komKoordinatoX, "komKoordinatoY":komKoordinatoY, "komKoordinatoZ":komKoordinatoZ,
"realecoId":Global.realeco}}) "realecoId":Global.realeco}}})
# print('===instalo_tasko_posedanto_koord===',query) # print('===instalo_tasko_posedanto_koord===',query)
return query return query
# создаём задачу, устанавливаем координаты объекту, изменяем финальные координаты проекту # создаём задачу, устанавливаем координаты объекту, изменяем финальные координаты проекту
func instalo_tasko_koord(uuid, projekto_uuid, kom_koordX, kom_koordY, kom_koordZ, func instalo_tasko_koord_json(uuid, projekto_uuid, kom_koordX, kom_koordY, kom_koordZ,
fin_koordX, fin_koordY, fin_koordZ): fin_koordX, fin_koordY, fin_koordZ, id=0):
var posedantoTipoId = 1 var posedantoTipoId = 1
var posedantoStatusoId = 1 var posedantoStatusoId = 1
var tipoId = 2 var tipoId = 2
...@@ -122,10 +133,15 @@ func instalo_tasko_koord(uuid, projekto_uuid, kom_koordX, kom_koordY, kom_koordZ ...@@ -122,10 +133,15 @@ func instalo_tasko_koord(uuid, projekto_uuid, kom_koordX, kom_koordY, kom_koordZ
var statusoId = 2 var statusoId = 2
var nomo = "Movado" var nomo = "Movado"
var priskribo = "Movado de objekto" var priskribo = "Movado de objekto"
var query = JSON.print({ 'query': 'mutation ($uuid:UUID, $koordX:Float, $koordY:Float, $koordZ:Float, '+ if !id:
id = Net.get_current_query_id()
var query = JSON.print({
'type': 'start',
'id': '%s' % id,
'payload':{ 'query': 'mutation ($uuid:UUID, $koordX:Float, $koordY:Float, $koordZ:Float, '+
'$tipoId:Int, $kategorio:[Int], $nomo:String, $priskribo:String, $statusoId:Int, $projekto_uuid: UUID,'+ '$tipoId:Int, $kategorio:[Int], $nomo:String, $priskribo:String, $statusoId:Int, $projekto_uuid: UUID,'+
'$fin_koordX:Float, $fin_koordY:Float, $fin_koordZ:Float, $projektoUuid: String, '+ '$fin_koordX:Float, $fin_koordY:Float, $fin_koordZ:Float, $projektoUuid: String, '+
'$posedantoTipoId:Int, $posedantoStatusoId:Int, $objektoUuid:String, '+ '$posedantoTipoId:Int, $posedantoStatusoId:Int, $objektoUuid:String, $UzantoId:Int'+
'$realecoId:Int)'+ '$realecoId:Int)'+
'{ redaktuUniversoObjekto ( uuid: $uuid, koordinatoX: $koordX, koordinatoY: $koordY, '+ '{ redaktuUniversoObjekto ( uuid: $uuid, koordinatoX: $koordX, koordinatoY: $koordY, '+
' koordinatoZ: $koordZ, realecoId:$realecoId ) { status message universoObjektoj { uuid } } '+ ' koordinatoZ: $koordZ, realecoId:$realecoId ) { status message universoObjektoj { uuid } } '+
...@@ -134,6 +150,7 @@ func instalo_tasko_koord(uuid, projekto_uuid, kom_koordX, kom_koordY, kom_koordZ ...@@ -134,6 +150,7 @@ func instalo_tasko_koord(uuid, projekto_uuid, kom_koordX, kom_koordY, kom_koordZ
' komKoordinatoY:$koordY, komKoordinatoZ:$koordZ, finKoordinatoX:$fin_koordX,'+ ' komKoordinatoY:$koordY, komKoordinatoZ:$koordZ, finKoordinatoX:$fin_koordX,'+
' finKoordinatoY:$fin_koordY, finKoordinatoZ:$fin_koordZ, posedantoTipoId:$posedantoTipoId, '+ ' finKoordinatoY:$fin_koordY, finKoordinatoZ:$fin_koordZ, posedantoTipoId:$posedantoTipoId, '+
' objektoUuid:$objektoUuid, posedantoStatusoId:$posedantoStatusoId, '+ ' objektoUuid:$objektoUuid, posedantoStatusoId:$posedantoStatusoId, '+
' posedantoUzantoSiriusoUzantoId: $UzantoId, ' +
' realecoId:$realecoId) '+ ' realecoId:$realecoId) '+
'{ status '+ '{ status '+
' message universoTaskoj { uuid } } '+ ' message universoTaskoj { uuid } } '+
...@@ -147,25 +164,49 @@ func instalo_tasko_koord(uuid, projekto_uuid, kom_koordX, kom_koordY, kom_koordZ ...@@ -147,25 +164,49 @@ func instalo_tasko_koord(uuid, projekto_uuid, kom_koordX, kom_koordY, kom_koordZ
"statusoId": statusoId, "projekto_uuid": projekto_uuid, "projektoUuid": projekto_uuid, "statusoId": statusoId, "projekto_uuid": projekto_uuid, "projektoUuid": projekto_uuid,
"fin_koordX":fin_koordX, "fin_koordY":fin_koordY, "fin_koordZ":fin_koordZ, "fin_koordX":fin_koordX, "fin_koordY":fin_koordY, "fin_koordZ":fin_koordZ,
"posedantoStatusoId":posedantoStatusoId, "posedantoTipoId":posedantoTipoId, "posedantoStatusoId":posedantoStatusoId, "posedantoTipoId":posedantoTipoId,
"objektoUuid":uuid, "realecoId":Global.realeco } }) "UzantoId":Global.id,
"objektoUuid":uuid, "realecoId":Global.realeco } }})
# print('===instalo_tasko_koord===',query) # print('===instalo_tasko_koord===',query)
return query return query
# # завершение задачи
# func finado_tasko(tasko_uuid, statusoId = 4):
# return JSON.print({ 'query': 'mutation ($uuid:UUID, '+
# ' $statusoId:Int, )'+
# '{ redaktuUniversoTaskoj (uuid: $uuid, '+
# ' statusoId:$statusoId) { status '+
# ' message universoTaskoj { uuid } } }',
# 'variables': {"uuid":tasko_uuid, "statusoId": statusoId } })
# завершение задачи # завершение задачи
func finado_tasko(tasko_uuid, statusoId = 4): #!!! хорошо бы отправлять координаты до куда долетел по факту
return JSON.print({ 'query': 'mutation ($uuid:UUID, '+ func finado_tasko(tasko_uuid, statusoId = 4, id=0):
if !id:
id = Net.get_current_query_id()
var query = JSON.print({
'type': 'start',
'id': '%s' % id,
'payload':{ 'query': 'mutation ($uuid:UUID, '+
' $statusoId:Int, )'+ ' $statusoId:Int, )'+
'{ redaktuUniversoTaskoj (uuid: $uuid, '+ '{ redaktuUniversoTaskoj (uuid: $uuid, '+
' statusoId:$statusoId) { status '+ ' statusoId:$statusoId) { status '+
' message universoTaskoj { uuid } } }', ' message universoTaskoj { uuid } } }',
'variables': {"uuid":tasko_uuid, "statusoId": statusoId } }) 'variables': {"uuid":tasko_uuid, "statusoId": statusoId } }})
# print('===finado_tasko==',query)
return query
# завершение задачи и проекта # завершение задачи и проекта
func finado_projeko_tasko(projekto_uuid, tasko_uuid): func finado_projekto_tasko_json(projekto_uuid, tasko_uuid, id=0):
var statusoId = 4 var statusoId = 4
return JSON.print({ 'query': 'mutation ($tasko_uuid:UUID, $projekto_uuid:UUID, '+ if !id:
id = Net.get_current_query_id()
return JSON.print({
'type': 'start',
'id': '%s' % id,
'payload':{ 'query': 'mutation ($tasko_uuid:UUID, $projekto_uuid:UUID, '+
' $statusoId:Int, )'+ ' $statusoId:Int, )'+
'{ redaktuUniversoTaskoj (uuid: $tasko_uuid, '+ '{ redaktuUniversoTaskoj (uuid: $tasko_uuid, '+
' statusoId:$statusoId) { status '+ ' statusoId:$statusoId) { status '+
...@@ -174,15 +215,14 @@ func finado_projeko_tasko(projekto_uuid, tasko_uuid): ...@@ -174,15 +215,14 @@ func finado_projeko_tasko(projekto_uuid, tasko_uuid):
' statusoId:$statusoId) { status '+ ' statusoId:$statusoId) { status '+
' message universoProjekto { uuid } } '+ ' message universoProjekto { uuid } } '+
'}', '}',
'variables': {"tasko_uuid":tasko_uuid, "statusoId": statusoId, "projekto_uuid":projekto_uuid } }) 'variables': {"tasko_uuid":tasko_uuid, "statusoId": statusoId, "projekto_uuid":projekto_uuid } } })
# завершение проекта # завершение проекта
func finado_projeko_json(projekto_uuid, id=0): func finado_projeko_json(projekto_uuid, id=0):
var statusoId = 4 # Закрыт var statusoId = 4 # Закрыт
if !id: if !id:
id = Net.current_query_id id = Net.get_current_query_id()
Net.current_query_id += 1
return JSON.print({ return JSON.print({
'type': 'start', 'type': 'start',
'id': '%s' % id, 'id': '%s' % id,
...@@ -194,37 +234,29 @@ func finado_projeko_json(projekto_uuid, id=0): ...@@ -194,37 +234,29 @@ func finado_projeko_json(projekto_uuid, id=0):
'}', '}',
'variables': {"statusoId": statusoId, "projekto_uuid":projekto_uuid } }}) 'variables': {"statusoId": statusoId, "projekto_uuid":projekto_uuid } }})
# подписка на действия в кубе # подписка на действия в кубе
func kubo_json(id=0): func kubo_json(id=0):
if !id: if !id:
id = Net.current_query_id id = Net.get_current_query_id()
Net.current_query_id += 1
var kategorio = 3 # категория движения объектов в космосе
return JSON.print({ return JSON.print({
'type': 'start', 'type': 'start',
'id': '%s' % id, 'id': '%s' % id,
'payload':{ 'query': 'subscription ($kuboj:[Int]!, $realeco:Int!, $kategorio:Int!)'+ 'payload':{ 'query': 'subscription ($kuboj:[Int]!, $realeco:Int!)'+
'{ universoObjektoEventoj (kuboj: $kuboj, realeco:$realeco, kategorio: $kategorio) { evento '+ '{ universoObjektoEventoj (kuboj: $kuboj, realeco:$realeco) { evento '+
' objekto { uuid koordinatoX koordinatoY koordinatoZ} '+ ' objekto { uuid koordinatoX koordinatoY koordinatoZ '+
' projekto {uuid} '+ " stato{objId potenco integreco statoAntaua {integreco} "+
" statoSekva{integreco}} integreco" +
" resurso{objId tipo{objId}}" +
' rotaciaX rotaciaY rotaciaZ } '+
' projekto {uuid kategorio {edges {node {objId }}}} '+
' tasko { uuid komKoordinatoX komKoordinatoY '+ ' tasko { uuid komKoordinatoX komKoordinatoY '+
' komKoordinatoZ finKoordinatoX finKoordinatoY '+ " objekto{uuid nomo {enhavo}} " +
' finKoordinatoZ pozicio statuso{objId} kategorio { '+ ' posedanto{edges{node{ posedantoObjekto{uuid} }}}' +
' edges { node { objId } } }} } '+ ' komKoordinatoZ finKoordinatoX finKoordinatoY '+
' finKoordinatoZ pozicio statuso{objId} kategorio { '+
' edges { node { objId } } }} } '+
'}', '}',
'variables': {"kuboj": Global.kubo, "realeco": Global.realeco, "kategorio":kategorio } }}) 'variables': {"kuboj": Global.kubo, "realeco": Global.realeco } }})
func test_json(id=0):
if !id:
id = Net.current_query_id
Net.current_query_id += 1
return JSON.print({
'type': 'start',
'id': '%s' % id,
'payload':{ 'query': 'subscription '+
'{ mesagxiloEventoj (babilejoj: [1,2]) { ' +
'evento ' +
'babilejo { uuid } } }'}})
...@@ -9,64 +9,101 @@ const Zoom_Step: float = 1.0 ...@@ -9,64 +9,101 @@ const Zoom_Step: float = 1.0
#const MIN_ROT_Y = -1.55 #(89 градусов) #const MIN_ROT_Y = -1.55 #(89 градусов)
#const MAX_ROT_Y = 0.79 #(45 градусов) #const MAX_ROT_Y = 0.79 #(45 градусов)
var max_speed =1000.0 var max_speed =500.0
# текущая скорость
var current_speed =0 var current_speed =0
var acceleration = 0.5 var acceleration = 1
var way_point: Vector3 = Vector3() # Координаты точки, в которую летим var way_point: Vector3 = Vector3() # Координаты точки, в которую летим
var target_dir: Vector3 = Vector3.ZERO #направление на эту точку от текущей позиции корабля var target_dir: Vector3 = Vector3.ZERO #направление на эту точку от текущей позиции корабля
var target_rot #положение корабля, которое надо принять, чтобы нацелиться на точку. var target_rot = null #положение корабля, которое надо принять, чтобы нацелиться на точку.
var speed_rotation =0.03 var speed_rotation = 1
var middle_mouse_pressed = false var middle_mouse_pressed = false
var docking_rotation var docking_rotation
var uuid #uuid активного корабля игрока var uuid #uuid активного корабля игрока
var projekto_uuid # взятые в прицел, массив объектов, взятых в прицел
var celilo = []
var max_celilo = 1 # максимальное количество прицелов
var livero = false # произошел выстрел и запущена перезарядка
func _ready(): func _ready():
$CollisionShape.queue_free() $CollisionShape.queue_free()
pass
func _physics_process(delta): func _physics_process(delta):
if target_dir != Vector3.ZERO: #Если цель существует, двигаемся # если категория задачи равна категории движения объекта, тогда двигаемся
target_dir = (way_point - translation).normalized() if !(Global.fenestro_itinero.itineroj.empty() or \
if translation.distance_to(way_point) > max_speed*delta/acceleration: Global.fenestro_itinero.itinero_pause) and \
current_speed = lerp(current_speed,max_speed,delta*acceleration) (Global.fenestro_itinero.itineroj.front()['kategorio']==Net.kategorio_movado): #Если цель существует, двигаемся
transform.basis = Basis(Quat(transform.basis).slerp(target_rot,speed_rotation)) #потихоньку поворачиваем корабль на цель. Взято у Сканера из урока про зомбей. Quat(transform.basis) - текущий поворот корабля if !target_rot:
else: # print('target_rot = ',Global.fenestro_itinero.itineroj.front()['transform'].origin)
if translation.distance_to(way_point) <0.01: target_rot = Quat(transform.looking_at(Global.fenestro_itinero.itineroj.front()['transform'].origin,Vector3.UP).basis) #запоминаем в какое положение надо установить корабль, чтобы нос был к цели. Это в кватернионах. ХЗ что это, но именно так вращать правильнее всего.
if docking_rotation !=null:
transform.basis = Basis(Quat(docking_rotation)) var target_dir = (Global.fenestro_itinero.itineroj.front()['transform'].origin - translation).normalized()
translation = way_point var distance = translation.distance_to(Global.fenestro_itinero.itineroj.front()['transform'].origin)
clear_way_point() if (len (Global.fenestro_itinero.itineroj)>1) and \
print("doexali") (Global.fenestro_itinero.itineroj[1]['kategorio']==Net.kategorio_movado):
# останавливаем таймер передачи данных на сервер # проверяем, если следующая точка является движением
$"../timer".stop() if distance <1: #Если это не последняя точка, то мы не тормозим, так что завышаем расстояние, чтобы не проскочить эту точку
#отправка последних координат и закрытие задачи с проектом dec_route()
finofara_flugo()
return return
current_speed = lerp(current_speed,50,delta*acceleration) current_speed = lerp(current_speed,max_speed,delta*acceleration)#ускоряемся
transform.basis = transform.basis.slerp(target_rot,speed_rotation*delta) #потихоньку поворачиваем корабль на цель. Взято у Сканера из урока про зомбей. Quat(transform.basis) - текущий поворот корабля
if docking_rotation != null: else:
transform.basis = Basis(Quat(transform.basis).slerp(docking_rotation,speed_rotation*1.5)) #поворачиваем в дефолтное состояние, чтобы сесть if distance > max_speed*delta/acceleration:#Тут сомнительная формула от фонаря, вычисляющая примерно откуда надо начинать тормозить корабль.
current_speed = lerp(current_speed,max_speed,delta*acceleration)#ускоряемся
var a = Quat(transform.basis)
var c = a.slerp(target_rot,speed_rotation*delta) #потихоньку поворачиваем корабль на цель. Взято у Сканера из урока про зомбей. Quat(transform.basis) - текущий поворот корабля
transform.basis = Basis(c)
# transform.basis = transform.basis.slerp(target_rot,speed_rotation*delta) #потихоньку поворачиваем корабль на цель. Взято у Сканера из урока про зомбей. Quat(transform.basis) - текущий поворот корабля
else: #Если это последняя точка, то мы тормозим, и задаём минимальное расстояние, чтобы точнее выставить корабль
current_speed = lerp(current_speed,50,delta*acceleration)#замедляемся
if Global.fenestro_itinero.itineroj.front()['transform'].basis !=Basis.IDENTITY:
transform.basis = transform.basis.slerp(Quat(Global.fenestro_itinero.itineroj.front()['transform'].basis),speed_rotation*delta*1.5) #поворачиваем в дефолтное состояние, чтобы сесть
if distance <0.01:
if Global.fenestro_itinero.itineroj.front()['transform'].basis !=Basis.IDENTITY:
transform.basis = Global.fenestro_itinero.itineroj.front()['transform'].basis
translation = Global.fenestro_itinero.itineroj.front()['transform'].origin
clear_route()
return
# warning-ignore:return_value_discarded # warning-ignore:return_value_discarded
move_and_slide(target_dir*delta*current_speed) #Двигаемся к цели move_and_slide(target_dir*delta*current_speed) #Двигаемся к цели и тут можно передать transform на сервер
Global.fenestro_itinero.distance_to(translation)
Title.get_node("CanvasLayer/UI/Objektoj/Window").distance_to(translation) Title.get_node("CanvasLayer/UI/Objektoj/Window").distance_to(translation)
# вывод целей на экран
# if get_node_or_null('Control'):
if celilo.size()>0:
if livero:
$Control/kanonadi/livero.value = $Control/kanonadi/livero.value + 1
# else:
# $Control/celilo.set_visible(false)
# $Control/celilo/label.text = ''
func set_way_point(position, dock): func set_celilo(celo):
docking_rotation = dock celilo.append(celo)
way_point = position # устанавливаем точку цели $Control/celilo.set_visible(true)
target_dir = (way_point - translation).normalized() # устанавливаем направление движение на цель. $Control/celilo/label.text = celilo.front().uuid
target_rot = Quat(transform.looking_at(way_point,Vector3.UP).basis) #запоминаем в какое положение надо установить корабль, чтобы нос был к цели. Это в кватернионах. ХЗ что это, но именно так вращать правильнее всего. get_node("laser_gun").set_target(celilo.front())
func clear_way_point():
target_dir = Vector3.ZERO #очищаем цель
way_point = Vector3.ZERO
docking_rotation = null
current_speed = 0
func rotate_start():# поворачиваем корабль носом по ходу движения
var front = Transform(Basis.IDENTITY, Vector3(Global.fenestro_itinero.itineroj.front()['koordinatoX'],
Global.fenestro_itinero.itineroj.front()['koordinatoY'],
Global.fenestro_itinero.itineroj.front()['koordinatoZ']))
target_rot = Quat(transform.looking_at(front.origin,Vector3.UP).basis) #запоминаем в какое положение надо установить корабль, чтобы нос был к цели. Это в кватернионах. ХЗ что это, но именно так вращать правильнее всего.
func dec_route():
target_rot = null
Global.fenestro_itinero.malmultigi_unua()
rotate_start()
func clear_route():
target_rot = null
# достигли цели, закрываем проект
Global.fenestro_itinero.fermi_projekto_tasko()
const QueryObject = preload("../skriptoj/queries.gd") const QueryObject = preload("../skriptoj/queries.gd")
...@@ -80,86 +117,29 @@ func _on_timer_timeout(): ...@@ -80,86 +117,29 @@ func _on_timer_timeout():
rotation.y, rotation.z) rotation.y, rotation.z)
) )
#добавление в список маршрута с предварительным очишением маршрута
func add_itinero():
Global.fenestro_itinero.add_itinero('','', 'точка в космосе',
way_point.x, way_point.y,
way_point.z, translation.distance_to(way_point))
#передача данных на сервер при отправке корабля по первой цели func _on_kanonadi_pressed():
func vojkomenco(): if celilo.size()>0:
if len(Global.itineroj)==0: if $Control/kanonadi.pressed:
return 404 # постановка цели
var q = QueryObject.new() # get_node("laser_gun").set_target(celilo.front())
if !projekto_uuid:#если проекта нет, то создаём get_node("laser_gun").pafo = true
# цель маршрута берём из itineroj livero = true
var count_itineroj=len(Global.itineroj)-1 # отправляем выстрел на сервер
$"../http_projekto".request(q.URL, Global.backend_headers, true, 2,
q.instalo_projekto(uuid,
translation.x, #kom_koordX
translation.y, #kom_koordY
translation.z, #kom_koordZ
Global.itineroj[count_itineroj]['koordinatoX'], #fin_koordX
Global.itineroj[count_itineroj]['koordinatoY'], #fin_koordY
Global.itineroj[count_itineroj]['koordinatoZ'] #fin_koordZ
))
else:#проект есть, изменяем задачу
# ставим задачу в выполененную
# надо использовать другой request, не от поседанто, т.к. поседанто используется при /
# установке владельца задачи и этот может не успеть отработать
$"../http_finado".request(q.URL, Global.backend_headers, true, 2,
q.finado_tasko(Global.itineroj[0]['uuid_tasko']))
Global.itineroj.remove(0)#удаляем задачу
# изменяем цель проекта
$"../http_tasko".request(q.URL, Global.backend_headers, true, 2,
q.instalo_tasko_koord(
uuid, projekto_uuid,
translation.x, #kom_koordX
translation.y, #kom_koordY
translation.z, #kom_koordZ
Global.itineroj[0]['koordinatoX'], #fin_koordX
Global.itineroj[0]['koordinatoY'], #fin_koordY
Global.itineroj[0]['koordinatoZ'] #fin_koordZ
))
Global.fenestro_itinero.FillItemList()
Global.fenestro_itinero.get_node("canvas/MarginContainer/VBoxContainer/HBoxContainer/kom_itinero").disabled=true
Global.fenestro_itinero.get_node("canvas/MarginContainer/VBoxContainer/HBoxContainer/itinero_next").disabled=false
Global.fenestro_itinero.get_node("canvas/MarginContainer/VBoxContainer/HBoxContainer/itinero_fin").disabled=false
Global.fenestro_itinero.get_node("canvas/MarginContainer/VBoxContainer/HBoxContainer/itinero_clear").disabled=false
func finofara_flugo():
if len(Global.itineroj)==0:
return 404 # маршрута нет, закрывать нечего, выходим из процедуры
if projekto_uuid:
var q = QueryObject.new()
# если есть очередь в задачах, то закрываем только текущую задачу и запускаем в работу следующую
if len(Global.itineroj)==1:
$"../http_finado".request(q.URL, Global.backend_headers, true, 2,
q.finado_projeko_tasko(projekto_uuid, Global.itineroj[0]['uuid_tasko']))
Global.itineroj.clear()
Global.fenestro_itinero.get_node("canvas/MarginContainer/VBoxContainer/ItemList").clear()
projekto_uuid=''
Global.fenestro_itinero.get_node("canvas/MarginContainer/VBoxContainer/HBoxContainer/kom_itinero").disabled=false
Global.fenestro_itinero.get_node("canvas/MarginContainer/VBoxContainer/HBoxContainer/itinero_next").disabled=true
Global.fenestro_itinero.get_node("canvas/MarginContainer/VBoxContainer/HBoxContainer/itinero_fin").disabled=true
Global.fenestro_itinero.get_node("canvas/MarginContainer/VBoxContainer/HBoxContainer/itinero_clear").disabled=true
else: else:
$"../http_posedanto".request(q.URL, Global.backend_headers, true, 2, get_node("laser_gun").pafo = false
q.finado_tasko(Global.itineroj[0]['uuid_tasko'])) # get_node("laser_gun").set_target('')
# берём следующую задачу в работу else:
Global.itineroj.remove(0) $Control/kanonadi.pressed = false
Global.fenestro_itinero.FillItemList() get_node("laser_gun").pafo = false
# изменяем следующую задачу на "в работе"
$"../http_finado".request(q.URL, Global.backend_headers, true, 2,
q.finado_tasko(Global.itineroj[0]['uuid_tasko'],2)) func _on_livero_value_changed(value):
var position = Vector3(Global.itineroj[0]['koordinatoX'], if value == 20:
Global.itineroj[0]['koordinatoY'], get_node("laser_gun").pafo = false
Global.itineroj[0]['koordinatoZ']) # get_node("laser_gun").set_target('')
set_way_point(position,null) elif value == 100:
$"../way_point".set_way_point(position) livero = false
#запускаем таймер $Control/kanonadi/livero.value = 0
$"../timer".start() _on_kanonadi_pressed()
Это отличие свёрнуто
...@@ -7,6 +7,7 @@ export var colision_radius = 2.0 #радиус, на который надо п ...@@ -7,6 +7,7 @@ export var colision_radius = 2.0 #радиус, на который надо п
var active = false # есть ли точка пути, или ничего не указано var active = false # есть ли точка пути, или ничего не указано
# warning-ignore:unused_signal
signal new_way_point(position) # сигнал кораблю, что пора лететь в точку position signal new_way_point(position) # сигнал кораблю, что пора лететь в точку position
func _ready(): func _ready():
...@@ -14,10 +15,12 @@ func _ready(): ...@@ -14,10 +15,12 @@ func _ready():
offset =Vector2($TextureRect.rect_size/2) # получаем смещение контрол-нод в центр offset =Vector2($TextureRect.rect_size/2) # получаем смещение контрол-нод в центр
$Area/CollisionShape.shape.radius = colision_radius #задаём радиус обнуления вейпойнта. $Area/CollisionShape.shape.radius = colision_radius #задаём радиус обнуления вейпойнта.
# warning-ignore:unused_argument
func _input(event): func _input(event):
if Input.is_action_just_pressed("left_click"): # if Input.is_action_just_pressed("left_click"):
if event is InputEventMouseButton and event.doubleclick: # if event is InputEventMouseButton and event.doubleclick:
emit_signal("new_way_point",cam.project_position(get_viewport().get_mouse_position(),z_away),null) #Если кнопка нажата, то бросаем лучь из камеры на глубину z_away и получаем точку, тут же устанавливаем новый вейпойнт с координатами # emit_signal("new_way_point",cam.project_position(get_viewport().get_mouse_position(),z_away),null) #Если кнопка нажата, то бросаем лучь из камеры на глубину z_away и получаем точку, тут же устанавливаем новый вейпойнт с координатами
pass
# warning-ignore:unused_argument # warning-ignore:unused_argument
func _physics_process(delta): func _physics_process(delta):
......
[gd_scene load_steps=3 format=2] [gd_scene load_steps=4 format=2]
[ext_resource path="res://blokoj/kosmostacioj/kosmostacio.jpg" type="Texture" id=1] [ext_resource path="res://blokoj/kosmostacioj/resursoj/CapKosmostacio/textures/Stars Sphere.jpg" type="Texture" id=1]
[ext_resource path="res://blokoj/kosmostacioj/Kosmostacio.gd" type="Script" id=2] [ext_resource path="res://blokoj/kosmostacioj/Kosmostacio.gd" type="Script" id=2]
[ext_resource path="res://blokoj/rajtigo/tero.png" type="Texture" id=3]
[node name="Node2D" type="Node2D"] [node name="Node2D" type="Node2D"]
script = ExtResource( 2 ) script = ExtResource( 2 )
[node name="ParallaxBackground" type="ParallaxBackground" parent="."] [node name="ParallaxBackground2" type="ParallaxBackground" parent="."]
follow_viewport_enable = true
[node name="TextureRect" type="TextureRect" parent="ParallaxBackground"] [node name="TextureRect" type="TextureRect" parent="ParallaxBackground2"]
anchor_right = 1.0 anchor_right = 1.0
anchor_bottom = 1.0 anchor_bottom = 1.0
texture = ExtResource( 1 ) texture = ExtResource( 1 )
expand = true expand = true
stretch_mode = 1
__meta__ = {
"_edit_use_anchors_": false
}
[node name="ParallaxBackground" type="ParallaxBackground" parent="."]
layer = -98
follow_viewport_enable = true
[node name="TextureRect" type="TextureRect" parent="ParallaxBackground"]
anchor_left = 0.5
anchor_top = 0.5
anchor_right = 0.5
anchor_bottom = 0.5
margin_left = -512.0
margin_top = -384.0
margin_right = 512.0
margin_bottom = 384.0
texture = ExtResource( 3 )
__meta__ = { __meta__ = {
"_edit_use_anchors_": false "_edit_use_anchors_": false
} }
...@@ -23,21 +42,21 @@ anchor_left = 0.5 ...@@ -23,21 +42,21 @@ anchor_left = 0.5
anchor_top = 1.0 anchor_top = 1.0
anchor_right = 0.594 anchor_right = 0.594
anchor_bottom = 1.0 anchor_bottom = 1.0
margin_left = -5.548 margin_left = -5.54797
margin_top = -31.556 margin_top = -26.556
margin_right = 0.195984 margin_right = 0.195984
margin_bottom = -19.556 margin_bottom = -9.55603
__meta__ = { __meta__ = {
"_edit_use_anchors_": false "_edit_use_anchors_": false
} }
[node name="GreetingLabel" type="Label" parent="ParallaxBackground"] [node name="GreetingLabel" type="Label" parent="ParallaxBackground"]
anchor_left = 0.317 anchor_left = 1.0
anchor_right = 0.708 anchor_top = 1.0
margin_left = 0.0470276 anchor_right = 1.0
margin_top = 70.0 anchor_bottom = 1.0
margin_right = -0.336975 margin_left = -625.216
margin_bottom = 100.0 margin_top = -30.0
align = 1 align = 1
valign = 1 valign = 1
__meta__ = { __meta__ = {
......
...@@ -16,7 +16,7 @@ func _on_CapKosmostacio_ready(): ...@@ -16,7 +16,7 @@ func _on_CapKosmostacio_ready():
# ship.rotate_y(1.58) # ship.rotate_y(1.58)
ship.rotate_y(deg2rad(-90)) ship.rotate_y(deg2rad(-90))
ship.translation.x = ship.translation.x + 26.4 # насколько въезжать в парковку ship.translation.x = ship.translation.x + 25.4 # насколько въезжать в парковку
ship.translation.z = ship.translation.z - 5 # в сторону от центра ship.translation.z = ship.translation.z - 5 # в сторону от центра
ship.translation.y = ship.translation.y + 2 # высота от пола ship.translation.y = ship.translation.y + 2 # высота от пола
add_child(ship,true) add_child(ship,true)
......
Это отличие свёрнуто
[remap]
importer="texture"
type="StreamTexture"
path="res://.import/celilo.png-47499df231bb4886ea8e9433f8b1c0af.stex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://blokoj/kosmosxipoj/resursoj/celilo.png"
dest_files=[ "res://.import/celilo.png-47499df231bb4886ea8e9433f8b1c0af.stex" ]
[params]
compress/mode=0
compress/lossy_quality=0.7
compress/hdr_mode=0
compress/bptc_ldr=0
compress/normal_map=0
flags/repeat=0
flags/filter=true
flags/mipmaps=false
flags/anisotropic=false
flags/srgb=2
process/fix_alpha_border=true
process/premult_alpha=false
process/HDR_as_SRGB=false
process/invert_color=false
stream=false
size_limit=0
detect_3d=true
svg/scale=1.0
Нет предварительного просмотра для этого типа файлов
Нет предварительного просмотра для этого типа файлов
Нет предварительного просмотра для этого типа файлов
Нет предварительного просмотра для этого типа файлов
Нет предварительного просмотра для этого типа файлов
Поддерживает Markdown
0% или .
You are about to add 0 people to the discussion. Proceed with caution.
Сначала завершите редактирование этого сообщения!
Пожалуйста, зарегистрируйтесь или чтобы прокомментировать