Setup boundaries on sliders and added GUI functionality
parent
8e4a264711
commit
8a4fedddfa
|
@ -14,6 +14,7 @@ mesh = SubResource( 1 )
|
||||||
material/0 = null
|
material/0 = null
|
||||||
|
|
||||||
[node name="MainPanel" type="Panel" parent="."]
|
[node name="MainPanel" type="Panel" parent="."]
|
||||||
|
visible = false
|
||||||
anchor_left = 0.5
|
anchor_left = 0.5
|
||||||
anchor_right = 0.5
|
anchor_right = 0.5
|
||||||
margin_left = -390.0
|
margin_left = -390.0
|
||||||
|
@ -31,6 +32,10 @@ anchor_right = 0.6
|
||||||
anchor_bottom = 0.5
|
anchor_bottom = 0.5
|
||||||
margin_left = 10.0
|
margin_left = 10.0
|
||||||
grow_vertical = 2
|
grow_vertical = 2
|
||||||
|
max_value = 5.0
|
||||||
|
step = 0.01
|
||||||
|
tick_count = 6
|
||||||
|
ticks_on_borders = true
|
||||||
__meta__ = {
|
__meta__ = {
|
||||||
"_edit_use_anchors_": false
|
"_edit_use_anchors_": false
|
||||||
}
|
}
|
||||||
|
@ -93,75 +98,11 @@ anchor_top = 1.0
|
||||||
anchor_right = 1.0
|
anchor_right = 1.0
|
||||||
anchor_bottom = 1.0
|
anchor_bottom = 1.0
|
||||||
margin_left = -300.0
|
margin_left = -300.0
|
||||||
margin_top = -175.0
|
margin_top = -300.0
|
||||||
__meta__ = {
|
__meta__ = {
|
||||||
"_edit_use_anchors_": false
|
"_edit_use_anchors_": false
|
||||||
}
|
}
|
||||||
|
|
||||||
[node name="XLin" type="VSlider" parent="ThrustPanel"]
|
|
||||||
anchor_left = 0.4
|
|
||||||
anchor_top = 0.05
|
|
||||||
anchor_right = 0.4
|
|
||||||
anchor_bottom = 0.45
|
|
||||||
grow_horizontal = 2
|
|
||||||
min_value = -1.0
|
|
||||||
max_value = 1.0
|
|
||||||
step = 0.001
|
|
||||||
|
|
||||||
[node name="XRot" type="VSlider" parent="ThrustPanel"]
|
|
||||||
anchor_left = 0.4
|
|
||||||
anchor_top = 0.55
|
|
||||||
anchor_right = 0.4
|
|
||||||
anchor_bottom = 0.95
|
|
||||||
margin_left = -8.0
|
|
||||||
margin_right = 8.0
|
|
||||||
grow_horizontal = 2
|
|
||||||
min_value = -1.0
|
|
||||||
max_value = 1.0
|
|
||||||
step = 0.001
|
|
||||||
|
|
||||||
[node name="YLin" type="VSlider" parent="ThrustPanel"]
|
|
||||||
anchor_left = 0.6
|
|
||||||
anchor_top = 0.05
|
|
||||||
anchor_right = 0.6
|
|
||||||
anchor_bottom = 0.45
|
|
||||||
grow_horizontal = 2
|
|
||||||
min_value = -1.0
|
|
||||||
max_value = 1.0
|
|
||||||
step = 0.001
|
|
||||||
|
|
||||||
[node name="YRot" type="VSlider" parent="ThrustPanel"]
|
|
||||||
anchor_left = 0.6
|
|
||||||
anchor_top = 0.55
|
|
||||||
anchor_right = 0.6
|
|
||||||
anchor_bottom = 0.95
|
|
||||||
grow_horizontal = 2
|
|
||||||
min_value = -1.0
|
|
||||||
max_value = 1.0
|
|
||||||
step = 0.001
|
|
||||||
|
|
||||||
[node name="ZLin" type="VSlider" parent="ThrustPanel"]
|
|
||||||
anchor_left = 0.8
|
|
||||||
anchor_top = 0.05
|
|
||||||
anchor_right = 0.8
|
|
||||||
anchor_bottom = 0.45
|
|
||||||
grow_horizontal = 2
|
|
||||||
min_value = -1.0
|
|
||||||
max_value = 1.0
|
|
||||||
step = 0.001
|
|
||||||
|
|
||||||
[node name="ZRot" type="VSlider" parent="ThrustPanel"]
|
|
||||||
anchor_left = 0.8
|
|
||||||
anchor_top = 0.55
|
|
||||||
anchor_right = 0.8
|
|
||||||
anchor_bottom = 0.95
|
|
||||||
margin_top = -0.263489
|
|
||||||
margin_bottom = -0.263489
|
|
||||||
grow_horizontal = 2
|
|
||||||
min_value = -1.0
|
|
||||||
max_value = 1.0
|
|
||||||
step = 0.001
|
|
||||||
|
|
||||||
[node name="LabelHolder" type="Control" parent="ThrustPanel"]
|
[node name="LabelHolder" type="Control" parent="ThrustPanel"]
|
||||||
anchor_right = 1.0
|
anchor_right = 1.0
|
||||||
anchor_bottom = 1.0
|
anchor_bottom = 1.0
|
||||||
|
@ -233,3 +174,109 @@ margin_bottom = 7.0
|
||||||
grow_horizontal = 2
|
grow_horizontal = 2
|
||||||
grow_vertical = 2
|
grow_vertical = 2
|
||||||
text = "Vernier Thrust"
|
text = "Vernier Thrust"
|
||||||
|
|
||||||
|
[node name="XLin" type="VSlider" parent="ThrustPanel"]
|
||||||
|
anchor_left = 0.4
|
||||||
|
anchor_top = 0.05
|
||||||
|
anchor_right = 0.4
|
||||||
|
anchor_bottom = 0.45
|
||||||
|
margin_left = -8.0
|
||||||
|
margin_right = 8.0
|
||||||
|
grow_horizontal = 2
|
||||||
|
min_value = -1.0
|
||||||
|
max_value = 1.0
|
||||||
|
step = 0.01
|
||||||
|
tick_count = 3
|
||||||
|
ticks_on_borders = true
|
||||||
|
__meta__ = {
|
||||||
|
"_edit_use_anchors_": false
|
||||||
|
}
|
||||||
|
|
||||||
|
[node name="XRot" type="VSlider" parent="ThrustPanel"]
|
||||||
|
anchor_left = 0.4
|
||||||
|
anchor_top = 0.55
|
||||||
|
anchor_right = 0.4
|
||||||
|
anchor_bottom = 0.95
|
||||||
|
margin_left = -8.0
|
||||||
|
margin_right = 8.0
|
||||||
|
grow_horizontal = 2
|
||||||
|
min_value = -1.0
|
||||||
|
max_value = 1.0
|
||||||
|
step = 0.001
|
||||||
|
tick_count = 3
|
||||||
|
ticks_on_borders = true
|
||||||
|
__meta__ = {
|
||||||
|
"_edit_use_anchors_": false
|
||||||
|
}
|
||||||
|
|
||||||
|
[node name="YLin" type="VSlider" parent="ThrustPanel"]
|
||||||
|
anchor_left = 0.6
|
||||||
|
anchor_top = 0.05
|
||||||
|
anchor_right = 0.6
|
||||||
|
anchor_bottom = 0.45
|
||||||
|
margin_left = -8.0
|
||||||
|
margin_right = 8.0
|
||||||
|
grow_horizontal = 2
|
||||||
|
min_value = -1.0
|
||||||
|
max_value = 1.0
|
||||||
|
step = 0.001
|
||||||
|
tick_count = 3
|
||||||
|
ticks_on_borders = true
|
||||||
|
|
||||||
|
[node name="YRot" type="VSlider" parent="ThrustPanel"]
|
||||||
|
anchor_left = 0.6
|
||||||
|
anchor_top = 0.55
|
||||||
|
anchor_right = 0.6
|
||||||
|
anchor_bottom = 0.95
|
||||||
|
margin_left = -8.0
|
||||||
|
margin_right = 8.0
|
||||||
|
grow_horizontal = 2
|
||||||
|
min_value = -1.0
|
||||||
|
max_value = 1.0
|
||||||
|
step = 0.001
|
||||||
|
tick_count = 3
|
||||||
|
ticks_on_borders = true
|
||||||
|
__meta__ = {
|
||||||
|
"_edit_use_anchors_": false
|
||||||
|
}
|
||||||
|
|
||||||
|
[node name="ZLin" type="VSlider" parent="ThrustPanel"]
|
||||||
|
anchor_left = 0.8
|
||||||
|
anchor_top = 0.05
|
||||||
|
anchor_right = 0.8
|
||||||
|
anchor_bottom = 0.45
|
||||||
|
margin_left = -8.0
|
||||||
|
margin_right = 8.0
|
||||||
|
grow_horizontal = 2
|
||||||
|
min_value = -1.0
|
||||||
|
max_value = 1.0
|
||||||
|
step = 0.001
|
||||||
|
tick_count = 3
|
||||||
|
ticks_on_borders = true
|
||||||
|
|
||||||
|
[node name="ZRot" type="VSlider" parent="ThrustPanel"]
|
||||||
|
anchor_left = 0.8
|
||||||
|
anchor_top = 0.55
|
||||||
|
anchor_right = 0.8
|
||||||
|
anchor_bottom = 0.95
|
||||||
|
margin_left = -8.0
|
||||||
|
margin_top = -0.263489
|
||||||
|
margin_right = 8.0
|
||||||
|
margin_bottom = -0.263489
|
||||||
|
grow_horizontal = 2
|
||||||
|
min_value = -1.0
|
||||||
|
max_value = 1.0
|
||||||
|
step = 0.001
|
||||||
|
tick_count = 3
|
||||||
|
ticks_on_borders = true
|
||||||
|
[connection signal="value_changed" from="MainPanel/TimeBar" to="." method="_on_TimeBar_value_changed"]
|
||||||
|
[connection signal="pressed" from="MainPanel/AddButton" to="." method="_on_AddButton_pressed"]
|
||||||
|
[connection signal="pressed" from="MainPanel/RemoveButton" to="." method="_on_RemoveButton_pressed"]
|
||||||
|
[connection signal="pressed" from="MainPanel/ClearButton" to="." method="_on_ClearButton_pressed"]
|
||||||
|
[connection signal="pressed" from="MainPanel/EndTurnButton" to="." method="_on_EndTurnButton_pressed"]
|
||||||
|
[connection signal="value_changed" from="ThrustPanel/XLin" to="." method="_on_XLin_value_changed"]
|
||||||
|
[connection signal="value_changed" from="ThrustPanel/XRot" to="." method="_on_XRot_value_changed"]
|
||||||
|
[connection signal="value_changed" from="ThrustPanel/YLin" to="." method="_on_YLin_value_changed"]
|
||||||
|
[connection signal="value_changed" from="ThrustPanel/YRot" to="." method="_on_YRot_value_changed"]
|
||||||
|
[connection signal="value_changed" from="ThrustPanel/ZLin" to="." method="_on_ZLin_value_changed"]
|
||||||
|
[connection signal="value_changed" from="ThrustPanel/ZRot" to="." method="_on_ZRot_value_changed"]
|
||||||
|
|
|
@ -11,6 +11,10 @@ remote func place_player(player_id : int, position : Vector3, rotation : Vector3
|
||||||
player.rotation = rotation
|
player.rotation = rotation
|
||||||
add_child(player)
|
add_child(player)
|
||||||
players[player_id] = player
|
players[player_id] = player
|
||||||
|
if player_id == get_tree().get_network_unique_id():
|
||||||
|
player.is_local = true
|
||||||
|
get_parent().console_print('Setting player with id (' + String(player_id) + ') as local')
|
||||||
|
player.init()
|
||||||
|
|
||||||
func init():
|
func init():
|
||||||
get_parent().arena_ready()
|
get_parent().arena_ready()
|
||||||
|
|
|
@ -5,11 +5,15 @@ const TURN_TIME : float = 5.0
|
||||||
var elements = [] # All elements of the plan thus far
|
var elements = [] # All elements of the plan thus far
|
||||||
var current_elements = [] # All elements of the next 5 seconds
|
var current_elements = [] # All elements of the next 5 seconds
|
||||||
|
|
||||||
func add_element(element : PlanElement) -> bool:
|
func current_time() -> float:
|
||||||
var total_time : float = 0.0
|
var total_time : float = 0.0
|
||||||
for current_element in current_elements:
|
for current_element in current_elements:
|
||||||
var _element : PlanElement = (current_element as PlanElement)
|
var _element : PlanElement = (current_element as PlanElement)
|
||||||
total_time += _element.time
|
total_time += _element.time
|
||||||
|
return total_time
|
||||||
|
|
||||||
|
func add_element(element : PlanElement) -> bool:
|
||||||
|
var total_time : float = self.current_time()
|
||||||
if total_time + element.time > TURN_TIME:
|
if total_time + element.time > TURN_TIME:
|
||||||
return false
|
return false
|
||||||
current_elements.append(element)
|
current_elements.append(element)
|
||||||
|
|
|
@ -1,5 +1,92 @@
|
||||||
extends Spatial
|
extends Spatial
|
||||||
|
|
||||||
var plan : Plan = Plan.new()
|
var plan : Plan = Plan.new()
|
||||||
|
var is_local : bool = false
|
||||||
|
|
||||||
|
func init() -> void:
|
||||||
|
get_parent().get_parent().console_print("Player is set to local? " + String(is_local))
|
||||||
|
if is_local:
|
||||||
|
$MainPanel.visible = true
|
||||||
|
$ThrustPanel.visible = true
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
func _on_TimeBar_value_changed(value : float) -> void:
|
||||||
|
var min_time : float = plan.current_time()
|
||||||
|
get_parent().get_parent().console_print("Current plan time is " + String(min_time))
|
||||||
|
if value <= min_time:
|
||||||
|
$MainPanel/TimeBar.value = min_time
|
||||||
|
|
||||||
|
|
||||||
|
func _on_AddButton_pressed() -> void:
|
||||||
|
var new_thrust_element : ThrustElement = ThrustElement.new()
|
||||||
|
new_thrust_element.linear_thrust = get_linear_vector()
|
||||||
|
new_thrust_element.rotational_thrust = get_rotational_vector()
|
||||||
|
new_thrust_element.time = $MainPanel/TimeBar.value - plan.current_time()
|
||||||
|
if (plan.add_element(new_thrust_element)):
|
||||||
|
get_parent().get_parent().console_print("Added thrust element")
|
||||||
|
else:
|
||||||
|
get_parent().get_parent().console_print("Failed to add thrust element")
|
||||||
|
|
||||||
|
|
||||||
|
func _on_RemoveButton_pressed() -> void:
|
||||||
|
plan.remove_last_element()
|
||||||
|
|
||||||
|
|
||||||
|
func _on_ClearButton_pressed() -> void:
|
||||||
|
plan.remove_all_elements()
|
||||||
|
|
||||||
|
|
||||||
|
func _on_EndTurnButton_pressed() -> void:
|
||||||
|
plan.new_turn()
|
||||||
|
# TODO: Add the rest functionality
|
||||||
|
|
||||||
|
|
||||||
|
func get_linear_vector() -> Vector3:
|
||||||
|
return Vector3($ThrustPanel/XLin.value, $ThrustPanel/YLin.value, $ThrustPanel/ZLin.value)
|
||||||
|
|
||||||
|
func get_rotational_vector() -> Vector3:
|
||||||
|
return Vector3($ThrustPanel/XRot.value, $ThrustPanel/YRot.value, $ThrustPanel/ZRot.value)
|
||||||
|
|
||||||
|
func _on_XLin_value_changed(value : float) -> void:
|
||||||
|
get_parent().get_parent().console_print("Length of vector = " + String(get_linear_vector().length()))
|
||||||
|
if get_linear_vector().length() < 1.0:
|
||||||
|
return
|
||||||
|
$ThrustPanel/XLin.value = sign($ThrustPanel/XLin.value) * \
|
||||||
|
sqrt(1 - pow($ThrustPanel/YLin.value, 2) - pow($ThrustPanel/ZLin.value, 2))
|
||||||
|
|
||||||
|
|
||||||
|
func _on_XRot_value_changed(value : float) -> void:
|
||||||
|
if get_rotational_vector().length() < 1.0:
|
||||||
|
return
|
||||||
|
$ThrustPanel/XRot.value = sign($ThrustPanel/XRot.value) * \
|
||||||
|
sqrt(1 - pow($ThrustPanel/YRot.value, 2) - pow($ThrustPanel/ZRot.value, 2))
|
||||||
|
|
||||||
|
|
||||||
|
func _on_YLin_value_changed(value : float) -> void:
|
||||||
|
if get_linear_vector().length() < 1.0:
|
||||||
|
return
|
||||||
|
$ThrustPanel/YLin.value = sign($ThrustPanel/YLin.value) * \
|
||||||
|
sqrt(1 - pow($ThrustPanel/XLin.value, 2) - pow($ThrustPanel/ZLin.value, 2))
|
||||||
|
|
||||||
|
|
||||||
|
func _on_YRot_value_changed(value : float) -> void:
|
||||||
|
if get_rotational_vector().length() < 1.0:
|
||||||
|
return
|
||||||
|
$ThrustPanel/YRot.value = sign($ThrustPanel/YRot.value) * \
|
||||||
|
sqrt(1 - pow($ThrustPanel/XRot.value, 2) - pow($ThrustPanel/ZRot.value, 2))
|
||||||
|
|
||||||
|
|
||||||
|
func _on_ZLin_value_changed(value : float) -> void:
|
||||||
|
if get_linear_vector().length() < 1.0:
|
||||||
|
return
|
||||||
|
$ThrustPanel/ZLin.value = sign($ThrustPanel/ZLin.value) * \
|
||||||
|
sqrt(1 - pow($ThrustPanel/YLin.value, 2) - pow($ThrustPanel/XLin.value, 2))
|
||||||
|
|
||||||
|
|
||||||
|
func _on_ZRot_value_changed(value : float) -> void:
|
||||||
|
if get_rotational_vector().length() < 1.0:
|
||||||
|
return
|
||||||
|
$ThrustPanel/ZRot.value = sign($ThrustPanel/ZRot.value) * \
|
||||||
|
sqrt(1 - pow($ThrustPanel/YRot.value, 2) - pow($ThrustPanel/XRot.value, 2))
|
||||||
|
|
Loading…
Reference in New Issue