diff --git a/app/assets/materials/glass.gdshader b/app/assets/materials/glass.gdshader index 45ce262..deaaf8e 100644 --- a/app/assets/materials/glass.gdshader +++ b/app/assets/materials/glass.gdshader @@ -1,6 +1,6 @@ shader_type spatial; -render_mode diffuse_burley, specular_schlick_ggx, blend_mix, cull_disabled, shadows_disabled, depth_prepass_alpha; +render_mode diffuse_burley, specular_schlick_ggx, blend_mix, cull_disabled, shadows_disabled; group_uniforms Color; uniform vec4 color : source_color = vec4(1.0, 1.0, 1.0, 0.3); @@ -12,7 +12,7 @@ uniform vec2 size = vec2(1.0, 1.0); uniform float border_size: hint_range(0.0, 0.5) = 0.001; uniform float border_fade_in: hint_range(0.0, 0.5) = 0.005; uniform float border_fade_out: hint_range(0.0, 0.5) = 0.0; -uniform float corner_radius: hint_range(0.0, 0.5) = 0.04; +uniform float corner_radius = 0.04; group_uniforms Roughness; uniform float roughness : hint_range(0.0, 1.0) = 0.3; diff --git a/app/content/main.tscn b/app/content/main.tscn index f1d7644..331c1cb 100644 --- a/app/content/main.tscn +++ b/app/content/main.tscn @@ -76,16 +76,16 @@ min_camera_height = 0.01 xr_origin = NodePath("../XROrigin3D") [node name="Menu" parent="." instance=ExtResource("8_du83w")] -transform = Transform3D(0.999998, -0.000514899, -6.55874e-05, 1.96975e-05, 0.163911, -0.986474, 0.000518685, 0.986474, 0.163911, -0.0165588, 0.796337, -0.634317) +transform = Transform3D(0.999999, -1.39633e-11, 0, 1.60657e-10, 1, -4.54747e-13, 0, 0, 0.999999, -0.0165677, 0.766337, -0.634317) [node name="Keyboard" parent="." instance=ExtResource("9_e5n3p")] -transform = Transform3D(0.499999, -0.000139169, -6.50204e-05, 5.24307e-05, 0.353553, -0.353553, 0.000144383, 0.353553, 0.353553, -0.0199266, 0.550784, -0.47368) +transform = Transform3D(0.5, -0.000139169, -6.50202e-05, 5.2431e-05, 0.353553, -0.353553, 0.000144384, 0.353553, 0.353553, -0.0199266, 0.550784, -0.47368) [node name="Rooms" type="Node3D" parent="."] [node name="House" parent="." instance=ExtResource("9_np6mw")] [node name="Onboarding" parent="." instance=ExtResource("12_uq2nj")] -transform = Transform3D(0.999999, -1.39632e-11, 0, 9.48097e-12, 0.999999, 0, 0, 0, 0.999999, -0.529594, 0.820154, -0.600147) +transform = Transform3D(1, -9.48098e-12, 0, 9.48098e-12, 1, 0, 0, 0, 1, -0.529594, 0.820154, -0.600147) [editable path="XROrigin3D/XRControllerLeft"] diff --git a/app/content/system/keyboard/keyboard.tscn b/app/content/system/keyboard/keyboard.tscn index 6801a03..33d2ae6 100644 --- a/app/content/system/keyboard/keyboard.tscn +++ b/app/content/system/keyboard/keyboard.tscn @@ -8,15 +8,15 @@ [ext_resource type="Script" path="res://content/functions/occludable.gd" id="6_y4sdl"] [sub_resource type="BoxShape3D" id="BoxShape3D_k5ib7"] -size = Vector3(0.79, 0.01, 0.26) +size = Vector3(0.86, 0.27, 0.02) [sub_resource type="ShaderMaterial" id="ShaderMaterial_x72nd"] -render_priority = 0 +render_priority = -1 shader = ExtResource("5_0dbg6") shader_parameter/color = Color(1, 1, 1, 0.3) shader_parameter/border_color = Color(1, 1, 1, 1) shader_parameter/edge_color = Color(0, 0, 0, 1) -shader_parameter/size = Vector2(0.79, 0.26) +shader_parameter/size = Vector2(0.86, 0.27) shader_parameter/border_size = 0.001 shader_parameter/border_fade_in = 0.005 shader_parameter/border_fade_out = 0.0 @@ -25,7 +25,7 @@ shader_parameter/roughness = 0.3 shader_parameter/grain_amount = 0.02 [sub_resource type="QuadMesh" id="QuadMesh_88pdc"] -size = Vector2(0.79, 0.26) +size = Vector2(0.86, 0.27) [node name="Keyboard" type="StaticBody3D" groups=["ui_focus_stop"]] transform = Transform3D(0.5, 0, 0, 0, 0.5, 0, 0, 0, 0.5, 0, 0, 0) @@ -34,7 +34,7 @@ collision_mask = 0 script = ExtResource("1_maojw") [node name="Backspace" parent="." instance=ExtResource("1_xdpwr")] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.35, 0, -0.07) +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.38, 0.09, 0) focusable = false label = "backspace" icon = true @@ -42,34 +42,32 @@ echo = true metadata/key = 4194308 [node name="Caps" parent="." instance=ExtResource("1_xdpwr")] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.370036, 0, 0.059964) +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.39, -0.03, 0) focusable = false label = "keyboard_capslock" icon = true toggleable = true [node name="Paste" parent="." instance=ExtResource("1_xdpwr")] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.349964, 0, 0.089964) +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.38, -0.09, 0) focusable = false label = "assignment" icon = true [node name="Keys" type="Node3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.310036, 0, -0.090036) +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.325, 0.09, 0) script = ExtResource("3_mx544") columns = 11 -depth_gap = 0.06 -size = Vector3(0.6, 1, 1) +gaps = Vector2(0.01, 0.01) +size = Vector3(0.6, 0.15, 1) [node name="Movable" type="Node" parent="."] script = ExtResource("4_86fct") [node name="CollisionShape3D" type="CollisionShape3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.0093171, -0.009645, 0.00284005) shape = SubResource("BoxShape3D_k5ib7") [node name="MeshInstance3D" type="MeshInstance3D" parent="."] -transform = Transform3D(1, 0, 0, 0, -4.37114e-08, 1, 0, -1, -4.37114e-08, -0.0093171, -0.009645, 0.00284005) material_override = SubResource("ShaderMaterial_x72nd") mesh = SubResource("QuadMesh_88pdc") diff --git a/app/content/ui/components/button/button.gd b/app/content/ui/components/button/button.gd index 5b71137..0c9e639 100644 --- a/app/content/ui/components/button/button.gd +++ b/app/content/ui/components/button/button.gd @@ -1,6 +1,6 @@ @tool -extends Node3D +extends Container3D class_name Button3D signal on_button_down() @@ -12,8 +12,13 @@ const ECHO_WAIT_INITIAL = 0.5 const ECHO_WAIT_REPEAT = 0.1 @onready var body: StaticBody3D = $Body +@onready var mesh: MeshInstance3D = $Body/MeshInstance3D +@onready var collision: CollisionShape3D = $Body/CollisionShape3D @onready var label_node: Label3D = $Body/Label @onready var finger_area: Area3D = $FingerArea +@onready var finger_area_collision: CollisionShape3D = $FingerArea/CollisionShape3D +@onready var touch_collision: CollisionShape3D = $TouchBody/CollisionShape3D +@onready var touch: StaticBody3D = $TouchBody @export var focusable: bool = true: set(value): @@ -72,6 +77,8 @@ func _ready(): if initial_active: active = true + _update() + Update.props(self, ["active", "external_value", "icon", "label", "font_size", "disabled"]) if echo: @@ -92,8 +99,8 @@ func update_animation(value: float): var tween = create_tween() tween.set_parallel(true) - tween.tween_property(body, "scale:y", lerpf(1.0, 0.5, value), 0.2) - tween.tween_property(body, "position:y", lerpf(0.01, 0.005, value), 0.2) + tween.tween_property(body, "scale:z", lerpf(1.0, 0.5, value), 0.2) + tween.tween_property(body, "position:z", lerpf(size.z / 2, size.z / 4, value), 0.2) func _on_press_down(event): if disabled: @@ -181,12 +188,25 @@ func _touch_change(event: EventTouch): var pos = Vector3(0, 1, 0) for finger in event.fingers: var finger_pos = to_local(finger.area.global_position) - if pos.y > finger_pos.y: + if pos.z > finger_pos.z: pos = finger_pos var button_height = 0.2 var button_center = 0.1 - var percent = clamp((button_center + button_height / 2 - pos.y) / (button_height / 2), 0, 1) + var percent = clamp((button_center + button_height / 2 - pos.z) / (button_height / 2), 0, 1) update_animation(percent) + +func _update(): + body.position = Vector3(0, 0, size.z / 2) + finger_area.position = Vector3(0, 0, -0.015) + touch.position = Vector3(0, 0, size.z / 2) + + mesh.mesh.size = Vector2(size.x, size.y) + collision.shape.size = Vector3(size.x, size.y, size.z) + label_node.width = size.x / label_node.pixel_size + mesh.position = Vector3(0, 0, size.z / 2) + label_node.position = Vector3(0, 0, size.z / 2 + 0.001) + + finger_area_collision.shape.size = Vector3(size.x, size.y, 0.03) diff --git a/app/content/ui/components/button/button.tscn b/app/content/ui/components/button/button.tscn index bed70d8..a597486 100644 --- a/app/content/ui/components/button/button.tscn +++ b/app/content/ui/components/button/button.tscn @@ -1,45 +1,43 @@ -[gd_scene load_steps=8 format=3 uid="uid://bsjqdvkt0u87c"] +[gd_scene load_steps=7 format=3 uid="uid://bsjqdvkt0u87c"] [ext_resource type="Script" path="res://content/ui/components/button/button.gd" id="1_74x7g"] [ext_resource type="Shader" path="res://assets/materials/glass.gdshader" id="4_2xlpt"] [sub_resource type="ShaderMaterial" id="ShaderMaterial_oqan0"] -render_priority = 0 +render_priority = -1 shader = ExtResource("4_2xlpt") shader_parameter/color = Color(1, 1, 1, 0.3) shader_parameter/border_color = Color(1, 1, 1, 1) shader_parameter/edge_color = Color(0, 0, 0, 1) -shader_parameter/size = Vector2(0.1, 0.1) -shader_parameter/border_size = 0.001 -shader_parameter/border_fade_in = 0.005 +shader_parameter/size = Vector2(1, 1) +shader_parameter/border_size = 0.01 +shader_parameter/border_fade_in = 0.05 shader_parameter/border_fade_out = 0.0 -shader_parameter/corner_radius = 0.02 +shader_parameter/corner_radius = 0.2 shader_parameter/roughness = 0.3 shader_parameter/grain_amount = 0.02 [sub_resource type="QuadMesh" id="QuadMesh_bt05p"] -size = Vector2(0.1, 0.1) +size = Vector2(0.05, 0.05) [sub_resource type="BoxShape3D" id="BoxShape3D_xwopm"] -size = Vector3(0.05, 0.02, 0.05) +size = Vector3(0.05, 0.05, 0.01) [sub_resource type="BoxShape3D" id="BoxShape3D_bqjii"] -size = Vector3(0.0501598, 0.0390937, 0.0501598) - -[sub_resource type="BoxShape3D" id="BoxShape3D_vkbuh"] -size = Vector3(0.05, 0.03, 0.05) +size = Vector3(0.05, 0.05, 0.03) [node name="Button" type="Node3D" groups=["ui_focus"]] script = ExtResource("1_74x7g") label = "Example Text" +size = Vector3(0.05, 0.05, 0.01) [node name="Body" type="StaticBody3D" parent="." groups=["ui_focus_skip"]] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.01, 0) +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0.005) collision_layer = 2 collision_mask = 0 [node name="MeshInstance3D" type="MeshInstance3D" parent="Body"] -transform = Transform3D(0.5, 0, 0, 0, -2.18557e-08, 0.5, 0, -0.5, -2.18557e-08, 0, 0.009, 0) +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0.005) material_override = SubResource("ShaderMaterial_oqan0") mesh = SubResource("QuadMesh_bt05p") skeleton = NodePath("../..") @@ -48,8 +46,9 @@ skeleton = NodePath("../..") shape = SubResource("BoxShape3D_xwopm") [node name="Label" type="Label3D" parent="Body"] -transform = Transform3D(1, 0, 0, 0, -4.37114e-08, 1, 0, -1, -4.37114e-08, 0, 0.0107199, 0) +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0.006) pixel_size = 0.001 +double_sided = false text = "Example Text" font_size = 10 outline_size = 0 @@ -57,19 +56,18 @@ autowrap_mode = 3 width = 50.0 [node name="FingerArea" type="Area3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.0101447, 0) +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, -0.015) collision_layer = 4 collision_mask = 0 monitoring = false [node name="CollisionShape3D" type="CollisionShape3D" parent="FingerArea"] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.00975001, 0) shape = SubResource("BoxShape3D_bqjii") [node name="TouchBody" type="StaticBody3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0.005) collision_layer = 4 collision_mask = 0 [node name="CollisionShape3D" type="CollisionShape3D" parent="TouchBody"] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.005, 0) -shape = SubResource("BoxShape3D_vkbuh") +shape = SubResource("BoxShape3D_xwopm") diff --git a/app/content/ui/components/container/container3d.gd b/app/content/ui/components/container/container3d.gd index 4818f29..dfb2ff4 100644 --- a/app/content/ui/components/container/container3d.gd +++ b/app/content/ui/components/container/container3d.gd @@ -1,15 +1,18 @@ +@tool + extends Node3D class_name Container3D -@export var size := Vector3(1.0, 1.0, 1.0) : +@export var size := Vector3(1.0, 1.0, 1.0): set(value): - size = value - _update_container() + size = Vector3(max(0, value.x), max(0, value.y), max(0, value.z)) -@export var padding: Vector4 = Vector4(0, 0, 0, 0) : - set(value): - padding = value - _update_container() + if !is_inside_tree(): return -func _update_container(): + _update() + +func _ready(): + _update() + +func _update(): pass \ No newline at end of file diff --git a/app/content/ui/components/flex_container/flex_container.gd b/app/content/ui/components/flex_container/flex_container.gd new file mode 100644 index 0000000..45cb610 --- /dev/null +++ b/app/content/ui/components/flex_container/flex_container.gd @@ -0,0 +1,112 @@ +@tool +extends Container3D +class_name FlexContainer3D + +enum Justification { + START, + CENTER, + END, + SPACE_BETWEEN, + SPACE_AROUND, + SPACE_EVENLY, +} + +@export var justification: Justification = Justification.START: + set(value): + justification = value + _update() +@export var vertical: bool = false: + set(value): + vertical = value + _update() +@export var gap: float = 0.0: + set(value): + gap = value + _update() + +func _ready(): + _update() + + child_entered_tree.connect(func(_arg): + _update() + ) + + child_exiting_tree.connect(func(_arg): + _update() + ) + + child_order_changed.connect(func(): + _update() + ) + +func _update(): + print("update") + var width = size.y if vertical else size.x + var child_size := Vector2(0, 0) + var child_count = 0 + + for child in get_children(): + if child is Container3D == false: + continue + + if vertical: + child_size.x = max(child.size.x, child_size.x) + child_size.y += child.size.y + gap + else: + child_size.x += child.size.x + gap + child_size.y = max(child.size.y, child_size.y) + + child_count += 1 + + if child_count == 0: + return + + var child_scale = Vector2(size.x, size.y) / child_size + child_size.clamp(Vector2(0, 0), Vector2(size.x, size.y)) + + child_scale = child_scale.clamp(Vector2(0.001, 0.001), Vector2(1, 1)) + + print(child_size) + print(child_scale) + + var offset = 0.0 + + match justification: + Justification.START: + offset = 0.0 + Justification.CENTER: + offset = (width - child_size) / 2 + Justification.END: + offset = width - child_size + Justification.SPACE_BETWEEN: + offset = 0.0 + Justification.SPACE_AROUND: + offset = (width - child_size) / child_count / 2 + Justification.SPACE_EVENLY: + offset = (width - child_size) / (child_count + 1) + + for child in get_children(): + if child is Container3D == false: + continue + + child.scale = Vector3(child_scale.x, child_scale.y, 1) + + if vertical: + child.position = Vector3(0, -offset, 0) + offset += child.size.y * child_scale.y + else: + child.position = Vector3(offset, 0, 0) + offset += child.size.x * child_scale.x + + print(offset) + + match justification: + Justification.START, Justification.CENTER, Justification.END: + offset += gap + Justification.SPACE_BETWEEN: + offset += (width - child_size) / (child_count - 1) + Justification.SPACE_AROUND: + offset += (width - child_size) / child_count + Justification.SPACE_EVENLY: + offset += (width - child_size) / (child_count + 1) + \ No newline at end of file diff --git a/app/content/ui/components/grid_container/grid_container.gd b/app/content/ui/components/grid_container/grid_container.gd index 3bff0b0..f4f5702 100644 --- a/app/content/ui/components/grid_container/grid_container.gd +++ b/app/content/ui/components/grid_container/grid_container.gd @@ -2,41 +2,46 @@ extends Container3D class_name GridContainer3D - -@export var columns := 5 : +@export var columns := 5: set(value): columns = value - _update_container() + _update() -@export var rows := 1 : +@export var gaps := Vector2(0, 0): set(value): - rows = value - _update_container() - -@export var depth_gap := 1.0 : - set(value): - depth_gap = value - _update_container() + gaps = value + _update() func _ready(): - _update_container() + _update() -func get_gaps() -> Vector3: - return Vector3( - (float(size.x) / (columns - 1 )) if columns != 1 else 0.0, - (float(size.y) / (rows - 1)) if rows != 1 else 0.0, - depth_gap + child_entered_tree.connect(func(_arg): + _update() ) + child_exiting_tree.connect(func(_arg): + _update() + ) -func _update_container(): - var i := 0 - var gaps := get_gaps() + child_order_changed.connect(func(): + _update() + ) + +func _update(): + var column := 0 + var row_pos := 0.0 + var column_max_height := 0.0 for child in get_children(): - var x := (i % columns) * gaps.x - var y := ((i / columns) % rows) * gaps.y - var z := (i / (columns * rows)) * gaps.z + if child is Container3D == false: + continue - child.set_position(Vector3(x, -y, z)) - i += 1 \ No newline at end of file + column_max_height = max(column_max_height, child.size.y) + + child.position = Vector3(column * ((size.x / columns) + gaps.x), row_pos, 0) + + column += 1 + if column >= columns: + column = 0 + row_pos -= column_max_height + gaps.y + \ No newline at end of file diff --git a/app/content/ui/components/input/input.gd b/app/content/ui/components/input/input.gd index 19c454e..21f2942 100644 --- a/app/content/ui/components/input/input.gd +++ b/app/content/ui/components/input/input.gd @@ -1,24 +1,15 @@ @tool -extends StaticBody3D +extends Container3D class_name Input3D var text_handler = preload ("res://content/ui/components/input/text_handler.gd").new() -@onready var caret: MeshInstance3D = $Label/Caret -@onready var mesh_box: MeshInstance3D = $Box -@onready var collision: CollisionShape3D = $Collision +@onready var caret: MeshInstance3D = $Body/Label/Caret +@onready var mesh_box: MeshInstance3D = $Body/Box +@onready var body: StaticBody3D = $Body +@onready var collision: CollisionShape3D = $Body/Collision @onready var animation: AnimationPlayer = $AnimationPlayer -@onready var label: Label3D = $Label - -@export_range(0.1, 2, 0.01, "suffix:m") var width: float = 0.15: - set(value): - width = value - text_handler.width = value - if !is_inside_tree(): return - - mesh_box.mesh.size.x = width - collision.shape.size.x = width - label.position.x = -width / 2 + 0.002 +@onready var label: Label3D = $Body/Label @export var text: String: set(value): @@ -48,10 +39,11 @@ var keyboard_input: bool = false var input_plane = Plane(Vector3.UP, Vector3.ZERO) func _ready(): - Update.props(self, ["text", "disabled", "width"]) - text_handler.label = label + Update.props(self, ["text", "disabled", "width"]) + _update() + if Engine.is_editor_hint(): return @@ -156,3 +148,13 @@ func _draw_debug_text_gaps(): label.to_global(Vector3(offset, 0.01, 0)), Color(1, 0, 0) if i != text_handler.overflow_index else Color(0, 1, 0) ) + +func _update(): + text_handler.width = size.x + mesh_box.mesh.size = Vector2(size.x, size.y) + mesh_box.position.z = size.z / 2 + mesh_box.material_override.set_shader_parameter("size", mesh_box.mesh.size) + collision.shape.size = size + label.position = Vector3( - size.x / 2 + 0.002, 0, size.z / 2) + label.text = text_handler.get_display_text() + body.position = Vector3(0, 0, size.z / 2) \ No newline at end of file diff --git a/app/content/ui/components/input/input.tscn b/app/content/ui/components/input/input.tscn index c85e882..b6cd564 100644 --- a/app/content/ui/components/input/input.tscn +++ b/app/content/ui/components/input/input.tscn @@ -1,16 +1,32 @@ -[gd_scene load_steps=10 format=3 uid="uid://blrhy2uccrdn4"] +[gd_scene load_steps=12 format=3 uid="uid://blrhy2uccrdn4"] -[ext_resource type="Material" uid="uid://bujy3egn1oqac" path="res://assets/materials/pri-500.material" id="1_0kd7r"] [ext_resource type="Script" path="res://content/ui/components/input/input.gd" id="1_uml3t"] [ext_resource type="FontVariation" uid="uid://d2ofyimg5s65q" path="res://assets/fonts/ui_font_500.tres" id="3_ij5fh"] +[ext_resource type="Shader" path="res://assets/materials/glass.gdshader" id="3_nl02b"] -[sub_resource type="BoxMesh" id="BoxMesh_kjbca"] -resource_local_to_scene = true -size = Vector3(0.15, 0.006, 0.03) +[sub_resource type="ShaderMaterial" id="ShaderMaterial_c5qdm"] +render_priority = -1 +shader = ExtResource("3_nl02b") +shader_parameter/color = Color(1, 1, 1, 0.3) +shader_parameter/border_color = Color(1, 1, 1, 1) +shader_parameter/edge_color = Color(0, 0, 0, 1) +shader_parameter/size = Vector2(0.15, 0.03) +shader_parameter/border_size = 0.001 +shader_parameter/border_fade_in = 0.005 +shader_parameter/border_fade_out = 0.0 +shader_parameter/corner_radius = 0.01 +shader_parameter/roughness = 0.3 +shader_parameter/grain_amount = 0.02 + +[sub_resource type="QuadMesh" id="QuadMesh_5rrua"] +size = Vector2(0.15, 0.03) [sub_resource type="BoxShape3D" id="BoxShape3D_x4yp8"] resource_local_to_scene = true -size = Vector3(0.15, 0.006, 0.03) +size = Vector3(0.15, 0.03, 0.01) + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_x1ra7"] +shading_mode = 0 [sub_resource type="BoxMesh" id="BoxMesh_2736g"] size = Vector3(0.001, 0.02, 0.001) @@ -52,36 +68,44 @@ _data = { "blink": SubResource("Animation_8ny1h") } -[node name="Input" type="StaticBody3D" groups=["ui_focus"]] +[node name="Input" type="Node3D"] +script = ExtResource("1_uml3t") +text = "Example Text" +size = Vector3(0.15, 0.03, 0.01) + +[node name="Body" type="StaticBody3D" parent="." groups=["ui_focus"]] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0.005) collision_layer = 6 collision_mask = 0 -script = ExtResource("1_uml3t") -text = "Example" -[node name="Box" type="MeshInstance3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.003, 0) -material_override = ExtResource("1_0kd7r") -mesh = SubResource("BoxMesh_kjbca") +[node name="Box" type="MeshInstance3D" parent="Body"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0.005) +material_override = SubResource("ShaderMaterial_c5qdm") +mesh = SubResource("QuadMesh_5rrua") -[node name="Collision" type="CollisionShape3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.003, 0) +[node name="Collision" type="CollisionShape3D" parent="Body"] shape = SubResource("BoxShape3D_x4yp8") -[node name="Label" type="Label3D" parent="."] -transform = Transform3D(1, 0, 0, 0, -4.37114e-08, 1, 0, -1, -4.37114e-08, -0.073, 0.00618291, 0) +[node name="Label" type="Label3D" parent="Body"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.073, 0, 0.005) +sorting_offset = 0.1 pixel_size = 0.001 -text = "Example" +double_sided = false +alpha_cut = 2 +text = "Example Text" font = ExtResource("3_ij5fh") font_size = 18 outline_size = 0 horizontal_alignment = 0 -[node name="Caret" type="MeshInstance3D" parent="Label"] +[node name="Caret" type="MeshInstance3D" parent="Body/Label"] visible = false +material_override = SubResource("StandardMaterial3D_x1ra7") mesh = SubResource("BoxMesh_2736g") skeleton = NodePath("../..") [node name="AnimationPlayer" type="AnimationPlayer" parent="."] +root_node = NodePath("../Body") libraries = { "": SubResource("AnimationLibrary_1sy4t") } diff --git a/app/content/ui/components/input/text_handler.gd b/app/content/ui/components/input/text_handler.gd index 9679eac..4839358 100644 --- a/app/content/ui/components/input/text_handler.gd +++ b/app/content/ui/components/input/text_handler.gd @@ -5,7 +5,12 @@ const FontTools = preload ("res://lib/utils/font_tools.gd") var label: Label3D var text: String = "" -var width: float = 0.2 +var width: float = 0.2: + set(value): + width = max(0.0, value) + gap_offsets = _calculate_text_gaps() + overflow_index = _calculate_overflow_index() + caret_position = 0 var gap_offsets = null var overflow_index: int = -1 var char_offset: int = 0 @@ -13,9 +18,6 @@ var caret_position: int = 3: set(value): caret_position = clampi(value, 0, text.length()) -func set_width(value: float): - width = value - func set_text(value: String, insert: bool=false): var old_text = text text = value diff --git a/app/content/ui/components/line_chart/line_chart.tscn b/app/content/ui/components/line_chart/line_chart.tscn index 89885c7..a8fa7a4 100644 --- a/app/content/ui/components/line_chart/line_chart.tscn +++ b/app/content/ui/components/line_chart/line_chart.tscn @@ -10,7 +10,7 @@ cull_mode = 2 shading_mode = 0 albedo_color = Color(0.109804, 0.721569, 0.262745, 1) -[sub_resource type="ArrayMesh" id="ArrayMesh_mec1l"] +[sub_resource type="ArrayMesh" id="ArrayMesh_5xylt"] _surfaces = [{ "aabb": AABB(-0.000587015, -0.000596339, 0.0005, 0.501171, 0.301189, 1e-05), "format": 34359742465, @@ -43,7 +43,7 @@ script = ExtResource("1_n7fu8") [node name="Line" type="MeshInstance3D" parent="."] material_override = SubResource("StandardMaterial3D_20gpn") -mesh = SubResource("ArrayMesh_mec1l") +mesh = SubResource("ArrayMesh_5xylt") [node name="Plane" type="MeshInstance3D" parent="."] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.25, 0.15, -0.001) diff --git a/app/content/ui/components/notification/notification.tscn b/app/content/ui/components/notification/notification.tscn index 50d8f07..825bfc6 100644 --- a/app/content/ui/components/notification/notification.tscn +++ b/app/content/ui/components/notification/notification.tscn @@ -197,6 +197,7 @@ libraries = { transform = Transform3D(0.5, 0, 0, 0, 0.5, 0, 0, 0, 0.5, 0.12, -0.003, -0.02) label = "close" icon = true +size = Vector3(1, 1, 1) [node name="Timer" type="Timer" parent="AnimationNode"] wait_time = 3.0 diff --git a/app/content/ui/components/slider/slider.gd b/app/content/ui/components/slider/slider.gd index 9c4969e..6984977 100644 --- a/app/content/ui/components/slider/slider.gd +++ b/app/content/ui/components/slider/slider.gd @@ -1,5 +1,5 @@ @tool -extends Node3D +extends Container3D class_name Slider3D @export var min: float = 0.0: @@ -42,32 +42,11 @@ class_name Slider3D if !is_inside_tree(): return label.text = str(value) + " " + label_unit -@export var size: Vector3 = Vector3(0.2, 0.01, 0.02): # Warning, units are in cm - set(value): - size = value - if !is_inside_tree(): return - _update_shape() -@export var cutout_border: float = 0.02: - set(value): - cutout_border = value - if !is_inside_tree(): return - _update_shape() -@export var cutout_depth: float = 0.05: - set(value): - cutout_depth = value - if !is_inside_tree(): return - _update_shape() - -@onready var outside_rod: CSGBox3D = $Rod/Outside -@onready var cutout: CSGCombiner3D = $Rod/Cutout -@onready var cutout_box: CSGBox3D = $Rod/Cutout/Length -@onready var cutout_end_left: CSGCylinder3D = $Rod/Cutout/EndLeft -@onready var cutout_end_right: CSGCylinder3D = $Rod/Cutout/EndRight @onready var label: Label3D = $Label -@onready var body_collision_shape: CollisionShape3D = $CollisionBody/CollisionShape3D +@onready var mesh: MeshInstance3D = $Body/MeshInstance3D +@onready var body_collision_shape: CollisionShape3D = $Body/CollisionShape3D @onready var area_collision_shape: CollisionShape3D = $Area3D/CollisionShape3D - @onready var slider_knob: MeshInstance3D = $Knob signal on_value_changed(value: float) @@ -78,7 +57,7 @@ func _ready(): Update.props(self, ["value", "show_label", "label_unit"]) _update_slider() - _update_shape() + _update() move_plane = Plane(Vector3.UP, Vector3(0, size.y / 200, 0)) func _on_press_down(event: EventPointer): @@ -91,9 +70,7 @@ func _on_touch_enter(event: EventTouch): _handle_touch(event) func _get_slider_min_max(): - var cutout_radius = (size.z - cutout_border * 2) / 2 - - return Vector2( - size.x / 2 + cutout_border + cutout_radius, size.x / 2 - cutout_border - cutout_radius) / 100 + return Vector2( - size.x / 2 + 0.01, size.x / 2 - 0.01) func _handle_press(event: EventPointer): var ray_pos = event.ray.global_position @@ -134,46 +111,20 @@ func _update_slider(): slider_knob.position.x = lerp(min_max.x, min_max.y, click_percent) -func _update_shape(): - outside_rod.size = size +func _update(): + _update_slider() + body_collision_shape.shape.size = size + body_collision_shape.position = Vector3(0, 0, size.z / 2) - body_collision_shape.shape.size = size * 0.01 - area_collision_shape.shape.size = Vector3(size.x, size.y * 2, size.z) * 0.01 - area_collision_shape.position = Vector3(0, size.y, 0) * 0.01 + area_collision_shape.shape.size = Vector3(size.x, size.y, 0.01) + area_collision_shape.position = Vector3(0, 0, size.z + 0.005) - var cutout_width = size.z - cutout_border * 2 + mesh.position = Vector3(0, 0, size.z) + mesh.mesh.size = Vector2(size.x, size.y) + mesh.material_override.set_shader_parameter("size", Vector2(size.x, size.y) * 10.0) - cutout_box.size = Vector3( - size.x - cutout_border * 2 - (cutout_width), - cutout_depth, - cutout_width - ) + slider_knob.position.z = size.z + 0.002 + slider_knob.mesh.size = Vector2(size.y * 0.75, size.y * 0.75) + slider_knob.material_override.set_shader_parameter("size", Vector2(size.y * 7.5, size.y * 7.5)) - cutout.position = Vector3( - 0, - size.y / 2 - cutout_depth / 2 + 0.001, - 0 - ) - - cutout_end_left.radius = cutout_box.size.z / 2 - cutout_end_right.radius = cutout_box.size.z / 2 - cutout_end_left.height = cutout_depth - cutout_end_right.height = cutout_depth - - cutout_end_left.position = Vector3( - - cutout_box.size.x / 2, - 0, - 0 - ) - - cutout_end_right.position = Vector3( - cutout_box.size.x / 2, - 0, - 0 - ) - - label.position = Vector3( - size.x / 200 + 0.005, - 0, - 0 - ) + label.position = Vector3(size.x / 2 + 0.005, 0, size.z) \ No newline at end of file diff --git a/app/content/ui/components/slider/slider.tscn b/app/content/ui/components/slider/slider.tscn index 84a9e0f..74403eb 100644 --- a/app/content/ui/components/slider/slider.tscn +++ b/app/content/ui/components/slider/slider.tscn @@ -1,92 +1,90 @@ -[gd_scene load_steps=7 format=3 uid="uid://pk5k1q8bx0rj"] +[gd_scene load_steps=9 format=3 uid="uid://pk5k1q8bx0rj"] [ext_resource type="Script" path="res://content/ui/components/slider/slider.gd" id="1_ylune"] - -[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_eiwwn"] -albedo_color = Color(0.133333, 0.133333, 0.133333, 1) - -[sub_resource type="CylinderMesh" id="CylinderMesh_77ny1"] -material = SubResource("StandardMaterial3D_eiwwn") -top_radius = 0.008 -bottom_radius = 0.008 -height = 0.003 - -[sub_resource type="CylinderMesh" id="CylinderMesh_v34nn"] -top_radius = 0.002 -bottom_radius = 0.002 -height = 0.005 +[ext_resource type="Shader" path="res://assets/materials/glass.gdshader" id="2_by0d8"] [sub_resource type="BoxShape3D" id="BoxShape3D_h1mn1"] -size = Vector3(0.2, 0.004, 0.01) +resource_local_to_scene = true +size = Vector3(0.15, 0.02, 0.01) + +[sub_resource type="ShaderMaterial" id="ShaderMaterial_vgpd3"] +resource_local_to_scene = true +render_priority = -2 +shader = ExtResource("2_by0d8") +shader_parameter/color = Color(1, 1, 1, 0.3) +shader_parameter/border_color = Color(1, 1, 1, 1) +shader_parameter/edge_color = Color(0, 0, 0, 1) +shader_parameter/size = Vector2(1.5, 0.2) +shader_parameter/border_size = 0.005 +shader_parameter/border_fade_in = 0.04 +shader_parameter/border_fade_out = 0.0 +shader_parameter/corner_radius = 0.12 +shader_parameter/roughness = 0.3 +shader_parameter/grain_amount = 0.02 + +[sub_resource type="QuadMesh" id="QuadMesh_k78f4"] +resource_local_to_scene = true +size = Vector2(0.15, 0.02) + +[sub_resource type="ShaderMaterial" id="ShaderMaterial_mv0la"] +resource_local_to_scene = true +render_priority = -1 +shader = ExtResource("2_by0d8") +shader_parameter/color = Color(1, 1, 1, 0.3) +shader_parameter/border_color = Color(1, 1, 1, 1) +shader_parameter/edge_color = Color(0, 0, 0, 1) +shader_parameter/size = Vector2(0.15, 0.15) +shader_parameter/border_size = 0.002 +shader_parameter/border_fade_in = 0.02 +shader_parameter/border_fade_out = 0.0 +shader_parameter/corner_radius = 0.085 +shader_parameter/roughness = 0.3 +shader_parameter/grain_amount = 0.02 + +[sub_resource type="QuadMesh" id="QuadMesh_vw14o"] +resource_local_to_scene = true +size = Vector2(0.015, 0.015) [sub_resource type="BoxShape3D" id="BoxShape3D_s64dk"] -size = Vector3(0.2, 0.008, 0.01) +resource_local_to_scene = true +size = Vector3(0.15, 0.02, 0.01) [node name="Slider" type="Node3D"] script = ExtResource("1_ylune") -size = Vector3(20, 0.4, 1) -cutout_border = 0.2 -cutout_depth = 0.36 +show_label = true +size = Vector3(0.15, 0.02, 0.01) -[node name="Rod" type="CSGCombiner3D" parent="."] -transform = Transform3D(0.01, 0, 0, 0, 0.01, 0, 0, 0, 0.01, 0, 0, 0) -snap = 0.0001 - -[node name="Outside" type="CSGBox3D" parent="Rod"] -snap = 0.0001 -size = Vector3(20, 0.4, 1) - -[node name="Cutout" type="CSGCombiner3D" parent="Rod"] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.021, 0) -operation = 2 -snap = 0.0001 - -[node name="Length" type="CSGBox3D" parent="Rod/Cutout"] -snap = 0.0001 -size = Vector3(19, 0.36, 0.6) - -[node name="EndRight" type="CSGCylinder3D" parent="Rod/Cutout"] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 9.5, 0, 0) -snap = 0.0001 -radius = 0.3 -height = 0.36 -sides = 36 - -[node name="EndLeft" type="CSGCylinder3D" parent="Rod/Cutout"] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -9.5, 0, 0) -snap = 0.0001 -radius = 0.3 -height = 0.36 -sides = 36 - -[node name="Knob" type="MeshInstance3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.057, 0.00409426, 0) -mesh = SubResource("CylinderMesh_77ny1") - -[node name="Pin" type="MeshInstance3D" parent="Knob"] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.00353538, 0) -mesh = SubResource("CylinderMesh_v34nn") - -[node name="CollisionBody" type="StaticBody3D" parent="."] +[node name="Body" type="StaticBody3D" parent="."] collision_layer = 6 collision_mask = 6 -[node name="CollisionShape3D" type="CollisionShape3D" parent="CollisionBody"] +[node name="CollisionShape3D" type="CollisionShape3D" parent="Body"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0.005) shape = SubResource("BoxShape3D_h1mn1") +[node name="MeshInstance3D" type="MeshInstance3D" parent="Body"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0.01) +material_override = SubResource("ShaderMaterial_vgpd3") +mesh = SubResource("QuadMesh_k78f4") + [node name="Label" type="Label3D" parent="."] -transform = Transform3D(1, 0, 0, 0, -4.37114e-08, 1, 0, -1, -4.37114e-08, 0.105, 0, 0) -visible = false +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.08, 0, 0.01) pixel_size = 0.001 text = "0.2 " font_size = 10 outline_size = 4 horizontal_alignment = 0 +[node name="Knob" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.039, 0, 0.012) +material_override = SubResource("ShaderMaterial_mv0la") +mesh = SubResource("QuadMesh_vw14o") +skeleton = NodePath("../Body") + [node name="Area3D" type="Area3D" parent="."] collision_layer = 4 collision_mask = 4 [node name="CollisionShape3D" type="CollisionShape3D" parent="Area3D"] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.004, 0) +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0.015) shape = SubResource("BoxShape3D_s64dk") diff --git a/app/content/ui/components/tabs/tabs.gd b/app/content/ui/components/tabs/tabs.gd index 21c6c95..5239bd8 100644 --- a/app/content/ui/components/tabs/tabs.gd +++ b/app/content/ui/components/tabs/tabs.gd @@ -1,4 +1,5 @@ -extends Node3D +@tool +extends FlexContainer3D class_name Tabs3D signal on_select(selected: int) @@ -8,6 +9,11 @@ var selected = R.state(null) @export var initial_selected: Node3D func _ready(): + _update() + + if Engine.is_editor_hint(): + return + if initial_selected: selected.value = initial_selected diff --git a/app/content/ui/menu/edit/edit_menu.gd b/app/content/ui/menu/edit/edit_menu.gd index 7b46d7f..e9607f8 100644 --- a/app/content/ui/menu/edit/edit_menu.gd +++ b/app/content/ui/menu/edit/edit_menu.gd @@ -113,8 +113,6 @@ func render_devices(): _on_device_click(device.keys()[0]) ) devices_node.add_child(button_instance) - - devices_node._update_container() func render_entities(): var entities = get_page() @@ -134,8 +132,6 @@ func render_entities(): _on_entity_click(entity) ) devices_node.add_child(button_instance) - - devices_node._update_container() func _on_device_click(device_id): selected_device = device_id diff --git a/app/content/ui/menu/edit/edit_menu.tscn b/app/content/ui/menu/edit/edit_menu.tscn index 7be08fb..9c63361 100644 --- a/app/content/ui/menu/edit/edit_menu.tscn +++ b/app/content/ui/menu/edit/edit_menu.tscn @@ -8,26 +8,26 @@ script = ExtResource("1_34cbn") [node name="Devices" type="Node3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.03, 0.01, 0.03) +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.015, -0.015, 0.01) script = ExtResource("3_0xvyw") -depth_gap = 0.06 +gaps = Vector2(0.01, 0.01) size = Vector3(0.24, 0.1, 0.1) [node name="PageNumberLabel" type="Label3D" parent="."] -transform = Transform3D(1, 0, 0, 0, -4.37114e-08, 1, 0, -1, -4.37114e-08, 0.26, 0.01, 0.27) +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.26, -0.27, 0.01) pixel_size = 0.001 text = "0 / 0" font_size = 18 outline_size = 0 [node name="Buttons" type="Node3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.19, 0.01, 0.27) +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.16, -0.24, 0.01) [node name="NextPageButton" parent="Buttons" instance=ExtResource("4_tvimg")] label = "navigate_next" icon = true [node name="PreviousPageButton" parent="Buttons" instance=ExtResource("4_tvimg")] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.08, 0, 0) +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.07, 0, 0) label = "navigate_before" icon = true diff --git a/app/content/ui/menu/menu.gd b/app/content/ui/menu/menu.gd index 59afcc2..2cff249 100644 --- a/app/content/ui/menu/menu.gd +++ b/app/content/ui/menu/menu.gd @@ -44,6 +44,4 @@ func move_into_view(): var camera_transform = main.camera.global_transform camera_transform.origin -= camera_transform.basis.z * 0.5 - camera_transform.basis = camera_transform.basis.rotated(camera_transform.basis.x, deg_to_rad(90)) - global_transform = camera_transform \ No newline at end of file diff --git a/app/content/ui/menu/menu.tscn b/app/content/ui/menu/menu.tscn index b6eece1..3905c92 100644 --- a/app/content/ui/menu/menu.tscn +++ b/app/content/ui/menu/menu.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=19 format=3 uid="uid://c3kdssrmv84kv"] +[gd_scene load_steps=20 format=3 uid="uid://c3kdssrmv84kv"] [ext_resource type="Script" path="res://content/ui/menu/menu.gd" id="1_ng4u3"] [ext_resource type="Script" path="res://content/functions/movable.gd" id="2_8coxu"] @@ -13,18 +13,15 @@ [ext_resource type="PackedScene" uid="uid://c6r4higceibif" path="res://content/ui/menu/settings/settings_menu.tscn" id="11_7wm6b"] [sub_resource type="BoxShape3D" id="BoxShape3D_e1esh"] -size = Vector3(0.38, 0.0128076, 0.32) +size = Vector3(0.51, 0.32, 0.013) -[sub_resource type="BoxShape3D" id="BoxShape3D_6xn1i"] -size = Vector3(0.3, 0.0264844, 0.3) - -[sub_resource type="ShaderMaterial" id="ShaderMaterial_mhqg4"] -render_priority = 0 +[sub_resource type="ShaderMaterial" id="ShaderMaterial_du6qr"] +render_priority = -3 shader = ExtResource("3_htaoi") shader_parameter/color = Color(1, 1, 1, 0.3) shader_parameter/border_color = Color(1, 1, 1, 1) shader_parameter/edge_color = Color(0, 0, 0, 1) -shader_parameter/size = Vector2(0.3, 0.3) +shader_parameter/size = Vector2(0.42, 0.32) shader_parameter/border_size = 0.001 shader_parameter/border_fade_in = 0.005 shader_parameter/border_fade_out = 0.0 @@ -33,7 +30,24 @@ shader_parameter/roughness = 0.3 shader_parameter/grain_amount = 0.02 [sub_resource type="QuadMesh" id="QuadMesh_4bh1v"] -size = Vector2(0.3, 0.3) +size = Vector2(0.42, 0.32) + +[sub_resource type="ShaderMaterial" id="ShaderMaterial_mhqg4"] +render_priority = -1 +shader = ExtResource("3_htaoi") +shader_parameter/color = Color(1, 1, 1, 0.3) +shader_parameter/border_color = Color(1, 1, 1, 1) +shader_parameter/edge_color = Color(0, 0, 0, 1) +shader_parameter/size = Vector2(0.07, 0.32) +shader_parameter/border_size = 0.001 +shader_parameter/border_fade_in = 0.005 +shader_parameter/border_fade_out = 0.0 +shader_parameter/corner_radius = 0.02 +shader_parameter/roughness = 0.3 +shader_parameter/grain_amount = 0.02 + +[sub_resource type="QuadMesh" id="QuadMesh_7q1en"] +size = Vector2(0.07, 0.32) [sub_resource type="Animation" id="Animation_61md4"] length = 0.001 @@ -178,71 +192,81 @@ collision_mask = 2 script = ExtResource("1_ng4u3") [node name="CollisionShape3D" type="CollisionShape3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.02, -0.00286309, 1.49012e-08) +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.03, 0, 0) shape = SubResource("BoxShape3D_e1esh") [node name="Movable" type="Node" parent="."] script = ExtResource("2_8coxu") [node name="AnimationContainer" type="StaticBody3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.2, 0, -0.15) +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.23, 0.15, 0) collision_layer = 6 collision_mask = 6 [node name="CollisionShape3D" type="CollisionShape3D" parent="AnimationContainer"] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.21, -0.00824219, 0.15) -shape = SubResource("BoxShape3D_6xn1i") +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.2, -0.15, 0) +shape = SubResource("BoxShape3D_e1esh") [node name="Background" type="MeshInstance3D" parent="AnimationContainer"] -transform = Transform3D(1, 0, 0, 0, -4.37114e-08, 1, 0, -1, -4.37114e-08, 0.21, 0.01, 0.15) -material_override = SubResource("ShaderMaterial_mhqg4") +transform = Transform3D(1, 0, 0, 0, 1, 1.06581e-14, 0, -1.06581e-14, 1, 0.23, -0.15, 0) +material_override = SubResource("ShaderMaterial_du6qr") mesh = SubResource("QuadMesh_4bh1v") skeleton = NodePath("../..") +[node name="Background2" type="MeshInstance3D" parent="AnimationContainer"] +transform = Transform3D(1, 0, 0, 0, 1, 1.06581e-14, 0, -1.06581e-14, 1, -0.02, -0.15, 0) +material_override = SubResource("ShaderMaterial_mhqg4") +mesh = SubResource("QuadMesh_7q1en") +skeleton = NodePath("../..") + [node name="Tabs" type="Node3D" parent="AnimationContainer" node_paths=PackedStringArray("initial_selected")] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.06, 0, 0) +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.02, -0.03, 0) script = ExtResource("4_eavfx") initial_selected = NodePath("View") +vertical = true +gap = 0.01 +size = Vector3(0.05, 0.4, 1) [node name="View" parent="AnimationContainer/Tabs" instance=ExtResource("5_w4i01")] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.03, 0, 0.03) label = "visibility" icon = true toggleable = true +disabled = true [node name="Edit" parent="AnimationContainer/Tabs" instance=ExtResource("5_w4i01")] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.03, 0, 0.09) +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.06, 0) label = "widgets" icon = true toggleable = true [node name="Room" parent="AnimationContainer/Tabs" instance=ExtResource("5_w4i01")] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.03, 0, 0.15) +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.12, 0) label = "view_in_ar" icon = true toggleable = true [node name="Automate" parent="AnimationContainer/Tabs" instance=ExtResource("5_w4i01")] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.03, 0, 0.21) +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.18, 0) label = "schema" icon = true toggleable = true [node name="Settings" parent="AnimationContainer/Tabs" instance=ExtResource("5_w4i01")] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.03, 0, 0.27) +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.24, 0) label = "settings" icon = true toggleable = true [node name="TabsContent" type="Node3D" parent="AnimationContainer" node_paths=PackedStringArray("tabs")] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.06, 0, 0) +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.01, 0.00999999, 0) script = ExtResource("6_7rntr") tabs = NodePath("../Tabs") [node name="ViewMenu" parent="AnimationContainer/TabsContent" instance=ExtResource("8_71pkg")] -visible = false +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.01, 0, 0.01) [node name="EditMenu" parent="AnimationContainer/TabsContent" instance=ExtResource("4_r2raj")] +visible = false [node name="RoomMenu" parent="AnimationContainer/TabsContent" instance=ExtResource("10_u4i1x")] visible = false @@ -254,11 +278,11 @@ visible = false visible = false [node name="NotifyPlace" type="Marker3D" parent="AnimationContainer"] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.2, 0, -0.05) +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.2, 0.06, 0) gizmo_extents = 0.02 [node name="KeyboardPlace" type="Marker3D" parent="AnimationContainer"] -transform = Transform3D(0.5, 0, 0, 0, 0.353553, 0.353553, 0, -0.353553, 0.353553, 0.2, 0.130848, 0.45) +transform = Transform3D(0.5, 0, 0, 0, 0.353553, 0.353553, 0, -0.353553, 0.353553, 0.2, -0.38, 0.16) gizmo_extents = 0.02 [node name="ImmersiveHomePanels" type="MeshInstance3D" parent="."] diff --git a/app/content/ui/menu/room/room_menu.tscn b/app/content/ui/menu/room/room_menu.tscn index 81085b2..50a15ae 100644 --- a/app/content/ui/menu/room/room_menu.tscn +++ b/app/content/ui/menu/room/room_menu.tscn @@ -26,11 +26,10 @@ script = ExtResource("5_ddrep") initial_selected = NodePath("Overview") [node name="Overview" parent="Interface/Tabs3D" instance=ExtResource("4_cghmp")] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.03, 0, 0.02) label = "Overview" [node name="Rooms" parent="Interface/Tabs3D" instance=ExtResource("4_cghmp")] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.09, 0, 0.02) +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.05, 0, 0) label = "Rooms" [node name="TabsContent3D" type="Node3D" parent="Interface" node_paths=PackedStringArray("tabs")] diff --git a/app/content/ui/menu/view/view_menu.tscn b/app/content/ui/menu/view/view_menu.tscn index 085c2d4..5614dda 100644 --- a/app/content/ui/menu/view/view_menu.tscn +++ b/app/content/ui/menu/view/view_menu.tscn @@ -1,108 +1,123 @@ -[gd_scene load_steps=6 format=3 uid="uid://ddpxthb414unp"] +[gd_scene load_steps=7 format=3 uid="uid://ddpxthb414unp"] [ext_resource type="Script" path="res://content/ui/menu/view/view_menu.gd" id="1_hxajx"] [ext_resource type="PackedScene" uid="uid://bsjqdvkt0u87c" path="res://content/ui/components/button/button.tscn" id="2_qan1b"] -[ext_resource type="Material" uid="uid://bujy3egn1oqac" path="res://assets/materials/pri-500.material" id="2_se6ic"] [ext_resource type="PackedScene" uid="uid://pk5k1q8bx0rj" path="res://content/ui/components/slider/slider.tscn" id="4_d3xhb"] +[ext_resource type="Shader" path="res://assets/materials/glass.gdshader" id="5_cjxo5"] -[sub_resource type="BoxMesh" id="BoxMesh_qr3bi"] -size = Vector3(0.3, 0.01, 0.3) +[sub_resource type="ShaderMaterial" id="ShaderMaterial_e5hvo"] +render_priority = -3 +shader = ExtResource("5_cjxo5") +shader_parameter/color = Color(1, 1, 1, 0.3) +shader_parameter/border_color = Color(1, 1, 1, 1) +shader_parameter/edge_color = Color(0, 0, 0, 1) +shader_parameter/size = Vector2(0.42, 0.32) +shader_parameter/border_size = 0.001 +shader_parameter/border_fade_in = 0.005 +shader_parameter/border_fade_out = 0.0 +shader_parameter/corner_radius = 0.02 +shader_parameter/roughness = 0.3 +shader_parameter/grain_amount = 0.02 + +[sub_resource type="QuadMesh" id="QuadMesh_1j6jf"] +size = Vector2(0.42, 0.32) [node name="ViewMenu" type="Node3D"] script = ExtResource("1_hxajx") -[node name="Background" type="MeshInstance3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.15, 0, 0.15) -material_override = ExtResource("2_se6ic") -mesh = SubResource("BoxMesh_qr3bi") - [node name="Content" type="Node3D" parent="."] [node name="MiniView" parent="Content" instance=ExtResource("2_qan1b")] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.03, 0, 0.03) +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.04, -0.04, 0) label = "view_comfy" icon = true toggleable = true [node name="MiniViewLabel" type="Label3D" parent="Content"] -transform = Transform3D(1, 0, 0, 0, 0, 1, 0, -1, 0, 0.07, 0.01, 0.03) +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.07, -0.04, 0) pixel_size = 0.001 +double_sided = false text = "Mini View" font_size = 18 outline_size = 0 horizontal_alignment = 0 [node name="HeatMap" parent="Content" instance=ExtResource("2_qan1b")] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.03, 0, 0.09) +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.04, -0.1, 0) label = "device_thermostat" icon = true toggleable = true [node name="HeatMapLabel" type="Label3D" parent="Content"] -transform = Transform3D(1, 0, 0, 0, 0, 1, 0, -1, 0, 0.07, 0.01, 0.09) +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.07, -0.1, 0) pixel_size = 0.001 +double_sided = false text = "Heat Map" font_size = 18 outline_size = 0 horizontal_alignment = 0 [node name="HumidityMap" parent="Content" instance=ExtResource("2_qan1b")] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.03, 0, 0.15) +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.04, -0.16, 0) label = "humidity_mid" icon = true toggleable = true [node name="HumidityMapLabel" type="Label3D" parent="Content"] -transform = Transform3D(1, 0, 0, 0, 0, 1, 0, -1, 0, 0.07, 0.01, 0.15) +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.07, -0.16, 0) pixel_size = 0.001 +double_sided = false text = "Humidity Map" font_size = 18 outline_size = 0 horizontal_alignment = 0 [node name="MinSlider" parent="Content" instance=ExtResource("4_d3xhb")] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.06, 0.01, 0.2) +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.09, -0.21, 0) value = 0.0 step = 1.0 -show_label = true -size = Vector3(10, 0.4, 1) [node name="MinValue" type="Label3D" parent="Content"] -transform = Transform3D(1, 0, 0, 0, 0, 1, 0, -1, 0, 0.15, 0.01, 0.2) +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.2, -0.21, 0) pixel_size = 0.001 +double_sided = false text = "Min Value" font_size = 18 outline_size = 0 horizontal_alignment = 0 [node name="MaxSlider" parent="Content" instance=ExtResource("4_d3xhb")] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.06, 0.01, 0.24) +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.09, -0.25, 0) value = 0.0 step = 1.0 -show_label = true -size = Vector3(10, 0.4, 1) [node name="MaxValue" type="Label3D" parent="Content"] -transform = Transform3D(1, 0, 0, 0, 0, 1, 0, -1, 0, 0.15, 0.01, 0.24) +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.2, -0.25, 0) pixel_size = 0.001 +double_sided = false text = "Max Value" font_size = 18 outline_size = 0 horizontal_alignment = 0 [node name="OpacitySlider" parent="Content" instance=ExtResource("4_d3xhb")] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.06, 0.01, 0.28) +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.09, -0.29, 0) max = 100.0 value = 30.0 step = 10.0 -show_label = true label_unit = "%" -size = Vector3(10, 0.4, 1) [node name="OpacityLabel" type="Label3D" parent="Content"] -transform = Transform3D(1, 0, 0, 0, 0, 1, 0, -1, 0, 0.15, 0.01, 0.28) +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.2, -0.29, 0) pixel_size = 0.001 +double_sided = false text = "Opacity" font_size = 18 outline_size = 0 horizontal_alignment = 0 + +[node name="Background" type="MeshInstance3D" parent="."] +transform = Transform3D(1, 0, 0, 0, 1, 1.06581e-14, 0, -1.06581e-14, 1, 0.21, -0.16, 0) +material_override = SubResource("ShaderMaterial_e5hvo") +mesh = SubResource("QuadMesh_1j6jf") +skeleton = NodePath("../..")