Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions src/resources/themes/default.tres
Original file line number Diff line number Diff line change
Expand Up @@ -135,6 +135,7 @@ PopupMenu/constants/item_start_padding = 5
PopupMenu/constants/v_separation = 10
PopupMenu/styles/hover = SubResource("StyleBoxFlat_kpyni")
PopupMenu/styles/panel = SubResource("StyleBoxFlat_x2xen")
PopupPanel/styles/panel = SubResource("StyleBoxFlat_dgxsq")
ScrollContainer/constants/scrollbar_h_separation = 10
SessionListing/base_type = &"Button"
SessionListing/styles/hover = SubResource("StyleBoxFlat_gvfoe")
Expand Down
19 changes: 10 additions & 9 deletions src/scenes/levels/grid.tscn
Original file line number Diff line number Diff line change
Expand Up @@ -2,16 +2,16 @@

[ext_resource type="Shader" uid="uid://bh250q6rfv615" path="res://resources/shaders/grid_shader.gdshader" id="1_ikf4c"]

[sub_resource type="ProceduralSkyMaterial" id="ProceduralSkyMaterial_dbach"]
sky_horizon_color = Color(0.66224277, 0.6717428, 0.6867428, 1)
ground_horizon_color = Color(0.66224277, 0.6717428, 0.6867428, 1)
[sub_resource type="ProceduralSkyMaterial" id="ProceduralSkyMaterial_bcgop"]
sky_top_color = Color(0.297, 0.40241668, 0.55, 1)
energy_multiplier = 1.25

[sub_resource type="Sky" id="Sky_ikf4c"]
sky_material = SubResource("ProceduralSkyMaterial_dbach")
[sub_resource type="Sky" id="Sky_gbca3"]
sky_material = SubResource("ProceduralSkyMaterial_bcgop")

[sub_resource type="Environment" id="Environment_q28r8"]
background_mode = 2
sky = SubResource("Sky_ikf4c")
sky = SubResource("Sky_gbca3")
tonemap_mode = 2
ssr_enabled = true
ssao_enabled = true
Expand Down Expand Up @@ -45,10 +45,11 @@ metadata/scene_node = true
environment = SubResource("Environment_q28r8")
metadata/scene_node = true

[node name="MeshInstance3D" type="MeshInstance3D" parent="." unique_id=1644270184]
[node name="Ground" type="MeshInstance3D" parent="." unique_id=1644270184]
mesh = SubResource("QuadMesh_8gpll")
metadata/scene_node = true

[node name="StaticBody3D" type="StaticBody3D" parent="MeshInstance3D" unique_id=1945745055]
[node name="StaticBody3D" type="StaticBody3D" parent="Ground" unique_id=1945745055]

[node name="CollisionShape3D" type="CollisionShape3D" parent="MeshInstance3D/StaticBody3D" unique_id=1464818279]
[node name="CollisionShape3D" type="CollisionShape3D" parent="Ground/StaticBody3D" unique_id=1464818279]
shape = SubResource("BoxShape3D_8gpll")
3 changes: 3 additions & 0 deletions src/scenes/managers/scene/player.gd
Original file line number Diff line number Diff line change
Expand Up @@ -69,3 +69,6 @@ func spawn_player(peer_id: String) -> void:
func kill_player() -> void:
GlobalLogger.log("'%s' is not implemented." % get_stack()[0]["function"], Enum.LogLevel.WARNING)
return

func get_player_count() -> int:
return players.keys().size()
20 changes: 18 additions & 2 deletions src/scenes/managers/scene/spawnable_manager.gd
Original file line number Diff line number Diff line change
Expand Up @@ -88,7 +88,6 @@ func create(node_type: String, node_parent: int = 0, model_path: String = "") ->
var database_index: int = _database.find_custom(func(entry): return entry.id == entity)
return _database[database_index].node


@rpc("any_peer", "reliable")
func destroy(node_id: int) -> Variant:
var my_id: int = app_network_m._database.sessions_api[app_scene_m.active_session].get_unique_id()
Expand All @@ -109,7 +108,6 @@ func destroy(node_id: int) -> Variant:
await rpcawaiter.send_rpc(1, destroy.bind(node_id))
return


@rpc("any_peer", "reliable")
func set_transform(node_id: int, transform: Transform3D) -> void:
var _my_id: int = app_network_m._database.sessions_api[app_scene_m.active_session].get_unique_id()
Expand All @@ -123,6 +121,17 @@ func set_transform(node_id: int, transform: Transform3D) -> void:
return
return

@rpc("any_peer", "reliable")
func set_property(node_id: int, property_name: String, property_value: Variant) -> void:
var _my_id: int = app_network_m._database.sessions_api[app_scene_m.active_session].get_unique_id()
var _caller_id: int = multiplayer.get_remote_sender_id()

if _my_id == 1:
set_property_on_spawnable.rpc(node_id, property_name, property_value)
else:
await rpcawaiter.send_rpc(1, set_property.bind(node_id, property_name, property_value))
return
return

# TODO: How would large assets work?
@rpc("authority", "reliable")
Expand Down Expand Up @@ -165,6 +174,13 @@ func transform_spawnable(node_id: int, transform: Transform3D) -> void:
_entity_db.node.transform = transform
return

@rpc("call_local", "authority", "reliable")
func set_property_on_spawnable(node_id: int, property_name: String, property_value: Variant):
var _entity_db = get_by_id(node_id)

_entity_db.node.set_indexed(property_name, property_value)
return

func _get_deletion_queue(node_name: String) -> Array:
var _entry_index = _database.find_custom(func(item): return item.id == int(node_name))
var _node = _database[_entry_index].node
Expand Down
58 changes: 53 additions & 5 deletions src/userinterface/client_edit_mode/desktop/inspector.tscn
Original file line number Diff line number Diff line change
Expand Up @@ -13,8 +13,12 @@
[ext_resource type="Texture2D" uid="uid://bu6vtb71stcjq" path="res://resources/icons/godot/ToolScale.svg" id="7_7pj7g"]
[ext_resource type="Texture2D" uid="uid://8rvofwa4k380" path="res://resources/icons/godot/WorldEnvironment.svg" id="8_7pj7g"]
[ext_resource type="Texture2D" uid="uid://bx7irvaofgk6n" path="res://resources/icons/godot/CharacterBody3D.svg" id="9_840b7"]
[ext_resource type="PackedScene" uid="uid://wmjsfgx486xa" path="res://userinterface/client_edit_mode/node_property_editor/partials/bool.tscn" id="14_8u8qu"]
[ext_resource type="Script" uid="uid://8lm0oig2kxbj" path="res://userinterface/client_edit_mode/desktop/scripts/properties.gd" id="14_at34i"]
[ext_resource type="PackedScene" uid="uid://chbjqqcikq7aj" path="res://userinterface/client_edit_mode/desktop/partial/popup_selection.tscn" id="14_cuj5f"]
[ext_resource type="PackedScene" uid="uid://dkn0gmy8or4hq" path="res://userinterface/client_edit_mode/node_property_editor/partials/Vector3.tscn" id="14_q5c3n"]
[ext_resource type="Texture2D" uid="uid://cq2ec6jy8kynp" path="res://resources/icons/godot/Add.svg" id="15_3i2mc"]
[ext_resource type="PackedScene" uid="uid://c7animyvghvk" path="res://userinterface/client_edit_mode/node_property_editor/partials/FoldableContainer.tscn" id="16_73wcm"]
[ext_resource type="PackedScene" uid="uid://sntuc3p6k4s6" path="res://userinterface/dash/partials/generic_button.tscn" id="16_j7nog"]
[ext_resource type="Texture2D" uid="uid://b54viv8d54q83" path="res://resources/icons/godot/Remove.svg" id="17_akq5y"]
[ext_resource type="Texture2D" uid="uid://dtwfvglraa8t7" path="res://resources/icons/godot/Edit.svg" id="18_akq5y"]
Expand Down Expand Up @@ -279,6 +283,7 @@ mouse_filter = 1
visible = false
custom_minimum_size = Vector2(300, 0)
layout_mode = 2
script = ExtResource("14_at34i")

[node name="VBoxContainer" type="VBoxContainer" parent="VBoxContainer/HBoxContainer/HSplitContainer/Properties" unique_id=1772787264]
layout_mode = 2
Expand All @@ -301,6 +306,53 @@ mouse_filter = 1
theme = ExtResource("2_plsgj")
theme_override_styles/panel = SubResource("StyleBoxFlat_plsgj")

[node name="ScrollContainer" type="ScrollContainer" parent="VBoxContainer/HBoxContainer/HSplitContainer/Properties/VBoxContainer/Container" unique_id=1256337211]
layout_mode = 1
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
horizontal_scroll_mode = 0

[node name="MarginContainer" type="MarginContainer" parent="VBoxContainer/HBoxContainer/HSplitContainer/Properties/VBoxContainer/Container/ScrollContainer" unique_id=1523084746]
layout_mode = 2
size_flags_horizontal = 3
size_flags_vertical = 3
theme_override_constants/margin_left = 5
theme_override_constants/margin_top = 5
theme_override_constants/margin_right = 5
theme_override_constants/margin_bottom = 5

[node name="VBoxContainer" type="VBoxContainer" parent="VBoxContainer/HBoxContainer/HSplitContainer/Properties/VBoxContainer/Container/ScrollContainer/MarginContainer" unique_id=413793585]
layout_mode = 2

[node name="Visible" parent="VBoxContainer/HBoxContainer/HSplitContainer/Properties/VBoxContainer/Container/ScrollContainer/MarginContainer/VBoxContainer" unique_id=933711176 instance=ExtResource("14_8u8qu")]
layout_mode = 2
property_name = "Visible"

[node name="FoldableContainer" parent="VBoxContainer/HBoxContainer/HSplitContainer/Properties/VBoxContainer/Container/ScrollContainer/MarginContainer/VBoxContainer" unique_id=1542739099 instance=ExtResource("16_73wcm")]
layout_mode = 2
folded = false

[node name="VBoxContainer" parent="VBoxContainer/HBoxContainer/HSplitContainer/Properties/VBoxContainer/Container/ScrollContainer/MarginContainer/VBoxContainer/FoldableContainer" index="0" unique_id=238553897]
visible = true

[node name="Position" parent="VBoxContainer/HBoxContainer/HSplitContainer/Properties/VBoxContainer/Container/ScrollContainer/MarginContainer/VBoxContainer/FoldableContainer/VBoxContainer" index="0" unique_id=352534286 instance=ExtResource("14_q5c3n")]
layout_mode = 2
size_flags_vertical = 1
property_name = "Position"

[node name="Rotation" parent="VBoxContainer/HBoxContainer/HSplitContainer/Properties/VBoxContainer/Container/ScrollContainer/MarginContainer/VBoxContainer/FoldableContainer/VBoxContainer" index="1" unique_id=204239032 instance=ExtResource("14_q5c3n")]
layout_mode = 2
size_flags_vertical = 1
property_name = "Rotation"

[node name="Scale" parent="VBoxContainer/HBoxContainer/HSplitContainer/Properties/VBoxContainer/Container/ScrollContainer/MarginContainer/VBoxContainer/FoldableContainer/VBoxContainer" index="2" unique_id=172565004 instance=ExtResource("14_q5c3n")]
layout_mode = 2
size_flags_vertical = 1
property_name = "Scale"

[node name="InspectorPopup" parent="." unique_id=629092317 instance=ExtResource("14_cuj5f")]
visible = false
layout_mode = 0
Expand Down Expand Up @@ -333,13 +385,9 @@ icon = ExtResource("18_akq5y")
[node name="AddNodeWindow" parent="." unique_id=524781090 instance=ExtResource("21_q5c3n")]
visible = false
layout_mode = 1
offset_left = 50.0
offset_top = 50.0
offset_right = -1570.0
offset_bottom = -630.0
window_name = "Add Node"

[editable path="VBoxContainer/HBoxContainer/HSplitContainer/MarginContainer/VBoxContainer/Container/VBoxContainer/InputString"]
[editable path="VBoxContainer/HBoxContainer/HSplitContainer/MarginContainer/VBoxContainer/Container/VBoxContainer/Filters/HBoxContainer/Light"]
[editable path="VBoxContainer/HBoxContainer/HSplitContainer/MarginContainer/VBoxContainer/Container/VBoxContainer/Filters/HBoxContainer/Player"]
[editable path="VBoxContainer/HBoxContainer/HSplitContainer/Properties/VBoxContainer/Container/ScrollContainer/MarginContainer/VBoxContainer/FoldableContainer"]
[editable path="InspectorPopup"]
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@ grow_vertical = 2
size_flags_horizontal = 4
size_flags_vertical = 4
script = ExtResource("1_u7aab")
window_name = null

[node name="BackgroundColor" type="Panel" parent="." unique_id=889545988]
material = SubResource("ShaderMaterial_j380t")
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,75 @@
[gd_scene format=3 uid="uid://b6qb2oq26yooy"]

[ext_resource type="Script" uid="uid://bapubedba8eiu" path="res://userinterface/client_edit_mode/desktop/scripts/moveable_window.gd" id="1_le5nq"]
[ext_resource type="Shader" uid="uid://bwr4b0mhgi4w6" path="res://userinterface/dash/shaders/blur.gdshader" id="2_4cmho"]
[ext_resource type="Theme" uid="uid://ckqsvvccivw0x" path="res://resources/themes/default.tres" id="3_ddx82"]
[ext_resource type="PackedScene" uid="uid://sntuc3p6k4s6" path="res://userinterface/dash/partials/generic_button.tscn" id="4_l1byb"]
[ext_resource type="Texture2D" uid="uid://bmjw8t1c6bi75" path="res://resources/icons/godot/Close.svg" id="5_752f5"]

[sub_resource type="ShaderMaterial" id="ShaderMaterial_j380t"]
shader = ExtResource("2_4cmho")
shader_parameter/color = Color(0.2, 0.2, 0.2, 1)
shader_parameter/blur_amount = 3.0000001392401203
shader_parameter/roughness = 0.2
shader_parameter/roughness_affect = 0.0

[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_u7aab"]
bg_color = Color(0.078431375, 0.078431375, 0.078431375, 0.78431374)

[node name="MoveableWindow" type="Control" unique_id=524781090]
layout_mode = 3
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
offset_right = -1620.0
offset_bottom = -680.0
grow_horizontal = 2
grow_vertical = 2
size_flags_horizontal = 4
size_flags_vertical = 4
script = ExtResource("1_le5nq")

[node name="BackgroundColor" type="Panel" parent="." unique_id=889545988]
material = SubResource("ShaderMaterial_j380t")
layout_mode = 1
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
mouse_filter = 1
theme = ExtResource("3_ddx82")
theme_override_styles/panel = SubResource("StyleBoxFlat_u7aab")

[node name="MarginContainer" type="MarginContainer" parent="BackgroundColor" unique_id=802103033]
layout_mode = 1
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
theme_override_constants/margin_left = 5
theme_override_constants/margin_top = 5
theme_override_constants/margin_right = 5
theme_override_constants/margin_bottom = 5

[node name="VBoxContainer" type="VBoxContainer" parent="BackgroundColor/MarginContainer" unique_id=969090938]
layout_mode = 2

[node name="HBoxContainer" type="HBoxContainer" parent="BackgroundColor/MarginContainer/VBoxContainer" unique_id=1407239756]
layout_mode = 2

[node name="Label" type="Label" parent="BackgroundColor/MarginContainer/VBoxContainer/HBoxContainer" unique_id=665280700]
layout_mode = 2
size_flags_horizontal = 3
theme_override_font_sizes/font_size = 16
text = "Window Name"
horizontal_alignment = 1
vertical_alignment = 1

[node name="GenericButton" parent="BackgroundColor/MarginContainer/VBoxContainer/HBoxContainer" unique_id=649942124 instance=ExtResource("4_l1byb")]
custom_minimum_size = Vector2(30, 30)
layout_mode = 2
size_flags_horizontal = 1
icon = ExtResource("5_752f5")
only_icon = true
Original file line number Diff line number Diff line change
Expand Up @@ -6,21 +6,11 @@
# License: MIT License
# Authors: Armored Dragon
# --- License
extends Control

signal selection(type: String, parent: int)

@export var window_name: String = "Window Name"
extends "moveable_window.gd"

@onready var _list_container = get_node("BackgroundColor/MarginContainer/VBoxContainer/ScrollContainer/VBoxContainer")
@onready var _button_close = get_node("BackgroundColor/MarginContainer/VBoxContainer/HBoxContainer/GenericButton")
@onready var _node_window_title = get_node("BackgroundColor/MarginContainer/VBoxContainer/HBoxContainer/Label")

@onready var _button_template = preload("res://userinterface/dash/partials/generic_button.tscn")

var _is_dragging: bool = false
var _drag_offset: Vector2

var parent_node_id: int = 0

func _ready() -> void:
Expand Down
17 changes: 17 additions & 0 deletions src/userinterface/client_edit_mode/desktop/scripts/inspector.gd
Original file line number Diff line number Diff line change
Expand Up @@ -32,12 +32,15 @@ var _gizmo_space_local: bool = true
@onready var _node_toolbar_gizmo_control_container: Control = _node_toolbar.get_node("MarginContainer/HBoxContainer/GizmoControl")
@onready var _node_toolbar_gizmo_control_container_misc: Control = _node_toolbar.get_node("MarginContainer/HBoxContainer/GizmoControlMisc")
@onready var _node_toolbar_spawnable_count: Control = _node_toolbar.get_node("MarginContainer/HBoxContainer/SpawnableCount")
@onready var _node_toolbar_player_count: Control = _node_toolbar.get_node("MarginContainer/HBoxContainer/PlayerCount")
@onready var _node_crosshair: Node = get_tree().current_scene.get_node("Crosshair")
@onready var _inspector_popup: Node = get_node("InspectorPopup")
@onready var _inspector_add_node_window: Node = get_node("AddNodeWindow")
@onready var _inspector_filter_search: LineEdit = get_node("VBoxContainer/HBoxContainer/HSplitContainer/MarginContainer/VBoxContainer/Container/VBoxContainer/InputString/MarginContainer/HBoxContainer/MarginContainer/LineEdit")
@onready var _inspector_filters: Node = get_node("VBoxContainer/HBoxContainer/HSplitContainer/MarginContainer/VBoxContainer/Container/VBoxContainer/Filters/HBoxContainer")

@onready var _node_property_editor: Node = get_node("VBoxContainer/HBoxContainer/HSplitContainer/Properties")

# UI Inspector
@onready var _inspector_tree: Tree = get_node("VBoxContainer/HBoxContainer/HSplitContainer/MarginContainer/VBoxContainer/Container/VBoxContainer/MarginContainer/Tree")

Expand Down Expand Up @@ -198,6 +201,7 @@ func _inspector_tree_item_mouse_selected(mouse_position: Vector2, mouse_button_i
return

_inspector_selected_node = _inspector_selected.get_metadata(0)
_set_npe_state(_inspector_selected_node != null)

_select(int(_inspector_selected.get_metadata(0).name))
return
Expand All @@ -209,6 +213,7 @@ func _inspector_tree_item_mouse_selected(mouse_position: Vector2, mouse_button_i
return

_inspector_selected_node = _inspector_selected.get_metadata(0)
_set_npe_state(_inspector_selected_node != null)

var _mouse_pos = _inspector_tree.get_global_mouse_position()
_inspector_popup.position = _mouse_pos
Expand Down Expand Up @@ -260,6 +265,7 @@ func _inspector_build(root_node: Node = session_root) -> void:
await get_tree().process_frame

var _total_spawnable_label: String = str(session_spawnable_m._database.size())
var _total_player_label: String = str(session_players_m.get_player_count())

GlobalLogger.log("Generating the inspector view with parent '%s'." % root_node)
_inspector_save_openness()
Expand All @@ -272,6 +278,7 @@ func _inspector_build(root_node: Node = session_root) -> void:

# Update the Toolbar counts.
_node_toolbar_spawnable_count.update_meta(_total_spawnable_label)
_node_toolbar_player_count.update_meta(_total_player_label)

return

Expand Down Expand Up @@ -456,6 +463,8 @@ func _select(target_node: int) -> void:

if _node_db_entry == {}:
GlobalLogger.log("Tried to select a node that should not exist!", Enum.LogLevel.ERROR)
_inspector_selected_node == null
_set_npe_state(false)
return

my_gizmo = await session_spawnable_m.create("Gizmo")
Expand All @@ -464,7 +473,10 @@ func _select(target_node: int) -> void:
my_gizmo.mode = _gizmo_mode
my_gizmo.use_local_space = _gizmo_space_local

_node_property_editor.get_node_properties(_node_db_entry.node)
my_gizmo.transform_changed.connect(func(mode, value): session_spawnable_m.set_transform(target_node, _node_db_entry.node.transform))
# HACK: Update ALL of the node properties after a transformation was done.
my_gizmo.transform_end.connect(func(mode): _node_property_editor.update_node_properties(_node_db_entry.node))

func _gizmo_delete() -> void:
my_gizmo.clear_selection()
Expand Down Expand Up @@ -532,3 +544,8 @@ func _cem_camera_state(state: bool) -> void:
_player_node._cem_camera_state(state)
Events.emit_signal("cem_camera_state", state)
return

# Node Property Editor
func _set_npe_state(state: bool) -> void:
_node_property_editor.visible = state
return
Loading