fix ui depth, finish ui styling and finally add proper wall occlusion

This commit is contained in:
Nitwel 2024-04-25 00:22:27 +02:00
parent eae0ec377a
commit b2f6b707d2
34 changed files with 465 additions and 305 deletions

View File

@ -31,6 +31,8 @@ static func _bind_store(target, prop, store: RdotStore, key, watch_signal=null):
return _bind_state(target, prop, store._proxied_value[key], watch_signal) return _bind_state(target, prop, store._proxied_value[key], watch_signal)
static func _bind_state(target, prop, value, watch_signal=null): static func _bind_state(target, prop, value, watch_signal=null):
assert(state != null, "target cannot be null")
var graph = RdotGraph.getInstance() var graph = RdotGraph.getInstance()
var watch_c = func(new_value): var watch_c = func(new_value):

View File

@ -1,21 +1,17 @@
[gd_scene load_steps=6 format=3 uid="uid://c2j7nev6qx25s"] [gd_scene load_steps=5 format=3 uid="uid://c2j7nev6qx25s"]
[ext_resource type="Script" path="res://content/entities/button/button.gd" id="1_ja7lt"] [ext_resource type="Script" path="res://content/entities/button/button.gd" id="1_ja7lt"]
[ext_resource type="PackedScene" uid="uid://bsjqdvkt0u87c" path="res://content/ui/components/button/button.tscn" id="1_r4tef"] [ext_resource type="PackedScene" uid="uid://bsjqdvkt0u87c" path="res://content/ui/components/button/button.tscn" id="1_r4tef"]
[ext_resource type="Script" path="res://content/functions/movable.gd" id="3_vrobf"] [ext_resource type="Script" path="res://content/functions/movable.gd" id="3_vrobf"]
[ext_resource type="Script" path="res://content/functions/occludable.gd" id="4_7upxo"]
[sub_resource type="BoxShape3D" id="BoxShape3D_um5pa"] [sub_resource type="BoxShape3D" id="BoxShape3D_um5pa"]
size = Vector3(0.0700684, 0.011734, 0.0703125) size = Vector3(0.07, 0.07, 0.012)
[node name="Button" type="StaticBody3D"] [node name="Button" type="StaticBody3D"]
script = ExtResource("1_ja7lt") script = ExtResource("1_ja7lt")
[node name="Button" parent="." instance=ExtResource("1_r4tef")] [node name="Button" parent="." instance=ExtResource("1_r4tef")]
[node name="Occludable" type="Node" parent="."]
script = ExtResource("4_7upxo")
[node name="Movable" type="Node" parent="."] [node name="Movable" type="Node" parent="."]
script = ExtResource("3_vrobf") script = ExtResource("3_vrobf")

View File

@ -1,8 +1,7 @@
[gd_scene load_steps=6 format=3 uid="uid://b0nq4wjfckxsa"] [gd_scene load_steps=5 format=3 uid="uid://b0nq4wjfckxsa"]
[ext_resource type="Script" path="res://content/entities/camera/camera.gd" id="1_htxq3"] [ext_resource type="Script" path="res://content/entities/camera/camera.gd" id="1_htxq3"]
[ext_resource type="Script" path="res://content/functions/movable.gd" id="2_e2u6o"] [ext_resource type="Script" path="res://content/functions/movable.gd" id="2_e2u6o"]
[ext_resource type="Script" path="res://content/functions/occludable.gd" id="3_jheyx"]
[sub_resource type="QuadMesh" id="QuadMesh_830bv"] [sub_resource type="QuadMesh" id="QuadMesh_830bv"]
size = Vector2(0.15, 0.15) size = Vector2(0.15, 0.15)
@ -10,7 +9,7 @@ size = Vector2(0.15, 0.15)
[sub_resource type="BoxShape3D" id="BoxShape3D_te0pn"] [sub_resource type="BoxShape3D" id="BoxShape3D_te0pn"]
size = Vector3(0.15, 0.15, 0.01) size = Vector3(0.15, 0.15, 0.01)
[node name="Camera" type="StaticBody3D" ] [node name="Camera" type="StaticBody3D"]
script = ExtResource("1_htxq3") script = ExtResource("1_htxq3")
[node name="View" type="Sprite3D" parent="."] [node name="View" type="Sprite3D" parent="."]
@ -26,6 +25,3 @@ shape = SubResource("BoxShape3D_te0pn")
[node name="Movable" type="Node" parent="."] [node name="Movable" type="Node" parent="."]
script = ExtResource("2_e2u6o") script = ExtResource("2_e2u6o")
[node name="Occludable" type="Node" parent="."]
script = ExtResource("3_jheyx")

View File

@ -1,9 +1,8 @@
[gd_scene load_steps=15 format=3 uid="uid://cw86rc42dv2d8"] [gd_scene load_steps=14 format=3 uid="uid://cw86rc42dv2d8"]
[ext_resource type="Script" path="res://content/entities/light/light.gd" id="1_ykxy3"] [ext_resource type="Script" path="res://content/entities/light/light.gd" id="1_ykxy3"]
[ext_resource type="Script" path="res://content/functions/movable.gd" id="4_4sfxb"] [ext_resource type="Script" path="res://content/functions/movable.gd" id="4_4sfxb"]
[ext_resource type="Material" uid="uid://vce66e7sbc3n" path="res://content/entities/light/light_on.tres" id="5_50gph"] [ext_resource type="Material" uid="uid://vce66e7sbc3n" path="res://content/entities/light/light_on.tres" id="5_50gph"]
[ext_resource type="Script" path="res://content/functions/occludable.gd" id="5_oh4jg"]
[ext_resource type="PackedScene" uid="uid://pk5k1q8bx0rj" path="res://content/ui/components/slider/slider.tscn" id="6_mhjlm"] [ext_resource type="PackedScene" uid="uid://pk5k1q8bx0rj" path="res://content/ui/components/slider/slider.tscn" id="6_mhjlm"]
[ext_resource type="Texture2D" uid="uid://hy2f6is7qjyv" path="res://assets/canvas.png" id="7_ximu1"] [ext_resource type="Texture2D" uid="uid://hy2f6is7qjyv" path="res://assets/canvas.png" id="7_ximu1"]
[ext_resource type="Script" path="res://content/functions/clickable.gd" id="8_1sfll"] [ext_resource type="Script" path="res://content/functions/clickable.gd" id="8_1sfll"]
@ -37,9 +36,6 @@ script = ExtResource("1_ykxy3")
[node name="CollisionShape3D" type="CollisionShape3D" parent="."] [node name="CollisionShape3D" type="CollisionShape3D" parent="."]
shape = SubResource("SphereShape3D_ukj14") shape = SubResource("SphereShape3D_ukj14")
[node name="Occludable" type="Node" parent="."]
script = ExtResource("5_oh4jg")
[node name="Movable" type="Node" parent="."] [node name="Movable" type="Node" parent="."]
script = ExtResource("4_4sfxb") script = ExtResource("4_4sfxb")
@ -59,11 +55,10 @@ height = 0.03
sides = 36 sides = 36
[node name="Slider" parent="." instance=ExtResource("6_mhjlm")] [node name="Slider" parent="." instance=ExtResource("6_mhjlm")]
transform = Transform3D(1.91069e-15, 4.37114e-08, 1, 1, -4.37114e-08, 0, 4.37114e-08, 1, -4.37114e-08, 0.08, 0, 0) transform = Transform3D(-4.37114e-08, -1, 0, 1, -4.37114e-08, 0, 0, 0, 1, 0.08, 0, 0)
max = 100.0 max = 100.0
value = 100.0 value = 100.0
step = 1.0 step = 1.0
size = Vector3(10, 0.4, 1)
[node name="ColorWheel" type="StaticBody3D" parent="."] [node name="ColorWheel" type="StaticBody3D" parent="."]
transform = Transform3D(1, 0, 0, 0, -4.37114e-08, -1, 0, 1, -4.37114e-08, -0.15, 0, 0) transform = Transform3D(1, 0, 0, 0, -4.37114e-08, -1, 0, 1, -4.37114e-08, -0.15, 0, 0)
@ -95,12 +90,12 @@ mesh = SubResource("CylinderMesh_x68ys")
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.11, 0) transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.11, 0)
[node name="Next" parent="Modes" instance=ExtResource("8_nhcff")] [node name="Next" parent="Modes" instance=ExtResource("8_nhcff")]
transform = Transform3D(1, 0, 0, 0, -4.37114e-08, -1, 0, 1, -4.37114e-08, -0.04, 0, 0) transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.04, 0, 0)
label = "navigate_next" label = "navigate_next"
icon = true icon = true
[node name="Previous" parent="Modes" instance=ExtResource("8_nhcff")] [node name="Previous" parent="Modes" instance=ExtResource("8_nhcff")]
transform = Transform3D(1, 0, 0, 0, 2.98023e-08, -1, 0, 1, 2.98023e-08, -0.1, 0, 0) transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.1, 0, 0)
label = "navigate_before" label = "navigate_before"
icon = true icon = true

View File

@ -1,16 +1,15 @@
[gd_scene load_steps=8 format=3 uid="uid://dyktdg7ggiwl4"] [gd_scene load_steps=7 format=3 uid="uid://dyktdg7ggiwl4"]
[ext_resource type="PackedScene" uid="uid://bsjqdvkt0u87c" path="res://content/ui/components/button/button.tscn" id="1_8opk3"] [ext_resource type="PackedScene" uid="uid://bsjqdvkt0u87c" path="res://content/ui/components/button/button.tscn" id="1_8opk3"]
[ext_resource type="Script" path="res://content/entities/media_player/media_player.gd" id="1_ame17"] [ext_resource type="Script" path="res://content/entities/media_player/media_player.gd" id="1_ame17"]
[ext_resource type="Script" path="res://content/functions/movable.gd" id="3_bguto"] [ext_resource type="Script" path="res://content/functions/movable.gd" id="3_bguto"]
[ext_resource type="Script" path="res://content/functions/occludable.gd" id="4_fnfum"]
[ext_resource type="PackedScene" uid="uid://pk5k1q8bx0rj" path="res://content/ui/components/slider/slider.tscn" id="4_w73hw"] [ext_resource type="PackedScene" uid="uid://pk5k1q8bx0rj" path="res://content/ui/components/slider/slider.tscn" id="4_w73hw"]
[ext_resource type="FontVariation" uid="uid://sshfnckriqxn" path="res://assets/icons/icons.tres" id="5_koe28"] [ext_resource type="FontVariation" uid="uid://sshfnckriqxn" path="res://assets/icons/icons.tres" id="5_koe28"]
[sub_resource type="BoxShape3D" id="BoxShape3D_vi3eg"] [sub_resource type="BoxShape3D" id="BoxShape3D_vi3eg"]
size = Vector3(0.23, 0.142768, 0.01) size = Vector3(0.23, 0.142768, 0.01)
[node name="MediaPlayer" type="StaticBody3D" ] [node name="MediaPlayer" type="StaticBody3D"]
collision_mask = 0 collision_mask = 0
script = ExtResource("1_ame17") script = ExtResource("1_ame17")
@ -19,17 +18,17 @@ transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.0364514, -0.01)
shape = SubResource("BoxShape3D_vi3eg") shape = SubResource("BoxShape3D_vi3eg")
[node name="Previous" parent="." instance=ExtResource("1_8opk3")] [node name="Previous" parent="." instance=ExtResource("1_8opk3")]
transform = Transform3D(1, 0, 0, 0, -4.37114e-08, -1, 0, 1, -4.37114e-08, -0.07, 0, 0) transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.07, 0, 0)
label = "skip_previous" label = "skip_previous"
icon = true icon = true
[node name="Play" parent="." instance=ExtResource("1_8opk3")] [node name="Play" parent="." instance=ExtResource("1_8opk3")]
transform = Transform3D(1, 0, 0, 0, -4.37114e-08, -1, 0, 1, -4.37114e-08, -4.65661e-08, 0, 0) transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -4.65661e-08, 0, 0)
label = "pause" label = "pause"
icon = true icon = true
[node name="Next" parent="." instance=ExtResource("1_8opk3")] [node name="Next" parent="." instance=ExtResource("1_8opk3")]
transform = Transform3D(1, 0, 0, 0, -4.37114e-08, -1, 0, 1, -4.37114e-08, 0.07, 0, 0) transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.07, 0, 0)
label = "skip_next" label = "skip_next"
icon = true icon = true
@ -60,20 +59,15 @@ pixel_size = 0.001
[node name="Movable" type="Node" parent="."] [node name="Movable" type="Node" parent="."]
script = ExtResource("3_bguto") script = ExtResource("3_bguto")
[node name="Occludable" type="Node" parent="."]
script = ExtResource("4_fnfum")
[node name="Slider" parent="." instance=ExtResource("4_w73hw")] [node name="Slider" parent="." instance=ExtResource("4_w73hw")]
transform = Transform3D(1, 0, 0, 0, -4.37114e-08, -1, 0, 1, -4.37114e-08, 0, -0.0562844, 0) transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.0562844, 0)
max = 100.0 max = 100.0
value = 30.0 value = 30.0
step = 1.0 step = 1.0
show_label = true
label_unit = "%" label_unit = "%"
size = Vector3(15, 0.4, 1)
[node name="Label3D" type="Label3D" parent="Slider"] [node name="Label3D" type="Label3D" parent="Slider"]
transform = Transform3D(1, 0, 0, 0, -4.37114e-08, 1, 0, -1, -4.37114e-08, -0.088399, 0, 0) transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.088399, 0, 0.01)
pixel_size = 0.001 pixel_size = 0.001
text = "volume_up" text = "volume_up"
font = ExtResource("5_koe28") font = ExtResource("5_koe28")

View File

@ -1,20 +1,18 @@
[gd_scene load_steps=6 format=3 uid="uid://bbwedgq63bj84"] [gd_scene load_steps=5 format=3 uid="uid://bbwedgq63bj84"]
[ext_resource type="Script" path="res://content/entities/number/number.gd" id="1_26xwp"] [ext_resource type="Script" path="res://content/entities/number/number.gd" id="1_26xwp"]
[ext_resource type="PackedScene" uid="uid://pk5k1q8bx0rj" path="res://content/ui/components/slider/slider.tscn" id="2_sninv"] [ext_resource type="PackedScene" uid="uid://pk5k1q8bx0rj" path="res://content/ui/components/slider/slider.tscn" id="2_sninv"]
[ext_resource type="Script" path="res://content/functions/movable.gd" id="3_x8wda"] [ext_resource type="Script" path="res://content/functions/movable.gd" id="3_x8wda"]
[ext_resource type="Script" path="res://content/functions/occludable.gd" id="4_3xwop"]
[sub_resource type="BoxShape3D" id="BoxShape3D_7mk8w"] [sub_resource type="BoxShape3D" id="BoxShape3D_7mk8w"]
size = Vector3(0.0390625, 0.114258, 0.0142822) size = Vector3(0.0390625, 0.150391, 0.0142822)
[node name="Number" type="StaticBody3D" ] [node name="Number" type="StaticBody3D"]
script = ExtResource("1_26xwp") script = ExtResource("1_26xwp")
[node name="Slider" parent="." instance=ExtResource("2_sninv")] [node name="Slider" parent="." instance=ExtResource("2_sninv")]
transform = Transform3D(8.74228e-08, 4.37114e-08, 1, 1, 4.37114e-08, -8.74228e-08, -4.37114e-08, 1, -4.37114e-08, 0, 0, 0) transform = Transform3D(-4.37114e-08, -1, 0, 1, -4.37114e-08, 0, 0, 0, 1, 0, 0, 0)
value = 0.0 value = 0.0
size = Vector3(20, 0.8, 2)
[node name="CollisionShape3D" type="CollisionShape3D" parent="."] [node name="CollisionShape3D" type="CollisionShape3D" parent="."]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, -0.00762939) transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, -0.00762939)
@ -22,6 +20,3 @@ shape = SubResource("BoxShape3D_7mk8w")
[node name="Movable" type="Node" parent="."] [node name="Movable" type="Node" parent="."]
script = ExtResource("3_x8wda") script = ExtResource("3_x8wda")
[node name="Occludable" type="Node" parent="."]
script = ExtResource("4_3xwop")

View File

@ -1,16 +1,15 @@
[gd_scene load_steps=7 format=3 uid="uid://xsiy71rsqulj"] [gd_scene load_steps=6 format=3 uid="uid://xsiy71rsqulj"]
[ext_resource type="Script" path="res://content/entities/sensor/sensor.gd" id="1_57ac8"] [ext_resource type="Script" path="res://content/entities/sensor/sensor.gd" id="1_57ac8"]
[ext_resource type="FontVariation" uid="uid://d2ofyimg5s65q" path="res://assets/fonts/ui_font_500.tres" id="2_4np3x"] [ext_resource type="FontVariation" uid="uid://d2ofyimg5s65q" path="res://assets/fonts/ui_font_500.tres" id="2_4np3x"]
[ext_resource type="Script" path="res://content/functions/movable.gd" id="2_fpq5q"] [ext_resource type="Script" path="res://content/functions/movable.gd" id="2_fpq5q"]
[ext_resource type="Script" path="res://content/functions/occludable.gd" id="3_l3sp5"]
[ext_resource type="PackedScene" uid="uid://bsjqdvkt0u87c" path="res://content/ui/components/button/button.tscn" id="5_bmtkc"] [ext_resource type="PackedScene" uid="uid://bsjqdvkt0u87c" path="res://content/ui/components/button/button.tscn" id="5_bmtkc"]
[sub_resource type="BoxShape3D" id="BoxShape3D_phuot"] [sub_resource type="BoxShape3D" id="BoxShape3D_phuot"]
resource_local_to_scene = true resource_local_to_scene = true
size = Vector3(0.18, 0.03, 0.02) size = Vector3(0.18, 0.03, 0.02)
[node name="Sensor" type="StaticBody3D" ] [node name="Sensor" type="StaticBody3D"]
collision_mask = 0 collision_mask = 0
script = ExtResource("1_57ac8") script = ExtResource("1_57ac8")
@ -28,11 +27,8 @@ font_size = 80
[node name="Movable" type="Node" parent="."] [node name="Movable" type="Node" parent="."]
script = ExtResource("2_fpq5q") script = ExtResource("2_fpq5q")
[node name="Occludable" type="Node" parent="."]
script = ExtResource("3_l3sp5")
[node name="Button" parent="." instance=ExtResource("5_bmtkc")] [node name="Button" parent="." instance=ExtResource("5_bmtkc")]
transform = Transform3D(1, 0, 0, 0, -4.37114e-08, -1, 0, 1, -4.37114e-08, 0, -0.1, 0) transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.1, 0)
label = "add_chart" label = "add_chart"
icon = true icon = true

View File

@ -1,10 +1,9 @@
[gd_scene load_steps=8 format=3 uid="uid://cscl5k7lhopj5"] [gd_scene load_steps=7 format=3 uid="uid://cscl5k7lhopj5"]
[ext_resource type="Script" path="res://content/entities/switch/switch.gd" id="1_8ffhi"] [ext_resource type="Script" path="res://content/entities/switch/switch.gd" id="1_8ffhi"]
[ext_resource type="Texture2D" uid="uid://br3p0c2foputg" path="res://assets/materials/swich_on.png" id="1_w68gw"] [ext_resource type="Texture2D" uid="uid://br3p0c2foputg" path="res://assets/materials/swich_on.png" id="1_w68gw"]
[ext_resource type="Texture2D" uid="uid://co2ishj2hx57p" path="res://assets/materials/switch_off.png" id="2_86ba1"] [ext_resource type="Texture2D" uid="uid://co2ishj2hx57p" path="res://assets/materials/switch_off.png" id="2_86ba1"]
[ext_resource type="Script" path="res://content/functions/movable.gd" id="4_6xr03"] [ext_resource type="Script" path="res://content/functions/movable.gd" id="4_6xr03"]
[ext_resource type="Script" path="res://content/functions/occludable.gd" id="5_j5ucu"]
[sub_resource type="SphereShape3D" id="SphereShape3D_ukj14"] [sub_resource type="SphereShape3D" id="SphereShape3D_ukj14"]
radius = 0.0482081 radius = 0.0482081
@ -37,6 +36,3 @@ sprite_frames = SubResource("SpriteFrames_ldpuo")
[node name="Movable" type="Node" parent="."] [node name="Movable" type="Node" parent="."]
script = ExtResource("4_6xr03") script = ExtResource("4_6xr03")
[node name="Occludable" type="Node" parent="."]
script = ExtResource("5_j5ucu")

View File

@ -1,4 +1,4 @@
[gd_scene load_steps=17 format=3 uid="uid://eecv28y6jxk4"] [gd_scene load_steps=18 format=3 uid="uid://eecv28y6jxk4"]
[ext_resource type="PackedScene" uid="uid://clc5dre31iskm" path="res://addons/godot-xr-tools/xr/start_xr.tscn" id="1_i4c04"] [ext_resource type="PackedScene" uid="uid://clc5dre31iskm" path="res://addons/godot-xr-tools/xr/start_xr.tscn" id="1_i4c04"]
[ext_resource type="Script" path="res://content/main.gd" id="1_uvrd4"] [ext_resource type="Script" path="res://content/main.gd" id="1_uvrd4"]
@ -35,6 +35,8 @@ ao_enabled = true
material = SubResource("StandardMaterial3D_m58yb") material = SubResource("StandardMaterial3D_m58yb")
size = Vector3(0.01, 0.01, 0.01) size = Vector3(0.01, 0.01, 0.01)
[sub_resource type="CylinderMesh" id="CylinderMesh_72c80"]
[node name="Main" type="Node3D"] [node name="Main" type="Node3D"]
transform = Transform3D(1, -0.000296142, 0.000270963, 0.000296143, 1, -4.5899e-06, -0.000270962, 4.67014e-06, 1, 0, 0, 0) transform = Transform3D(1, -0.000296142, 0.000270963, 0.000296143, 1, -4.5899e-06, -0.000270962, 4.67014e-06, 1, 0, 0, 0)
script = ExtResource("1_uvrd4") script = ExtResource("1_uvrd4")
@ -88,4 +90,8 @@ transform = Transform3D(0.5, 5.24309e-05, 0.000144384, -0.000139169, 0.353553, 0
[node name="Onboarding" parent="." instance=ExtResource("12_uq2nj")] [node name="Onboarding" parent="." instance=ExtResource("12_uq2nj")]
transform = Transform3D(1, -9.48098e-12, 0, 9.48098e-12, 1, 0, 0, 0, 1, -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)
[node name="MeshInstance3D2" type="MeshInstance3D" parent="."]
transform = Transform3D(1, -1.39635e-11, 0, 1.02449e-10, 1, 0, 0, 0, 1, 0.327865, -9.50548e-05, 0.44448)
mesh = SubResource("CylinderMesh_72c80")
[editable path="XROrigin3D/XRControllerLeft"] [editable path="XROrigin3D/XRControllerLeft"]

View File

@ -51,7 +51,7 @@ transform = Transform3D(1, -7.45058e-09, -2.22045e-16, 7.45058e-09, 1, 0, 0, 0,
shape = SubResource("CapsuleShape3D_dopke") shape = SubResource("CapsuleShape3D_dopke")
[node name="ThumbTip" type="BoneAttachment3D" parent="XRHandLeft"] [node name="ThumbTip" type="BoneAttachment3D" parent="XRHandLeft"]
transform = Transform3D(0.937246, 0.0284254, -0.347508, 0.0184905, 0.991216, 0.130949, 0.348178, -0.129157, 0.928487, 0.0498668, 0.0560917, -0.112777) transform = Transform3D(0.937246, 0.0284254, -0.347508, 0.0184905, 0.991216, 0.130949, 0.348178, -0.129157, 0.928488, 0.0498668, 0.0560917, -0.112777)
bone_name = "Thumb_Tip_L" bone_name = "Thumb_Tip_L"
bone_idx = 4 bone_idx = 4
use_external_skeleton = true use_external_skeleton = true
@ -61,7 +61,7 @@ external_skeleton = NodePath("../left_hand/Armature_001/Skeleton3D")
gizmo_extents = 0.02 gizmo_extents = 0.02
[node name="MiddleTip" type="BoneAttachment3D" parent="XRHandLeft"] [node name="MiddleTip" type="BoneAttachment3D" parent="XRHandLeft"]
transform = Transform3D(0.0812012, -0.650531, -0.755125, 0.996576, 0.064817, 0.051326, 0.0155558, -0.756708, 0.653567, 0.032112, 0.00654224, -0.171612) transform = Transform3D(0.0812012, -0.650531, -0.755125, 0.996577, 0.064817, 0.051326, 0.0155558, -0.756708, 0.653568, 0.032112, 0.00654224, -0.171612)
bone_name = "Middle_Tip_L" bone_name = "Middle_Tip_L"
bone_idx = 14 bone_idx = 14
use_external_skeleton = true use_external_skeleton = true
@ -112,7 +112,7 @@ transform = Transform3D(1, 0, 4.7579e-13, 0, 1, 0, -1.34149e-12, 1.77636e-15, 1,
material_override = SubResource("StandardMaterial3D_n27ki") material_override = SubResource("StandardMaterial3D_n27ki")
[node name="IndexTip" type="BoneAttachment3D" parent="XRHandRight"] [node name="IndexTip" type="BoneAttachment3D" parent="XRHandRight"]
transform = Transform3D(0.19221, 0.669966, 0.717078, -0.091543, -0.715277, 0.69282, 0.977075, -0.19881, -0.0761527, -0.0345978, -0.164767, -0.0355401) transform = Transform3D(0.19221, 0.669966, 0.717079, -0.091543, -0.715277, 0.69282, 0.977075, -0.19881, -0.0761527, -0.0345977, -0.164767, -0.0355401)
bone_name = "Index_Tip_R" bone_name = "Index_Tip_R"
bone_idx = 9 bone_idx = 9
use_external_skeleton = true use_external_skeleton = true
@ -142,7 +142,7 @@ external_skeleton = NodePath("../right_hand/Armature/Skeleton3D")
gizmo_extents = 0.02 gizmo_extents = 0.02
[node name="MiddleTip" type="BoneAttachment3D" parent="XRHandRight"] [node name="MiddleTip" type="BoneAttachment3D" parent="XRHandRight"]
transform = Transform3D(0.0812011, 0.650531, 0.755126, -0.0155557, -0.756708, 0.653568, 0.996576, -0.0648169, -0.0513262, -0.032112, -0.171612, -0.00654216) transform = Transform3D(0.0812011, 0.650531, 0.755126, -0.0155557, -0.756709, 0.653568, 0.996576, -0.0648169, -0.0513262, -0.032112, -0.171612, -0.00654216)
bone_name = "Middle_Tip_R" bone_name = "Middle_Tip_R"
bone_idx = 14 bone_idx = 14
use_external_skeleton = true use_external_skeleton = true

View File

@ -1,7 +1,8 @@
[gd_scene load_steps=8 format=3 uid="uid://bswgmclohuqui"] [gd_scene load_steps=9 format=3 uid="uid://bswgmclohuqui"]
[ext_resource type="Script" path="res://content/system/house/room/room.gd" id="1_fccq0"] [ext_resource type="Script" path="res://content/system/house/room/room.gd" id="1_fccq0"]
[ext_resource type="Script" path="res://content/functions/clickable.gd" id="1_ugebq"] [ext_resource type="Script" path="res://content/functions/clickable.gd" id="1_ugebq"]
[ext_resource type="Material" uid="uid://bbx6fv7jq50tr" path="res://content/system/house/room/wall.tres" id="3_w4vos"]
[ext_resource type="Script" path="res://lib/utils/state_machine/state_machine.gd" id="4_nbbo6"] [ext_resource type="Script" path="res://lib/utils/state_machine/state_machine.gd" id="4_nbbo6"]
[ext_resource type="Script" path="res://content/system/house/room/states/view.gd" id="6_g066t"] [ext_resource type="Script" path="res://content/system/house/room/states/view.gd" id="6_g066t"]
[ext_resource type="Script" path="res://content/system/house/room/states/edit.gd" id="7_ap14h"] [ext_resource type="Script" path="res://content/system/house/room/states/edit.gd" id="7_ap14h"]
@ -25,8 +26,10 @@ shape = SubResource("WorldBoundaryShape3D_08sv0")
script = ExtResource("1_ugebq") script = ExtResource("1_ugebq")
[node name="WallMesh" type="MeshInstance3D" parent="."] [node name="WallMesh" type="MeshInstance3D" parent="."]
material_override = ExtResource("3_w4vos")
[node name="CeilingMesh" type="MeshInstance3D" parent="."] [node name="CeilingMesh" type="MeshInstance3D" parent="."]
material_override = ExtResource("3_w4vos")
[node name="WallCollision" type="StaticBody3D" parent="."] [node name="WallCollision" type="StaticBody3D" parent="."]
collision_layer = 24 collision_layer = 24

View File

@ -8,9 +8,6 @@ func _on_enter():
if room_store == null||room_store.corners.size() < 3: if room_store == null||room_store.corners.size() < 3:
return return
room.wall_mesh.visible = false
room.ceiling_mesh.visible = false
room.wall_mesh.mesh = Room.generate_wall_mesh(room_store) room.wall_mesh.mesh = Room.generate_wall_mesh(room_store)
if room.wall_mesh.mesh == null: if room.wall_mesh.mesh == null:
@ -38,3 +35,5 @@ func _on_leave():
room.room_floor.get_node("CollisionShape3D").disabled = true room.room_floor.get_node("CollisionShape3D").disabled = true
room.wall_collision.shape = null room.wall_collision.shape = null
room.wall_mesh.mesh = null
room.ceiling_mesh.mesh = null

View File

@ -1,6 +1,8 @@
[gd_resource type="StandardMaterial3D" format=3 uid="uid://bbx6fv7jq50tr"] [gd_resource type="StandardMaterial3D" format=3 uid="uid://bbx6fv7jq50tr"]
[resource] [resource]
transparency = 1 render_priority = -100
blend_mode = 2
cull_mode = 2 cull_mode = 2
albedo_color = Color(1, 1, 1, 0) depth_draw_mode = 1
shading_mode = 0

View File

@ -71,6 +71,7 @@ func create_key(key: Key):
var key_node = button_scene.instantiate() var key_node = button_scene.instantiate()
key_node.label = EventKey.key_to_string(key, caps) key_node.label = EventKey.key_to_string(key, caps)
key_node.size = Vector3(0.05, 0.05, 0.01)
key_node.focusable = false key_node.focusable = false
key_node.font_size = 32 key_node.font_size = 32
key_node.echo = true key_node.echo = true

View File

@ -11,7 +11,7 @@
size = Vector3(0.86, 0.27, 0.02) size = Vector3(0.86, 0.27, 0.02)
[sub_resource type="ShaderMaterial" id="ShaderMaterial_x72nd"] [sub_resource type="ShaderMaterial" id="ShaderMaterial_x72nd"]
render_priority = -1 render_priority = 19
shader = ExtResource("5_0dbg6") shader = ExtResource("5_0dbg6")
shader_parameter/color = Color(1, 1, 1, 0.3) shader_parameter/color = Color(1, 1, 1, 0.3)
shader_parameter/border_color = Color(1, 1, 1, 1) shader_parameter/border_color = Color(1, 1, 1, 1)
@ -39,6 +39,7 @@ focusable = false
label = "backspace" label = "backspace"
icon = true icon = true
echo = true echo = true
size = Vector3(0.05, 0.05, 0.01)
metadata/key = 4194308 metadata/key = 4194308
[node name="Caps" parent="." instance=ExtResource("1_xdpwr")] [node name="Caps" parent="." instance=ExtResource("1_xdpwr")]
@ -47,12 +48,14 @@ focusable = false
label = "keyboard_capslock" label = "keyboard_capslock"
icon = true icon = true
toggleable = true toggleable = true
size = Vector3(0.05, 0.05, 0.01)
[node name="Paste" parent="." instance=ExtResource("1_xdpwr")] [node name="Paste" parent="." instance=ExtResource("1_xdpwr")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.38, -0.09, 0) transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.38, -0.09, 0)
focusable = false focusable = false
label = "assignment" label = "assignment"
icon = true icon = true
size = Vector3(0.05, 0.05, 0.01)
[node name="Keys" type="Node3D" parent="."] [node name="Keys" type="Node3D" parent="."]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.325, 0.09, 0) transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.325, 0.09, 0)

View File

@ -5,20 +5,20 @@
[sub_resource type="QuadMesh" id="QuadMesh_bt05p"] [sub_resource type="QuadMesh" id="QuadMesh_bt05p"]
resource_local_to_scene = true resource_local_to_scene = true
size = Vector2(0.05, 0.05) size = Vector2(0.04, 0.04)
[sub_resource type="BoxShape3D" id="BoxShape3D_xwopm"] [sub_resource type="BoxShape3D" id="BoxShape3D_xwopm"]
resource_local_to_scene = true resource_local_to_scene = true
size = Vector3(0.05, 0.05, 0.01) size = Vector3(0.04, 0.04, 0.01)
[sub_resource type="BoxShape3D" id="BoxShape3D_bqjii"] [sub_resource type="BoxShape3D" id="BoxShape3D_bqjii"]
resource_local_to_scene = true resource_local_to_scene = true
size = Vector3(0.05, 0.05, 0.03) size = Vector3(0.04, 0.04, 0.03)
[node name="Button" type="Node3D" groups=["ui_focus"]] [node name="Button" type="Node3D" groups=["ui_focus"]]
script = ExtResource("1_74x7g") script = ExtResource("1_74x7g")
label = "Example Text" label = "Example Text"
size = Vector3(0.05, 0.05, 0.01) size = Vector3(0.04, 0.04, 0.01)
[node name="Body" type="StaticBody3D" parent="." groups=["ui_focus_skip"]] [node name="Body" type="StaticBody3D" parent="." groups=["ui_focus_skip"]]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0.005) transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0.005)
@ -38,11 +38,12 @@ shape = SubResource("BoxShape3D_xwopm")
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0.006) transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0.006)
pixel_size = 0.001 pixel_size = 0.001
double_sided = false double_sided = false
render_priority = 30
text = "Example Text" text = "Example Text"
font_size = 10 font_size = 10
outline_size = 0 outline_size = 0
autowrap_mode = 3 autowrap_mode = 3
width = 50.0 width = 40.0
[node name="FingerArea" type="Area3D" parent="."] [node name="FingerArea" type="Area3D" parent="."]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, -0.015) transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, -0.015)

View File

@ -5,7 +5,8 @@
[ext_resource type="Shader" path="res://assets/materials/glass.gdshader" id="3_nl02b"] [ext_resource type="Shader" path="res://assets/materials/glass.gdshader" id="3_nl02b"]
[sub_resource type="ShaderMaterial" id="ShaderMaterial_c5qdm"] [sub_resource type="ShaderMaterial" id="ShaderMaterial_c5qdm"]
render_priority = -1 resource_local_to_scene = true
render_priority = 20
shader = ExtResource("3_nl02b") shader = ExtResource("3_nl02b")
shader_parameter/color = Color(1, 1, 1, 0.3) shader_parameter/color = Color(1, 1, 1, 0.3)
shader_parameter/border_color = Color(1, 1, 1, 1) shader_parameter/border_color = Color(1, 1, 1, 1)
@ -19,6 +20,7 @@ shader_parameter/roughness = 0.3
shader_parameter/grain_amount = 0.02 shader_parameter/grain_amount = 0.02
[sub_resource type="QuadMesh" id="QuadMesh_5rrua"] [sub_resource type="QuadMesh" id="QuadMesh_5rrua"]
resource_local_to_scene = true
size = Vector2(0.15, 0.03) size = Vector2(0.15, 0.03)
[sub_resource type="BoxShape3D" id="BoxShape3D_x4yp8"] [sub_resource type="BoxShape3D" id="BoxShape3D_x4yp8"]
@ -88,10 +90,10 @@ shape = SubResource("BoxShape3D_x4yp8")
[node name="Label" type="Label3D" parent="Body"] [node name="Label" type="Label3D" parent="Body"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.073, 0, 0.005) transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.073, 0, 0.005)
sorting_offset = 0.1
pixel_size = 0.001 pixel_size = 0.001
double_sided = false double_sided = false
alpha_cut = 2 render_priority = 30
outline_render_priority = 29
text = "Example Text" text = "Example Text"
font = ExtResource("3_ij5fh") font = ExtResource("3_ij5fh")
font_size = 18 font_size = 18

View File

@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1 version https://git-lfs.github.com/spec/v1
oid sha256:6a4d9b6aba4df0f124a285b82d6adc8b0682751d95ee946da6478ebcc3cfbd5f oid sha256:dbcd34e34bfbe649b5ee3b0c2df93869b18124ec89499cc54f9c5c287f83d0cc
size 449 size 465

View File

@ -1,5 +1,8 @@
@tool @tool
extends FlexContainer3D extends FlexContainer3D
class_name Pagination3D
signal on_page_changed(page: int)
const ButtonScene = preload ("res://content/ui/components/button/button.tscn") const ButtonScene = preload ("res://content/ui/components/button/button.tscn")
const LabelScene = preload ("res://content/ui/components/label_container/label_container.tscn") const LabelScene = preload ("res://content/ui/components/label_container/label_container.tscn")
@ -12,14 +15,20 @@ const ButtonActiveMaterial = preload ("button_active.material")
@export var page: int = 0: @export var page: int = 0:
set(value): set(value):
if page == value: return
page = clamp(value, 0, pages - 1) page = clamp(value, 0, pages - 1)
_update() _update()
@export var pages: int = 5: @export var pages: int = 5:
set(value): set(value):
if pages == value: return
pages = max(1, value) pages = max(1, value)
_update() _update()
@export var visible_pages: int = 5: @export var visible_pages: int = 5:
set(value): set(value):
if visible_pages == value: return
visible_pages = max(5, value) visible_pages = max(5, value)
_update() _update()
@ -27,12 +36,17 @@ func _ready():
_update() _update()
func _update(): func _update():
if !is_inside_tree(): return print("update %s %s %s %s" % [page, pages, visible_pages, get_parent()])
if !is_node_ready(): return
for child in get_children(): for child in get_children():
if child != prev_button&&child != next_button: if child != prev_button&&child != next_button:
child.queue_free() remove_child(child)
await child.tree_exited child.free()
# child.queue_free()
# print("queue free", child)
# await child.tree_exited
# print("exited", child)
var display_pages = min(pages, visible_pages) var display_pages = min(pages, visible_pages)
var center_pos = floor(display_pages / 2) var center_pos = floor(display_pages / 2)
@ -48,6 +62,9 @@ func _update():
next_button.mesh.visible = !at_end next_button.mesh.visible = !at_end
prev_button.size = Vector3(size.y, size.y, size.z) prev_button.size = Vector3(size.y, size.y, size.z)
next_button.size = Vector3(size.y, size.y, size.z)
print("A %s %s %s %s" % [display_pages, center_pos, start_dots, end_dots])
for i in range(display_pages): for i in range(display_pages):
if (start_dots&&i == 1)||(end_dots&&i == display_pages - 2): if (start_dots&&i == 1)||(end_dots&&i == display_pages - 2):
@ -77,12 +94,13 @@ func _update():
button.on_button_up.connect(func(_arg): button.on_button_up.connect(func(_arg):
page=int(button.label) - 1 page=int(button.label) - 1
on_page_changed.emit(page)
) )
add_child(button) add_child(button)
move_child(button, -2) move_child(button, -2)
button.mesh.material_override = ButtonActiveMaterial if (int(button.label) - 1) == page else ButtonMaterial button.get_node("Body/MeshInstance3D").material_override = ButtonActiveMaterial if (int(button.label) - 1) == page else ButtonMaterial
super._update() super._update()

View File

@ -5,17 +5,19 @@
[node name="Pagination" type="Node3D"] [node name="Pagination" type="Node3D"]
script = ExtResource("1_3ylfj") script = ExtResource("1_3ylfj")
page = 4 pages = 4
pages = 9 visible_pages = 7
visible_pages = 6
gap = 0.01 gap = 0.01
size = Vector3(9.92, 0.05, 0.01) size = Vector3(9.92, 0.05, 0.01)
[node name="Prev" parent="." instance=ExtResource("2_lsc4w")] [node name="Prev" parent="." instance=ExtResource("2_lsc4w")]
label = "navigate_before" label = "navigate_before"
icon = true icon = true
disabled = true
size = Vector3(0.05, 0.05, 0.01)
[node name="Next" parent="." instance=ExtResource("2_lsc4w")] [node name="Next" parent="." instance=ExtResource("2_lsc4w")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.42, 0, 0) transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.3, 0, 0)
label = "navigate_next" label = "navigate_next"
icon = true icon = true
size = Vector3(0.05, 0.05, 0.01)

View File

@ -9,7 +9,7 @@ size = Vector3(0.15, 0.02, 0.01)
[sub_resource type="ShaderMaterial" id="ShaderMaterial_vgpd3"] [sub_resource type="ShaderMaterial" id="ShaderMaterial_vgpd3"]
resource_local_to_scene = true resource_local_to_scene = true
render_priority = -2 render_priority = 20
shader = ExtResource("2_by0d8") shader = ExtResource("2_by0d8")
shader_parameter/color = Color(1, 1, 1, 0.3) shader_parameter/color = Color(1, 1, 1, 0.3)
shader_parameter/border_color = Color(1, 1, 1, 1) shader_parameter/border_color = Color(1, 1, 1, 1)
@ -28,7 +28,7 @@ size = Vector2(0.15, 0.02)
[sub_resource type="ShaderMaterial" id="ShaderMaterial_mv0la"] [sub_resource type="ShaderMaterial" id="ShaderMaterial_mv0la"]
resource_local_to_scene = true resource_local_to_scene = true
render_priority = -1 render_priority = 30
shader = ExtResource("2_by0d8") shader = ExtResource("2_by0d8")
shader_parameter/color = Color(1, 1, 1, 0.3) shader_parameter/color = Color(1, 1, 1, 0.3)
shader_parameter/border_color = Color(1, 1, 1, 1) shader_parameter/border_color = Color(1, 1, 1, 1)
@ -70,6 +70,8 @@ mesh = SubResource("QuadMesh_k78f4")
[node name="Label" type="Label3D" parent="."] [node name="Label" type="Label3D" parent="."]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.08, 0, 0.01) transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.08, 0, 0.01)
pixel_size = 0.001 pixel_size = 0.001
render_priority = 30
outline_render_priority = 29
text = "0.2 " text = "0.2 "
font_size = 10 font_size = 10
outline_size = 4 outline_size = 4

View File

@ -0,0 +1,47 @@
extends Node3D
signal on_select_device(device_id)
const ButtonScene = preload ("res://content/ui/components/button/button.tscn")
@onready var grid_container = $GridContainer3D
@onready var pagination = $Pagination3D
var page = R.state(0)
var page_size = 28.0
func _ready():
var pages = R.computed(func(_arg):
var devices=Store.devices.state.devices
print("recalc pages ", ceil(devices.size() / page_size))
return ceil(devices.size() / page_size)
)
var visible_devices = R.computed(func(_arg):
var devices=Store.devices.state.devices
return devices.slice(page.value * page_size, page.value * page_size + page_size)
)
R.bind(pagination, "pages", pages)
R.bind(pagination, "page", page, pagination.on_page_changed)
R.effect(func(_arg):
for child in grid_container.get_children():
grid_container.remove_child(child)
child.free()
for device in visible_devices.value:
var info=device.values()[0]
var button_instance=ButtonScene.instantiate()
button_instance.label=info["name"]
button_instance.on_button_down.connect(func():
on_select_device.emit(device.keys()[0])
)
grid_container.add_child(button_instance)
)

View File

@ -2,160 +2,45 @@ extends Node3D
const ButtonScene = preload ("res://content/ui/components/button/button.tscn") const ButtonScene = preload ("res://content/ui/components/button/button.tscn")
@onready var devices_node: GridContainer3D = $Devices @onready var devices_page = $Devices
@onready var next_page_button = $Buttons/NextPageButton @onready var entities_page = $Entities
@onready var previous_page_button = $Buttons/PreviousPageButton
@onready var page_number_label = $PageNumberLabel
var page = R.state(0) var selected_device = R.state(null)
var last_device_page = 0
var page_size = 20
var pages = 0
var selected_device = null
# Called when the node enters the scene tree for the first time.
func _ready(): func _ready():
next_page_button.on_button_down.connect(func(): entities_page.selected_device = selected_device
next_page() remove_child(entities_page)
devices_page.on_select_device.connect(func(device):
selected_device.value=device
entities_page.page.value=0
) )
previous_page_button.on_button_down.connect(func(): entities_page.on_select_entity.connect(func(entity_name):
previous_page()
)
func _enter_tree():
if !HomeApi.has_connected(): await HomeApi.on_connect
if is_node_ready():
load_devices()
func load_devices():
if devices.size() == 0:
devices = await HomeApi.get_devices()
devices.sort_custom(func(a, b):
return a.values()[0]["name"].to_lower() < b.values()[0]["name"].to_lower()
)
for device in devices:
device.values()[0]["entities"].sort_custom(func(a, b):
return a.to_lower() < b.to_lower()
)
render()
HomeApi.on_disconnect.connect(func():
devices=[]
if is_node_ready():
render()
)
func update_pages():
if selected_device == null:
pages = ceil(float(devices.size()) / page_size)
else:
for device in devices:
if device.keys()[0] == selected_device:
pages = ceil(float(device.values()[0]["entities"].size()) / page_size)
func get_page():
if selected_device == null:
return devices.slice(page * page_size, page * page_size + page_size)
else:
for device in devices:
if device.keys()[0] == selected_device:
return device.values()[0]["entities"].slice(page * page_size, page * page_size + page_size)
func next_page():
if page >= pages - 1:
return
page += 1
render()
func previous_page():
if page <= 0:
return
page -= 1
render()
func render():
if devices.size() == 0:
return
update_pages()
page_number_label.set_text(str(page + 1) + " / " + str(pages))
var has_prev_page = page > 0
var has_next_page = page < pages - 1
previous_page_button.visible = has_prev_page
previous_page_button.disabled = !has_prev_page
previous_page_button.body.get_node("CollisionShape3D").disabled = !has_prev_page
next_page_button.visible = has_next_page
next_page_button.disabled = !has_next_page
next_page_button.body.get_node("CollisionShape3D").disabled = !has_next_page
clear_menu()
if selected_device == null:
render_devices()
else:
render_entities()
func render_devices():
var page_devices = get_page()
for device in page_devices:
var info = device.values()[0]
var button_instance = ButtonScene.instantiate()
button_instance.label = info["name"]
button_instance.on_button_down.connect(func():
_on_device_click(device.keys()[0])
)
devices_node.add_child(button_instance)
func render_entities():
var entities = get_page()
var back_button = ButtonScene.instantiate()
back_button.label = "arrow_back"
back_button.icon = true
back_button.on_button_down.connect(func():
_on_entity_click("#back")
)
devices_node.add_child(back_button)
for entity in entities:
var button_instance = ButtonScene.instantiate()
button_instance.label = entity
button_instance.on_button_down.connect(func():
_on_entity_click(entity)
)
devices_node.add_child(button_instance)
func _on_device_click(device_id):
selected_device = device_id
last_device_page = page
page = 0
render()
func _on_entity_click(entity_name):
if entity_name == "#back":
selected_device = null
page = last_device_page
AudioPlayer.play_effect("click")
render()
return
AudioPlayer.play_effect("spawn") AudioPlayer.play_effect("spawn")
var entity = House.body.create_entity(entity_name, global_position) var entity=House.body.create_entity(entity_name, global_position)
if entity == null: if entity == null:
EventSystem.notify("Entity is not in Room", EventNotify.Type.INFO) EventSystem.notify("Entity is not in Room", EventNotify.Type.INFO)
)
func clear_menu(): entities_page.on_back.connect(func():
for child in devices_node.get_children(): selected_device.value=null
devices_node.remove_child(child) )
child.queue_free()
R.effect(func(_arg):
if selected_device.value == null:
if devices_page.is_inside_tree() == false:
add_child(devices_page)
if entities_page.is_inside_tree():
remove_child(entities_page)
if selected_device.value != null:
if entities_page.is_inside_tree() == false:
add_child(entities_page)
if devices_page.is_inside_tree():
remove_child(devices_page)
)

View File

@ -1,9 +1,12 @@
[gd_scene load_steps=7 format=3 uid="uid://crrb0l3ekuotj"] [gd_scene load_steps=10 format=3 uid="uid://crrb0l3ekuotj"]
[ext_resource type="Script" path="res://content/ui/menu/edit/edit_menu.gd" id="1_34cbn"] [ext_resource type="Script" path="res://content/ui/menu/edit/edit_menu.gd" id="1_34cbn"]
[ext_resource type="Script" path="res://content/ui/menu/edit/devices.gd" id="2_rkvf4"]
[ext_resource type="Script" path="res://content/ui/components/grid_container/grid_container.gd" id="3_0xvyw"] [ext_resource type="Script" path="res://content/ui/components/grid_container/grid_container.gd" id="3_0xvyw"]
[ext_resource type="PackedScene" uid="uid://bef3gamrm6at2" path="res://content/ui/components/pagination/pagination.tscn" id="4_4jiu6"] [ext_resource type="PackedScene" uid="uid://bef3gamrm6at2" path="res://content/ui/components/pagination/pagination.tscn" id="4_4jiu6"]
[ext_resource type="PackedScene" uid="uid://bsjqdvkt0u87c" path="res://content/ui/components/button/button.tscn" id="4_lpv7m"]
[ext_resource type="Shader" path="res://assets/materials/glass.gdshader" id="4_xunmy"] [ext_resource type="Shader" path="res://assets/materials/glass.gdshader" id="4_xunmy"]
[ext_resource type="Script" path="res://content/ui/menu/edit/entities.gd" id="5_t34xe"]
[sub_resource type="ShaderMaterial" id="ShaderMaterial_hstwo"] [sub_resource type="ShaderMaterial" id="ShaderMaterial_hstwo"]
render_priority = -3 render_priority = -3
@ -26,28 +29,64 @@ size = Vector2(0.42, 0.32)
script = ExtResource("1_34cbn") script = ExtResource("1_34cbn")
[node name="Devices" type="Node3D" parent="."] [node name="Devices" type="Node3D" parent="."]
script = ExtResource("2_rkvf4")
[node name="Devices" type="Node3D" parent="Devices"] [node name="GridContainer3D" type="Node3D" parent="Devices"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.045, -0.045, 0.01) transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.05, -0.08, 0)
script = ExtResource("3_0xvyw") script = ExtResource("3_0xvyw")
columns = 7
gaps = Vector2(0.01, 0.01) gaps = Vector2(0.01, 0.01)
size = Vector3(0.24, 0.1, 0.1) size = Vector3(0.28, 0.1, 0.1)
[node name="Background" type="MeshInstance3D" parent="Devices"]
transform = Transform3D(1, 0, 0, 0, 1, 1.06581e-14, 0, -1.06581e-14, 1, 0.21, -0.16, 0)
material_override = SubResource("ShaderMaterial_hstwo")
mesh = SubResource("QuadMesh_4pj6f")
skeleton = NodePath("../../..")
[node name="Label3D" type="Label3D" parent="Devices"] [node name="Label3D" type="Label3D" parent="Devices"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.02, -0.03, 0) transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.02, -0.03, 0)
pixel_size = 0.001 pixel_size = 0.001
double_sided = false
render_priority = 15
outline_render_priority = 14
text = "Devices" text = "Devices"
font_size = 26 font_size = 24
outline_size = 0 outline_size = 0
horizontal_alignment = 0 horizontal_alignment = 0
[node name="Entities" type="Node3D" parent="."] [node name="Pagination3D" parent="Devices" instance=ExtResource("4_4jiu6")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.03, -0.29, 0)
size = Vector3(9.92, 0.03, 0.01)
[node name="Pagination" parent="." instance=ExtResource("4_4jiu6")] [node name="Entities" type="Node3D" parent="."]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.03, -0.27, 0) script = ExtResource("5_t34xe")
[node name="GridContainer3D" type="Node3D" parent="Entities"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.05, -0.08, 0)
script = ExtResource("3_0xvyw")
columns = 7
gaps = Vector2(0.01, 0.01)
size = Vector3(0.28, 0.1, 0.1)
[node name="Pagination3D" parent="Entities" instance=ExtResource("4_4jiu6")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.03, -0.29, 0)
size = Vector3(9.92, 0.03, 0.01)
[node name="Label3D" type="Label3D" parent="Entities"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.05, -0.03, 0)
pixel_size = 0.001
double_sided = false
render_priority = 15
outline_render_priority = 14
text = "My Entity"
font_size = 24
outline_size = 0
horizontal_alignment = 0
[node name="Button" parent="Entities" instance=ExtResource("4_lpv7m")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.03, -0.03, 0)
label = "arrow_back"
icon = true
size = Vector3(0.03, 0.03, 0.01)
[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)
visible = false
material_override = SubResource("ShaderMaterial_hstwo")
mesh = SubResource("QuadMesh_4pj6f")
skeleton = NodePath("../..")

View File

@ -0,0 +1,55 @@
extends Node3D
signal on_select_entity(entity_id)
signal on_back()
const ButtonScene = preload ("res://content/ui/components/button/button.tscn")
@onready var grid_container = $GridContainer3D
@onready var pagination = $Pagination3D
@onready var back_button = $Button
var page = R.state(0)
var page_size = 28.0
var selected_device = R.state(null)
func _ready():
var entities = R.computed(func(_arg):
var devices=Store.devices.state.devices
for device in devices:
if device.keys()[0] == selected_device.value:
return device.values()[0]["entities"]
return []
)
var pages = R.computed(func(_arg):
return ceil(entities.value.size() / page_size)
)
var visible_entities = R.computed(func(_arg):
return entities.value.slice(page.value * page_size, page.value * page_size + page_size)
)
R.bind(pagination, "pages", pages)
R.bind(pagination, "page", page, pagination.on_page_changed)
back_button.on_button_up.connect(func():
on_back.emit()
)
R.effect(func(_arg):
for child in grid_container.get_children():
grid_container.remove_child(child)
child.free()
for entity in visible_entities.value:
var button_instance=ButtonScene.instantiate()
button_instance.label=entity
button_instance.on_button_down.connect(func():
on_select_entity.emit(entity)
)
grid_container.add_child(button_instance)
)

View File

@ -16,7 +16,7 @@
size = Vector3(0.51, 0.32, 0.013) size = Vector3(0.51, 0.32, 0.013)
[sub_resource type="ShaderMaterial" id="ShaderMaterial_du6qr"] [sub_resource type="ShaderMaterial" id="ShaderMaterial_du6qr"]
render_priority = -3 render_priority = 0
shader = ExtResource("3_htaoi") shader = ExtResource("3_htaoi")
shader_parameter/color = Color(1, 1, 1, 0.3) shader_parameter/color = Color(1, 1, 1, 0.3)
shader_parameter/border_color = Color(1, 1, 1, 1) shader_parameter/border_color = Color(1, 1, 1, 1)
@ -30,10 +30,11 @@ shader_parameter/roughness = 0.3
shader_parameter/grain_amount = 0.02 shader_parameter/grain_amount = 0.02
[sub_resource type="QuadMesh" id="QuadMesh_4bh1v"] [sub_resource type="QuadMesh" id="QuadMesh_4bh1v"]
lightmap_size_hint = Vector2i(4, 3)
size = Vector2(0.42, 0.32) size = Vector2(0.42, 0.32)
[sub_resource type="ShaderMaterial" id="ShaderMaterial_mhqg4"] [sub_resource type="ShaderMaterial" id="ShaderMaterial_mhqg4"]
render_priority = -1 render_priority = 0
shader = ExtResource("3_htaoi") shader = ExtResource("3_htaoi")
shader_parameter/color = Color(1, 1, 1, 0.3) shader_parameter/color = Color(1, 1, 1, 0.3)
shader_parameter/border_color = Color(1, 1, 1, 1) shader_parameter/border_color = Color(1, 1, 1, 1)
@ -192,7 +193,7 @@ collision_mask = 2
script = ExtResource("1_ng4u3") script = ExtResource("1_ng4u3")
[node name="CollisionShape3D" type="CollisionShape3D" parent="."] [node name="CollisionShape3D" type="CollisionShape3D" parent="."]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.03, 0, 0) transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.03, 0, -0.005)
shape = SubResource("BoxShape3D_e1esh") shape = SubResource("BoxShape3D_e1esh")
[node name="Movable" type="Node" parent="."] [node name="Movable" type="Node" parent="."]
@ -204,7 +205,7 @@ collision_layer = 6
collision_mask = 6 collision_mask = 6
[node name="CollisionShape3D" type="CollisionShape3D" parent="AnimationContainer"] [node name="CollisionShape3D" type="CollisionShape3D" parent="AnimationContainer"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.2, -0.15, 0) transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.2, -0.15, -0.005)
shape = SubResource("BoxShape3D_e1esh") shape = SubResource("BoxShape3D_e1esh")
[node name="Background" type="MeshInstance3D" parent="AnimationContainer"] [node name="Background" type="MeshInstance3D" parent="AnimationContainer"]
@ -232,41 +233,45 @@ label = "visibility"
icon = true icon = true
toggleable = true toggleable = true
disabled = true disabled = true
size = Vector3(0.05, 0.05, 0.01)
[node name="Edit" parent="AnimationContainer/Tabs" instance=ExtResource("5_w4i01")] [node name="Edit" parent="AnimationContainer/Tabs" instance=ExtResource("5_w4i01")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.06, 0) transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.06, 0)
label = "widgets" label = "widgets"
icon = true icon = true
toggleable = true toggleable = true
size = Vector3(0.05, 0.05, 0.01)
[node name="Room" parent="AnimationContainer/Tabs" instance=ExtResource("5_w4i01")] [node name="Room" parent="AnimationContainer/Tabs" instance=ExtResource("5_w4i01")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.12, 0) transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.12, 0)
label = "view_in_ar" label = "view_in_ar"
icon = true icon = true
toggleable = true toggleable = true
size = Vector3(0.05, 0.05, 0.01)
[node name="Automate" parent="AnimationContainer/Tabs" instance=ExtResource("5_w4i01")] [node name="Automate" parent="AnimationContainer/Tabs" instance=ExtResource("5_w4i01")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.18, 0) transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.18, 0)
label = "schema" label = "schema"
icon = true icon = true
toggleable = true toggleable = true
size = Vector3(0.05, 0.05, 0.01)
[node name="Settings" parent="AnimationContainer/Tabs" instance=ExtResource("5_w4i01")] [node name="Settings" parent="AnimationContainer/Tabs" instance=ExtResource("5_w4i01")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.24, 0) transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.24, 0)
label = "settings" label = "settings"
icon = true icon = true
toggleable = true toggleable = true
size = Vector3(0.05, 0.05, 0.01)
[node name="TabsContent" type="Node3D" parent="AnimationContainer" node_paths=PackedStringArray("tabs")] [node name="TabsContent" type="Node3D" parent="AnimationContainer" node_paths=PackedStringArray("tabs")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.01, 0.00999999, -0.01) transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.02, 0.00999999, 0)
script = ExtResource("6_7rntr") script = ExtResource("6_7rntr")
tabs = NodePath("../Tabs") tabs = NodePath("../Tabs")
[node name="ViewMenu" parent="AnimationContainer/TabsContent" instance=ExtResource("8_71pkg")] [node name="ViewMenu" parent="AnimationContainer/TabsContent" instance=ExtResource("8_71pkg")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.01, 0, 0.01) visible = false
[node name="EditMenu" parent="AnimationContainer/TabsContent" instance=ExtResource("4_r2raj")] [node name="EditMenu" parent="AnimationContainer/TabsContent" instance=ExtResource("4_r2raj")]
visible = false
[node name="RoomMenu" parent="AnimationContainer/TabsContent" instance=ExtResource("10_u4i1x")] [node name="RoomMenu" parent="AnimationContainer/TabsContent" instance=ExtResource("10_u4i1x")]
visible = false visible = false

View File

@ -1,29 +1,40 @@
[gd_scene load_steps=9 format=3 uid="uid://c01gkeldvjwtr"] [gd_scene load_steps=10 format=3 uid="uid://c01gkeldvjwtr"]
[ext_resource type="Script" path="res://content/ui/menu/room/room_menu.gd" id="1_ch4jb"] [ext_resource type="Script" path="res://content/ui/menu/room/room_menu.gd" id="1_ch4jb"]
[ext_resource type="Material" uid="uid://bujy3egn1oqac" path="res://assets/materials/pri-500.material" id="2_7m4yn"]
[ext_resource type="PackedScene" uid="uid://bsjqdvkt0u87c" path="res://content/ui/components/button/button.tscn" id="4_cghmp"] [ext_resource type="PackedScene" uid="uid://bsjqdvkt0u87c" path="res://content/ui/components/button/button.tscn" id="4_cghmp"]
[ext_resource type="Script" path="res://content/ui/components/tabs/tabs.gd" id="5_ddrep"] [ext_resource type="Script" path="res://content/ui/components/tabs/tabs.gd" id="5_ddrep"]
[ext_resource type="PackedScene" uid="uid://dd71loi64gnmp" path="res://content/ui/menu/room/views/overview.tscn" id="6_206ad"] [ext_resource type="PackedScene" uid="uid://dd71loi64gnmp" path="res://content/ui/menu/room/views/overview.tscn" id="6_206ad"]
[ext_resource type="Script" path="res://content/ui/components/tabs/tabs_content.gd" id="6_ba00g"] [ext_resource type="Script" path="res://content/ui/components/tabs/tabs_content.gd" id="6_ba00g"]
[ext_resource type="PackedScene" uid="uid://bpta22fahai46" path="res://content/ui/menu/room/views/rooms.tscn" id="7_2f8e0"] [ext_resource type="PackedScene" uid="uid://bpta22fahai46" path="res://content/ui/menu/room/views/rooms.tscn" id="7_2f8e0"]
[ext_resource type="Shader" path="res://assets/materials/glass.gdshader" id="7_bxp1w"]
[sub_resource type="BoxMesh" id="BoxMesh_e37nn"] [sub_resource type="ShaderMaterial" id="ShaderMaterial_2asng"]
size = Vector3(0.3, 0.01, 0.3) render_priority = -3
shader = ExtResource("7_bxp1w")
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_16sg5"]
size = Vector2(0.42, 0.32)
[node name="RoomMenu" type="Node3D"] [node name="RoomMenu" type="Node3D"]
script = ExtResource("1_ch4jb") script = ExtResource("1_ch4jb")
[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_7m4yn")
mesh = SubResource("BoxMesh_e37nn")
[node name="Interface" type="Node3D" parent="."] [node name="Interface" type="Node3D" parent="."]
[node name="Tabs3D" type="Node3D" parent="Interface" node_paths=PackedStringArray("initial_selected")] [node name="Tabs3D" type="Node3D" parent="Interface" node_paths=PackedStringArray("initial_selected")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.04, -0.04, 0)
script = ExtResource("5_ddrep") script = ExtResource("5_ddrep")
initial_selected = NodePath("Overview") initial_selected = NodePath("Overview")
gap = 0.01
[node name="Overview" parent="Interface/Tabs3D" instance=ExtResource("4_cghmp")] [node name="Overview" parent="Interface/Tabs3D" instance=ExtResource("4_cghmp")]
label = "Overview" label = "Overview"
@ -37,6 +48,12 @@ script = ExtResource("6_ba00g")
tabs = NodePath("../Tabs3D") tabs = NodePath("../Tabs3D")
[node name="Overview" parent="Interface/TabsContent3D" instance=ExtResource("6_206ad")] [node name="Overview" parent="Interface/TabsContent3D" instance=ExtResource("6_206ad")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0.04)
[node name="Rooms" parent="Interface/TabsContent3D" instance=ExtResource("7_2f8e0")] [node name="Rooms" parent="Interface/TabsContent3D" instance=ExtResource("7_2f8e0")]
[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)
visible = false
material_override = SubResource("ShaderMaterial_2asng")
mesh = SubResource("QuadMesh_16sg5")
skeleton = NodePath("../..")

View File

@ -1,24 +1,52 @@
[gd_scene load_steps=3 format=3 uid="uid://dd71loi64gnmp"] [gd_scene load_steps=6 format=3 uid="uid://dd71loi64gnmp"]
[ext_resource type="PackedScene" uid="uid://bsjqdvkt0u87c" path="res://content/ui/components/button/button.tscn" id="1_fteh8"] [ext_resource type="PackedScene" uid="uid://bsjqdvkt0u87c" path="res://content/ui/components/button/button.tscn" id="1_fteh8"]
[ext_resource type="Script" path="res://content/ui/menu/room/views/overview.gd" id="1_jesad"] [ext_resource type="Script" path="res://content/ui/menu/room/views/overview.gd" id="1_jesad"]
[ext_resource type="Shader" path="res://assets/materials/glass.gdshader" id="3_2yl2s"]
[sub_resource type="ShaderMaterial" id="ShaderMaterial_n3lbn"]
render_priority = -3
shader = ExtResource("3_2yl2s")
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_l1dos"]
size = Vector2(0.42, 0.32)
[node name="Overview" type="Node3D"] [node name="Overview" type="Node3D"]
script = ExtResource("1_jesad") script = ExtResource("1_jesad")
[node name="EditButton" parent="." instance=ExtResource("1_fteh8")] [node name="EditButton" parent="." instance=ExtResource("1_fteh8")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.04, 0, 0.07) transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.04, -0.12, 0)
label = "edit" label = "edit"
icon = true icon = true
[node name="FixButton" parent="." instance=ExtResource("1_fteh8")] [node name="FixButton" parent="." instance=ExtResource("1_fteh8")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.1, 0, 0.07) transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.1, -0.12, 0)
label = "healing" label = "healing"
icon = true icon = true
[node name="Label3D" type="Label3D" parent="."] [node name="Label3D" type="Label3D" parent="."]
transform = Transform3D(1, 0, 0, 0, -4.37114e-08, 1, 0, -1, -4.37114e-08, 0.06, 0.01, 0.02) transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.02, -0.08, 0.01)
pixel_size = 0.001 pixel_size = 0.001
render_priority = 15
outline_render_priority = 14
text = "Reference" text = "Reference"
font_size = 18 font_size = 18
outline_size = 0 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)
visible = false
material_override = SubResource("ShaderMaterial_n3lbn")
mesh = SubResource("QuadMesh_l1dos")
skeleton = NodePath("../..")

View File

@ -1,21 +1,46 @@
[gd_scene load_steps=4 format=3 uid="uid://bpta22fahai46"] [gd_scene load_steps=7 format=3 uid="uid://bpta22fahai46"]
[ext_resource type="Script" path="res://content/ui/menu/room/views/rooms.gd" id="1_3a1oa"] [ext_resource type="Script" path="res://content/ui/menu/room/views/rooms.gd" id="1_3a1oa"]
[ext_resource type="PackedScene" uid="uid://bsjqdvkt0u87c" path="res://content/ui/components/button/button.tscn" id="1_y3lty"] [ext_resource type="PackedScene" uid="uid://bsjqdvkt0u87c" path="res://content/ui/components/button/button.tscn" id="1_y3lty"]
[ext_resource type="PackedScene" uid="uid://blrhy2uccrdn4" path="res://content/ui/components/input/input.tscn" id="2_hstw7"] [ext_resource type="PackedScene" uid="uid://blrhy2uccrdn4" path="res://content/ui/components/input/input.tscn" id="2_hstw7"]
[ext_resource type="Shader" path="res://assets/materials/glass.gdshader" id="4_jx6i3"]
[sub_resource type="ShaderMaterial" id="ShaderMaterial_dah0r"]
render_priority = -3
shader = ExtResource("4_jx6i3")
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_fq44b"]
size = Vector2(0.42, 0.32)
[node name="Rooms" type="Node3D"] [node name="Rooms" type="Node3D"]
script = ExtResource("1_3a1oa") script = ExtResource("1_3a1oa")
[node name="Rooms" type="Node3D" parent="."] [node name="Rooms" type="Node3D" parent="."]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.15, 0.01, 0.17) transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.14, -0.13, 0)
[node name="Button" parent="." instance=ExtResource("1_y3lty")] [node name="Button" parent="." instance=ExtResource("1_y3lty")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.27, 0, 0.27) transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.2, -0.28, 0)
label = "add" label = "add"
icon = true icon = true
[node name="Input" parent="." instance=ExtResource("2_hstw7")] [node name="Input" parent="." instance=ExtResource("2_hstw7")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.12, 0.005, 0.27) transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.09, -0.28, 0)
text = "Room 1" text = "Room 1"
disabled = true disabled = true
[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)
visible = false
material_override = SubResource("ShaderMaterial_dah0r")
mesh = SubResource("QuadMesh_fq44b")
skeleton = NodePath("../..")

View File

@ -1,38 +1,47 @@
[gd_scene load_steps=9 format=3 uid="uid://c6r4higceibif"] [gd_scene load_steps=10 format=3 uid="uid://c6r4higceibif"]
[ext_resource type="Script" path="res://content/ui/menu/settings/settings_menu.gd" id="1_0lte6"] [ext_resource type="Script" path="res://content/ui/menu/settings/settings_menu.gd" id="1_0lte6"]
[ext_resource type="PackedScene" uid="uid://bsjqdvkt0u87c" path="res://content/ui/components/button/button.tscn" id="1_faxng"] [ext_resource type="PackedScene" uid="uid://bsjqdvkt0u87c" path="res://content/ui/components/button/button.tscn" id="1_faxng"]
[ext_resource type="Material" uid="uid://bujy3egn1oqac" path="res://assets/materials/pri-500.material" id="2_6lhhi"]
[ext_resource type="Script" path="res://content/functions/clickable.gd" id="3_qmg6q"] [ext_resource type="Script" path="res://content/functions/clickable.gd" id="3_qmg6q"]
[ext_resource type="PackedScene" uid="uid://blrhy2uccrdn4" path="res://content/ui/components/input/input.tscn" id="4_q3x6k"] [ext_resource type="PackedScene" uid="uid://blrhy2uccrdn4" path="res://content/ui/components/input/input.tscn" id="4_q3x6k"]
[ext_resource type="FontVariation" uid="uid://sshfnckriqxn" path="res://assets/icons/icons.tres" id="5_eiwd4"] [ext_resource type="FontVariation" uid="uid://sshfnckriqxn" path="res://assets/icons/icons.tres" id="5_eiwd4"]
[ext_resource type="Shader" path="res://assets/materials/glass.gdshader" id="6_mubnp"]
[sub_resource type="BoxMesh" id="BoxMesh_e51x8"]
size = Vector3(0.3, 0.01, 0.3)
[sub_resource type="BoxShape3D" id="BoxShape3D_3qdps"] [sub_resource type="BoxShape3D" id="BoxShape3D_3qdps"]
size = Vector3(0.08, 0.01, 0.02) size = Vector3(0.07, 0.02, 0.01)
[sub_resource type="ShaderMaterial" id="ShaderMaterial_3iv64"]
render_priority = -3
shader = ExtResource("6_mubnp")
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_d0l0p"]
size = Vector2(0.42, 0.32)
[node name="SettingsMenu" type="Node3D"] [node name="SettingsMenu" type="Node3D"]
script = ExtResource("1_0lte6") script = ExtResource("1_0lte6")
[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_6lhhi")
mesh = SubResource("BoxMesh_e51x8")
[node name="Content" type="Node3D" parent="."] [node name="Content" type="Node3D" parent="."]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.007, 0) transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.007, 0)
[node name="ConnectionStatus" type="Label3D" parent="Content"] [node name="ConnectionStatus" type="Label3D" parent="Content"]
transform = Transform3D(1, 0, 0, 0, -4.37114e-08, 1, 0, -1, -4.37114e-08, 0.250698, 0, 0.151303) transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.251, -0.151, 0)
pixel_size = 0.001 pixel_size = 0.001
text = "Disconnected" text = "Disconnected"
font_size = 8 font_size = 8
outline_size = 0 outline_size = 0
[node name="LabelURL" type="Label3D" parent="Content"] [node name="LabelURL" type="Label3D" parent="Content"]
transform = Transform3D(1, 0, 0, 0, -4.37114e-08, 1, 0, -1, -4.37114e-08, 0.01, 0, 0.03) transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.01, -0.03, 0)
pixel_size = 0.001 pixel_size = 0.001
text = "url: text = "url:
" "
@ -41,11 +50,12 @@ outline_size = 0
horizontal_alignment = 0 horizontal_alignment = 0
[node name="InputURL" parent="Content" instance=ExtResource("4_q3x6k")] [node name="InputURL" parent="Content" instance=ExtResource("4_q3x6k")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.18, 0, 0.03) transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.18, -0.03, 0)
text = "ws://192.168.0.1:8123" text = "ws://192.168.0.1:8123"
size = Vector3(0.2, 0.03, 0.01)
[node name="LabelToken" type="Label3D" parent="Content"] [node name="LabelToken" type="Label3D" parent="Content"]
transform = Transform3D(1, 0, 0, 0, -4.37114e-08, 1, 0, -1, -4.37114e-08, 0.01, 0, 0.07) transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.01, -0.07, 0)
pixel_size = 0.001 pixel_size = 0.001
text = "token:" text = "token:"
font_size = 18 font_size = 18
@ -53,11 +63,12 @@ outline_size = 0
horizontal_alignment = 0 horizontal_alignment = 0
[node name="InputToken" parent="Content" instance=ExtResource("4_q3x6k")] [node name="InputToken" parent="Content" instance=ExtResource("4_q3x6k")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.18, 0, 0.07) transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.18, -0.07, 0)
text = "..." text = "..."
size = Vector3(0.2, 0.03, 0.01)
[node name="LabelConnect" type="Label3D" parent="Content"] [node name="LabelConnect" type="Label3D" parent="Content"]
transform = Transform3D(1, 0, 0, 0, -4.37114e-08, 1, 0, -1, -4.37114e-08, 0.14, 0, 0.12) transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.14, -0.12, 0)
pixel_size = 0.001 pixel_size = 0.001
text = "Connect" text = "Connect"
font_size = 18 font_size = 18
@ -65,26 +76,26 @@ outline_size = 0
horizontal_alignment = 0 horizontal_alignment = 0
[node name="Connect" parent="Content" instance=ExtResource("1_faxng")] [node name="Connect" parent="Content" instance=ExtResource("1_faxng")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.25, 0, 0.12) transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.25, -0.12, 0)
label = "login" label = "login"
icon = true icon = true
[node name="Credits" type="StaticBody3D" parent="Content"] [node name="Credits" type="StaticBody3D" parent="Content"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.0102286, 0) transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.37, -0.300229, 0)
[node name="CollisionShape3D" type="CollisionShape3D" parent="Content/Credits"] [node name="CollisionShape3D" type="CollisionShape3D" parent="Content/Credits"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.26, 0.005, 0.29) transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.005, 0, 0)
shape = SubResource("BoxShape3D_3qdps") shape = SubResource("BoxShape3D_3qdps")
[node name="Label" type="Label3D" parent="Content/Credits"] [node name="Label" type="Label3D" parent="Content/Credits"]
transform = Transform3D(1, 0, 0, 0, -4.37114e-08, 1, 0, -1, -4.37114e-08, 0.26, 0.0102286, 0.29) transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -2.98023e-08, 0, 0)
pixel_size = 0.001 pixel_size = 0.001
text = "credits" text = "credits"
font_size = 12 font_size = 12
outline_size = 0 outline_size = 0
[node name="Hearth" type="Label3D" parent="Content/Credits"] [node name="Hearth" type="Label3D" parent="Content/Credits"]
transform = Transform3D(1, 0, 0, 0, -4.37114e-08, 1, 0, -1, -4.37114e-08, 0.29, 0.0102286, 0.29) transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.03, 0, 0)
pixel_size = 0.001 pixel_size = 0.001
modulate = Color(0.584314, 0, 0, 1) modulate = Color(0.584314, 0, 0, 1)
text = "favorite" text = "favorite"
@ -96,7 +107,7 @@ outline_size = 0
script = ExtResource("3_qmg6q") script = ExtResource("3_qmg6q")
[node name="SaveLabel" type="Label3D" parent="Content"] [node name="SaveLabel" type="Label3D" parent="Content"]
transform = Transform3D(1, 0, 0, 0, -4.37114e-08, 1, 0, -1, -4.37114e-08, 0.01, 0, 0.21) transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.01, -0.21, 0)
pixel_size = 0.001 pixel_size = 0.001
text = "Manual Save:" text = "Manual Save:"
font_size = 18 font_size = 18
@ -104,12 +115,12 @@ outline_size = 0
horizontal_alignment = 0 horizontal_alignment = 0
[node name="Save" parent="Content" instance=ExtResource("1_faxng")] [node name="Save" parent="Content" instance=ExtResource("1_faxng")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.17, 0, 0.21) transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.17, -0.21, 0)
label = "save" label = "save"
icon = true icon = true
[node name="clearSaveLabel" type="Label3D" parent="Content"] [node name="clearSaveLabel" type="Label3D" parent="Content"]
transform = Transform3D(1, 0, 0, 0, -4.37114e-08, 1, 0, -1, -4.37114e-08, 0.01, 0, 0.26) transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.01, -0.26, 0)
pixel_size = 0.001 pixel_size = 0.001
text = "Clear Save:" text = "Clear Save:"
font_size = 18 font_size = 18
@ -117,12 +128,12 @@ outline_size = 0
horizontal_alignment = 0 horizontal_alignment = 0
[node name="ClearSave" parent="Content" instance=ExtResource("1_faxng")] [node name="ClearSave" parent="Content" instance=ExtResource("1_faxng")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.17, 0, 0.27) transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.17, -0.27, 0)
label = "close" label = "close"
icon = true icon = true
[node name="clearSaveWarning" type="Label3D" parent="Content"] [node name="clearSaveWarning" type="Label3D" parent="Content"]
transform = Transform3D(1, 0, 0, 0, -4.37114e-08, 1, 0, -1, -4.37114e-08, 0.01, 0, 0.28) transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.01, -0.28, 0)
pixel_size = 0.001 pixel_size = 0.001
modulate = Color(1, 0, 0, 1) modulate = Color(1, 0, 0, 1)
text = "Caution! This will delete all your rooms and placed devices." text = "Caution! This will delete all your rooms and placed devices."
@ -133,16 +144,22 @@ autowrap_mode = 3
width = 150.0 width = 150.0
[node name="VoiceAssist" parent="Content" instance=ExtResource("1_faxng")] [node name="VoiceAssist" parent="Content" instance=ExtResource("1_faxng")]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.1, 0, 0.12) transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.1, -0.12, 0)
label = "mic_off" label = "mic_off"
icon = true icon = true
toggleable = true toggleable = true
[node name="LabelVoiceAssist" type="Label3D" parent="Content"] [node name="LabelVoiceAssist" type="Label3D" parent="Content"]
transform = Transform3D(1, 0, 0, 0, -4.37114e-08, 1, 0, -1, -4.37114e-08, 0.01, 0, 0.12) transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.01, -0.12, 0)
pixel_size = 0.001 pixel_size = 0.001
text = "Voice- text = "Voice-
Assist:" Assist:"
font_size = 18 font_size = 18
outline_size = 0 outline_size = 0
horizontal_alignment = 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_3iv64")
mesh = SubResource("QuadMesh_d0l0p")
skeleton = NodePath("../..")

View File

@ -6,7 +6,7 @@
[ext_resource type="Shader" path="res://assets/materials/glass.gdshader" id="5_cjxo5"] [ext_resource type="Shader" path="res://assets/materials/glass.gdshader" id="5_cjxo5"]
[sub_resource type="ShaderMaterial" id="ShaderMaterial_e5hvo"] [sub_resource type="ShaderMaterial" id="ShaderMaterial_e5hvo"]
render_priority = -3 render_priority = 10
shader = ExtResource("5_cjxo5") shader = ExtResource("5_cjxo5")
shader_parameter/color = Color(1, 1, 1, 0.3) shader_parameter/color = Color(1, 1, 1, 0.3)
shader_parameter/border_color = Color(1, 1, 1, 1) shader_parameter/border_color = Color(1, 1, 1, 1)
@ -37,6 +37,8 @@ toggleable = true
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.07, -0.04, 0) transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.07, -0.04, 0)
pixel_size = 0.001 pixel_size = 0.001
double_sided = false double_sided = false
render_priority = 15
outline_render_priority = 14
text = "Mini View" text = "Mini View"
font_size = 18 font_size = 18
outline_size = 0 outline_size = 0
@ -52,6 +54,8 @@ toggleable = true
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.07, -0.1, 0) transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.07, -0.1, 0)
pixel_size = 0.001 pixel_size = 0.001
double_sided = false double_sided = false
render_priority = 15
outline_render_priority = 14
text = "Heat Map" text = "Heat Map"
font_size = 18 font_size = 18
outline_size = 0 outline_size = 0
@ -67,6 +71,8 @@ toggleable = true
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.07, -0.16, 0) transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.07, -0.16, 0)
pixel_size = 0.001 pixel_size = 0.001
double_sided = false double_sided = false
render_priority = 15
outline_render_priority = 14
text = "Humidity Map" text = "Humidity Map"
font_size = 18 font_size = 18
outline_size = 0 outline_size = 0
@ -81,6 +87,8 @@ step = 1.0
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.2, -0.21, 0) transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.2, -0.21, 0)
pixel_size = 0.001 pixel_size = 0.001
double_sided = false double_sided = false
render_priority = 15
outline_render_priority = 14
text = "Min Value" text = "Min Value"
font_size = 18 font_size = 18
outline_size = 0 outline_size = 0
@ -95,6 +103,8 @@ step = 1.0
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.2, -0.25, 0) transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.2, -0.25, 0)
pixel_size = 0.001 pixel_size = 0.001
double_sided = false double_sided = false
render_priority = 15
outline_render_priority = 14
text = "Max Value" text = "Max Value"
font_size = 18 font_size = 18
outline_size = 0 outline_size = 0
@ -111,6 +121,8 @@ label_unit = "%"
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.2, -0.29, 0) transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.2, -0.29, 0)
pixel_size = 0.001 pixel_size = 0.001
double_sided = false double_sided = false
render_priority = 15
outline_render_priority = 14
text = "Opacity" text = "Opacity"
font_size = 18 font_size = 18
outline_size = 0 outline_size = 0

View File

@ -8,7 +8,7 @@
size = Vector3(0.5, 0.3, 0.01) size = Vector3(0.5, 0.3, 0.01)
[sub_resource type="ShaderMaterial" id="ShaderMaterial_d2ck8"] [sub_resource type="ShaderMaterial" id="ShaderMaterial_d2ck8"]
render_priority = -1 render_priority = 10
shader = ExtResource("2_87aan") shader = ExtResource("2_87aan")
shader_parameter/color = Color(1, 1, 1, 0.3) shader_parameter/color = Color(1, 1, 1, 0.3)
shader_parameter/border_color = Color(1, 1, 1, 1) shader_parameter/border_color = Color(1, 1, 1, 1)
@ -32,6 +32,8 @@ script = ExtResource("1_k4yvw")
[node name="Label3D2" type="Label3D" parent="."] [node name="Label3D2" type="Label3D" parent="."]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.23, -0.1, 0.001) transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.23, -0.1, 0.001)
pixel_size = 0.001 pixel_size = 0.001
render_priority = 30
outline_render_priority = 29
text = "Getting Started" text = "Getting Started"
font_size = 18 font_size = 18
outline_size = 0 outline_size = 0
@ -50,6 +52,8 @@ mesh = SubResource("QuadMesh_ij2lj")
[node name="GettingStartedLabel" type="Label3D" parent="."] [node name="GettingStartedLabel" type="Label3D" parent="."]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.23, 0.13, 0.001) transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.23, 0.13, 0.001)
pixel_size = 0.001 pixel_size = 0.001
render_priority = 30
outline_render_priority = 29
text = "Hey! text = "Hey!
This app is still early in development and still has a lot of rough edges. Things might break or are sometimes difficult to use, this will improve the more polished the app becomes. This app is still early in development and still has a lot of rough edges. Things might break or are sometimes difficult to use, this will improve the more polished the app becomes.
@ -75,6 +79,8 @@ icon = true
[node name="CloseLabel" type="Label3D" parent="."] [node name="CloseLabel" type="Label3D" parent="."]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.06, -0.1, 0.001) transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.06, -0.1, 0.001)
pixel_size = 0.001 pixel_size = 0.001
render_priority = 30
outline_render_priority = 29
text = "Understood" text = "Understood"
font_size = 18 font_size = 18
outline_size = 0 outline_size = 0

View File

@ -7,7 +7,22 @@ func _init():
}) })
HomeApi.on_connect.connect(func(): HomeApi.on_connect.connect(func():
self.state.devices=await HomeApi.get_devices() var devices=await HomeApi.get_devices()
devices.sort_custom(func(a, b):
return a.values()[0]["name"].to_lower() < b.values()[0]["name"].to_lower()
)
for device in devices:
device.values()[0]["entities"].sort_custom(func(a, b):
return a.to_lower() < b.to_lower()
)
self.state.devices=devices
)
HomeApi.on_disconnect.connect(func():
self.state.devices=[]
) )
func clear(): func clear():