continue updating the ui

This commit is contained in:
Nitwel 2024-04-23 22:11:18 +02:00
parent e1a8424cdd
commit 226c3cf5a7
22 changed files with 465 additions and 313 deletions

View File

@ -1,6 +1,6 @@
shader_type spatial; 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; group_uniforms Color;
uniform vec4 color : source_color = vec4(1.0, 1.0, 1.0, 0.3); 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_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_in: hint_range(0.0, 0.5) = 0.005;
uniform float border_fade_out: hint_range(0.0, 0.5) = 0.0; 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; group_uniforms Roughness;
uniform float roughness : hint_range(0.0, 1.0) = 0.3; uniform float roughness : hint_range(0.0, 1.0) = 0.3;

View File

@ -76,16 +76,16 @@ min_camera_height = 0.01
xr_origin = NodePath("../XROrigin3D") xr_origin = NodePath("../XROrigin3D")
[node name="Menu" parent="." instance=ExtResource("8_du83w")] [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")] [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="Rooms" type="Node3D" parent="."]
[node name="House" parent="." instance=ExtResource("9_np6mw")] [node name="House" parent="." instance=ExtResource("9_np6mw")]
[node name="Onboarding" parent="." instance=ExtResource("12_uq2nj")] [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"] [editable path="XROrigin3D/XRControllerLeft"]

View File

@ -8,15 +8,15 @@
[ext_resource type="Script" path="res://content/functions/occludable.gd" id="6_y4sdl"] [ext_resource type="Script" path="res://content/functions/occludable.gd" id="6_y4sdl"]
[sub_resource type="BoxShape3D" id="BoxShape3D_k5ib7"] [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"] [sub_resource type="ShaderMaterial" id="ShaderMaterial_x72nd"]
render_priority = 0 render_priority = -1
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)
shader_parameter/edge_color = Color(0, 0, 0, 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_size = 0.001
shader_parameter/border_fade_in = 0.005 shader_parameter/border_fade_in = 0.005
shader_parameter/border_fade_out = 0.0 shader_parameter/border_fade_out = 0.0
@ -25,7 +25,7 @@ shader_parameter/roughness = 0.3
shader_parameter/grain_amount = 0.02 shader_parameter/grain_amount = 0.02
[sub_resource type="QuadMesh" id="QuadMesh_88pdc"] [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"]] [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) 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") script = ExtResource("1_maojw")
[node name="Backspace" parent="." instance=ExtResource("1_xdpwr")] [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 focusable = false
label = "backspace" label = "backspace"
icon = true icon = true
@ -42,34 +42,32 @@ echo = true
metadata/key = 4194308 metadata/key = 4194308
[node name="Caps" parent="." instance=ExtResource("1_xdpwr")] [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 focusable = false
label = "keyboard_capslock" label = "keyboard_capslock"
icon = true icon = true
toggleable = true toggleable = true
[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.349964, 0, 0.089964) 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
[node name="Keys" type="Node3D" parent="."] [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") script = ExtResource("3_mx544")
columns = 11 columns = 11
depth_gap = 0.06 gaps = Vector2(0.01, 0.01)
size = Vector3(0.6, 1, 1) size = Vector3(0.6, 0.15, 1)
[node name="Movable" type="Node" parent="."] [node name="Movable" type="Node" parent="."]
script = ExtResource("4_86fct") script = ExtResource("4_86fct")
[node name="CollisionShape3D" type="CollisionShape3D" parent="."] [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") shape = SubResource("BoxShape3D_k5ib7")
[node name="MeshInstance3D" type="MeshInstance3D" parent="."] [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") material_override = SubResource("ShaderMaterial_x72nd")
mesh = SubResource("QuadMesh_88pdc") mesh = SubResource("QuadMesh_88pdc")

View File

@ -1,6 +1,6 @@
@tool @tool
extends Node3D extends Container3D
class_name Button3D class_name Button3D
signal on_button_down() signal on_button_down()
@ -12,8 +12,13 @@ const ECHO_WAIT_INITIAL = 0.5
const ECHO_WAIT_REPEAT = 0.1 const ECHO_WAIT_REPEAT = 0.1
@onready var body: StaticBody3D = $Body @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 label_node: Label3D = $Body/Label
@onready var finger_area: Area3D = $FingerArea @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: @export var focusable: bool = true:
set(value): set(value):
@ -72,6 +77,8 @@ func _ready():
if initial_active: if initial_active:
active = true active = true
_update()
Update.props(self, ["active", "external_value", "icon", "label", "font_size", "disabled"]) Update.props(self, ["active", "external_value", "icon", "label", "font_size", "disabled"])
if echo: if echo:
@ -92,8 +99,8 @@ func update_animation(value: float):
var tween = create_tween() var tween = create_tween()
tween.set_parallel(true) tween.set_parallel(true)
tween.tween_property(body, "scale:y", lerpf(1.0, 0.5, value), 0.2) tween.tween_property(body, "scale:z", 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, "position:z", lerpf(size.z / 2, size.z / 4, value), 0.2)
func _on_press_down(event): func _on_press_down(event):
if disabled: if disabled:
@ -181,12 +188,25 @@ func _touch_change(event: EventTouch):
var pos = Vector3(0, 1, 0) var pos = Vector3(0, 1, 0)
for finger in event.fingers: for finger in event.fingers:
var finger_pos = to_local(finger.area.global_position) var finger_pos = to_local(finger.area.global_position)
if pos.y > finger_pos.y: if pos.z > finger_pos.z:
pos = finger_pos pos = finger_pos
var button_height = 0.2 var button_height = 0.2
var button_center = 0.1 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) 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)

View File

@ -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="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"] [ext_resource type="Shader" path="res://assets/materials/glass.gdshader" id="4_2xlpt"]
[sub_resource type="ShaderMaterial" id="ShaderMaterial_oqan0"] [sub_resource type="ShaderMaterial" id="ShaderMaterial_oqan0"]
render_priority = 0 render_priority = -1
shader = ExtResource("4_2xlpt") shader = ExtResource("4_2xlpt")
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)
shader_parameter/edge_color = Color(0, 0, 0, 1) shader_parameter/edge_color = Color(0, 0, 0, 1)
shader_parameter/size = Vector2(0.1, 0.1) shader_parameter/size = Vector2(1, 1)
shader_parameter/border_size = 0.001 shader_parameter/border_size = 0.01
shader_parameter/border_fade_in = 0.005 shader_parameter/border_fade_in = 0.05
shader_parameter/border_fade_out = 0.0 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/roughness = 0.3
shader_parameter/grain_amount = 0.02 shader_parameter/grain_amount = 0.02
[sub_resource type="QuadMesh" id="QuadMesh_bt05p"] [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"] [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"] [sub_resource type="BoxShape3D" id="BoxShape3D_bqjii"]
size = Vector3(0.0501598, 0.0390937, 0.0501598) size = Vector3(0.05, 0.05, 0.03)
[sub_resource type="BoxShape3D" id="BoxShape3D_vkbuh"]
size = Vector3(0.05, 0.03, 0.05)
[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)
[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.01, 0) transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0.005)
collision_layer = 2 collision_layer = 2
collision_mask = 0 collision_mask = 0
[node name="MeshInstance3D" type="MeshInstance3D" parent="Body"] [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") material_override = SubResource("ShaderMaterial_oqan0")
mesh = SubResource("QuadMesh_bt05p") mesh = SubResource("QuadMesh_bt05p")
skeleton = NodePath("../..") skeleton = NodePath("../..")
@ -48,8 +46,9 @@ skeleton = NodePath("../..")
shape = SubResource("BoxShape3D_xwopm") shape = SubResource("BoxShape3D_xwopm")
[node name="Label" type="Label3D" parent="Body"] [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 pixel_size = 0.001
double_sided = false
text = "Example Text" text = "Example Text"
font_size = 10 font_size = 10
outline_size = 0 outline_size = 0
@ -57,19 +56,18 @@ autowrap_mode = 3
width = 50.0 width = 50.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.0101447, 0) transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, -0.015)
collision_layer = 4 collision_layer = 4
collision_mask = 0 collision_mask = 0
monitoring = false monitoring = false
[node name="CollisionShape3D" type="CollisionShape3D" parent="FingerArea"] [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") shape = SubResource("BoxShape3D_bqjii")
[node name="TouchBody" type="StaticBody3D" parent="."] [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_layer = 4
collision_mask = 0 collision_mask = 0
[node name="CollisionShape3D" type="CollisionShape3D" parent="TouchBody"] [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_xwopm")
shape = SubResource("BoxShape3D_vkbuh")

View File

@ -1,15 +1,18 @@
@tool
extends Node3D extends Node3D
class_name Container3D 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): set(value):
size = value size = Vector3(max(0, value.x), max(0, value.y), max(0, value.z))
_update_container()
@export var padding: Vector4 = Vector4(0, 0, 0, 0) : if !is_inside_tree(): return
set(value):
padding = value
_update_container()
func _update_container(): _update()
func _ready():
_update()
func _update():
pass pass

View File

@ -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)

View File

@ -2,41 +2,46 @@
extends Container3D extends Container3D
class_name GridContainer3D class_name GridContainer3D
@export var columns := 5:
@export var columns := 5 :
set(value): set(value):
columns = value columns = value
_update_container() _update()
@export var rows := 1 : @export var gaps := Vector2(0, 0):
set(value): set(value):
rows = value gaps = value
_update_container() _update()
@export var depth_gap := 1.0 :
set(value):
depth_gap = value
_update_container()
func _ready(): func _ready():
_update_container() _update()
func get_gaps() -> Vector3: child_entered_tree.connect(func(_arg):
return Vector3( _update()
(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_exiting_tree.connect(func(_arg):
_update()
)
func _update_container(): child_order_changed.connect(func():
var i := 0 _update()
var gaps := get_gaps() )
func _update():
var column := 0
var row_pos := 0.0
var column_max_height := 0.0
for child in get_children(): for child in get_children():
var x := (i % columns) * gaps.x if child is Container3D == false:
var y := ((i / columns) % rows) * gaps.y continue
var z := (i / (columns * rows)) * gaps.z
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
child.set_position(Vector3(x, -y, z))
i += 1

View File

@ -1,24 +1,15 @@
@tool @tool
extends StaticBody3D extends Container3D
class_name Input3D class_name Input3D
var text_handler = preload ("res://content/ui/components/input/text_handler.gd").new() var text_handler = preload ("res://content/ui/components/input/text_handler.gd").new()
@onready var caret: MeshInstance3D = $Label/Caret @onready var caret: MeshInstance3D = $Body/Label/Caret
@onready var mesh_box: MeshInstance3D = $Box @onready var mesh_box: MeshInstance3D = $Body/Box
@onready var collision: CollisionShape3D = $Collision @onready var body: StaticBody3D = $Body
@onready var collision: CollisionShape3D = $Body/Collision
@onready var animation: AnimationPlayer = $AnimationPlayer @onready var animation: AnimationPlayer = $AnimationPlayer
@onready var label: Label3D = $Label @onready var label: Label3D = $Body/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
@export var text: String: @export var text: String:
set(value): set(value):
@ -48,10 +39,11 @@ var keyboard_input: bool = false
var input_plane = Plane(Vector3.UP, Vector3.ZERO) var input_plane = Plane(Vector3.UP, Vector3.ZERO)
func _ready(): func _ready():
Update.props(self, ["text", "disabled", "width"])
text_handler.label = label text_handler.label = label
Update.props(self, ["text", "disabled", "width"])
_update()
if Engine.is_editor_hint(): if Engine.is_editor_hint():
return return
@ -156,3 +148,13 @@ func _draw_debug_text_gaps():
label.to_global(Vector3(offset, 0.01, 0)), label.to_global(Vector3(offset, 0.01, 0)),
Color(1, 0, 0) if i != text_handler.overflow_index else Color(0, 1, 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)

View File

@ -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="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="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"] [sub_resource type="ShaderMaterial" id="ShaderMaterial_c5qdm"]
resource_local_to_scene = true render_priority = -1
size = Vector3(0.15, 0.006, 0.03) 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"] [sub_resource type="BoxShape3D" id="BoxShape3D_x4yp8"]
resource_local_to_scene = true 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"] [sub_resource type="BoxMesh" id="BoxMesh_2736g"]
size = Vector3(0.001, 0.02, 0.001) size = Vector3(0.001, 0.02, 0.001)
@ -52,36 +68,44 @@ _data = {
"blink": SubResource("Animation_8ny1h") "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_layer = 6
collision_mask = 0 collision_mask = 0
script = ExtResource("1_uml3t")
text = "Example"
[node name="Box" type="MeshInstance3D" parent="."] [node name="Box" type="MeshInstance3D" parent="Body"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.003, 0) transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0.005)
material_override = ExtResource("1_0kd7r") material_override = SubResource("ShaderMaterial_c5qdm")
mesh = SubResource("BoxMesh_kjbca") mesh = SubResource("QuadMesh_5rrua")
[node name="Collision" type="CollisionShape3D" parent="."] [node name="Collision" type="CollisionShape3D" parent="Body"]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.003, 0)
shape = SubResource("BoxShape3D_x4yp8") shape = SubResource("BoxShape3D_x4yp8")
[node name="Label" type="Label3D" parent="."] [node name="Label" type="Label3D" parent="Body"]
transform = Transform3D(1, 0, 0, 0, -4.37114e-08, 1, 0, -1, -4.37114e-08, -0.073, 0.00618291, 0) 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
text = "Example" double_sided = false
alpha_cut = 2
text = "Example Text"
font = ExtResource("3_ij5fh") font = ExtResource("3_ij5fh")
font_size = 18 font_size = 18
outline_size = 0 outline_size = 0
horizontal_alignment = 0 horizontal_alignment = 0
[node name="Caret" type="MeshInstance3D" parent="Label"] [node name="Caret" type="MeshInstance3D" parent="Body/Label"]
visible = false visible = false
material_override = SubResource("StandardMaterial3D_x1ra7")
mesh = SubResource("BoxMesh_2736g") mesh = SubResource("BoxMesh_2736g")
skeleton = NodePath("../..") skeleton = NodePath("../..")
[node name="AnimationPlayer" type="AnimationPlayer" parent="."] [node name="AnimationPlayer" type="AnimationPlayer" parent="."]
root_node = NodePath("../Body")
libraries = { libraries = {
"": SubResource("AnimationLibrary_1sy4t") "": SubResource("AnimationLibrary_1sy4t")
} }

View File

@ -5,7 +5,12 @@ const FontTools = preload ("res://lib/utils/font_tools.gd")
var label: Label3D var label: Label3D
var text: String = "" 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 gap_offsets = null
var overflow_index: int = -1 var overflow_index: int = -1
var char_offset: int = 0 var char_offset: int = 0
@ -13,9 +18,6 @@ var caret_position: int = 3:
set(value): set(value):
caret_position = clampi(value, 0, text.length()) caret_position = clampi(value, 0, text.length())
func set_width(value: float):
width = value
func set_text(value: String, insert: bool=false): func set_text(value: String, insert: bool=false):
var old_text = text var old_text = text
text = value text = value

View File

@ -10,7 +10,7 @@ cull_mode = 2
shading_mode = 0 shading_mode = 0
albedo_color = Color(0.109804, 0.721569, 0.262745, 1) 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 = [{ _surfaces = [{
"aabb": AABB(-0.000587015, -0.000596339, 0.0005, 0.501171, 0.301189, 1e-05), "aabb": AABB(-0.000587015, -0.000596339, 0.0005, 0.501171, 0.301189, 1e-05),
"format": 34359742465, "format": 34359742465,
@ -43,7 +43,7 @@ script = ExtResource("1_n7fu8")
[node name="Line" type="MeshInstance3D" parent="."] [node name="Line" type="MeshInstance3D" parent="."]
material_override = SubResource("StandardMaterial3D_20gpn") material_override = SubResource("StandardMaterial3D_20gpn")
mesh = SubResource("ArrayMesh_mec1l") mesh = SubResource("ArrayMesh_5xylt")
[node name="Plane" type="MeshInstance3D" parent="."] [node name="Plane" type="MeshInstance3D" parent="."]
transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.25, 0.15, -0.001) transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.25, 0.15, -0.001)

View File

@ -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) transform = Transform3D(0.5, 0, 0, 0, 0.5, 0, 0, 0, 0.5, 0.12, -0.003, -0.02)
label = "close" label = "close"
icon = true icon = true
size = Vector3(1, 1, 1)
[node name="Timer" type="Timer" parent="AnimationNode"] [node name="Timer" type="Timer" parent="AnimationNode"]
wait_time = 3.0 wait_time = 3.0

View File

@ -1,5 +1,5 @@
@tool @tool
extends Node3D extends Container3D
class_name Slider3D class_name Slider3D
@export var min: float = 0.0: @export var min: float = 0.0:
@ -42,32 +42,11 @@ class_name Slider3D
if !is_inside_tree(): return if !is_inside_tree(): return
label.text = str(value) + " " + label_unit 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 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 area_collision_shape: CollisionShape3D = $Area3D/CollisionShape3D
@onready var slider_knob: MeshInstance3D = $Knob @onready var slider_knob: MeshInstance3D = $Knob
signal on_value_changed(value: float) signal on_value_changed(value: float)
@ -78,7 +57,7 @@ func _ready():
Update.props(self, ["value", "show_label", "label_unit"]) Update.props(self, ["value", "show_label", "label_unit"])
_update_slider() _update_slider()
_update_shape() _update()
move_plane = Plane(Vector3.UP, Vector3(0, size.y / 200, 0)) move_plane = Plane(Vector3.UP, Vector3(0, size.y / 200, 0))
func _on_press_down(event: EventPointer): func _on_press_down(event: EventPointer):
@ -91,9 +70,7 @@ func _on_touch_enter(event: EventTouch):
_handle_touch(event) _handle_touch(event)
func _get_slider_min_max(): func _get_slider_min_max():
var cutout_radius = (size.z - cutout_border * 2) / 2 return Vector2( - size.x / 2 + 0.01, size.x / 2 - 0.01)
return Vector2( - size.x / 2 + cutout_border + cutout_radius, size.x / 2 - cutout_border - cutout_radius) / 100
func _handle_press(event: EventPointer): func _handle_press(event: EventPointer):
var ray_pos = event.ray.global_position 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) slider_knob.position.x = lerp(min_max.x, min_max.y, click_percent)
func _update_shape(): func _update():
outside_rod.size = size _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, 0.01)
area_collision_shape.shape.size = Vector3(size.x, size.y * 2, size.z) * 0.01 area_collision_shape.position = Vector3(0, 0, size.z + 0.005)
area_collision_shape.position = Vector3(0, size.y, 0) * 0.01
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( slider_knob.position.z = size.z + 0.002
size.x - cutout_border * 2 - (cutout_width), slider_knob.mesh.size = Vector2(size.y * 0.75, size.y * 0.75)
cutout_depth, slider_knob.material_override.set_shader_parameter("size", Vector2(size.y * 7.5, size.y * 7.5))
cutout_width
)
cutout.position = Vector3( label.position = Vector3(size.x / 2 + 0.005, 0, size.z)
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
)

View File

@ -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"] [ext_resource type="Script" path="res://content/ui/components/slider/slider.gd" id="1_ylune"]
[ext_resource type="Shader" path="res://assets/materials/glass.gdshader" id="2_by0d8"]
[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
[sub_resource type="BoxShape3D" id="BoxShape3D_h1mn1"] [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"] [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"] [node name="Slider" type="Node3D"]
script = ExtResource("1_ylune") script = ExtResource("1_ylune")
size = Vector3(20, 0.4, 1) show_label = true
cutout_border = 0.2 size = Vector3(0.15, 0.02, 0.01)
cutout_depth = 0.36
[node name="Rod" type="CSGCombiner3D" parent="."] [node name="Body" type="StaticBody3D" 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="."]
collision_layer = 6 collision_layer = 6
collision_mask = 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") 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="."] [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) transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.08, 0, 0.01)
visible = false
pixel_size = 0.001 pixel_size = 0.001
text = "0.2 " text = "0.2 "
font_size = 10 font_size = 10
outline_size = 4 outline_size = 4
horizontal_alignment = 0 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="."] [node name="Area3D" type="Area3D" parent="."]
collision_layer = 4 collision_layer = 4
collision_mask = 4 collision_mask = 4
[node name="CollisionShape3D" type="CollisionShape3D" parent="Area3D"] [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") shape = SubResource("BoxShape3D_s64dk")

View File

@ -1,4 +1,5 @@
extends Node3D @tool
extends FlexContainer3D
class_name Tabs3D class_name Tabs3D
signal on_select(selected: int) signal on_select(selected: int)
@ -8,6 +9,11 @@ var selected = R.state(null)
@export var initial_selected: Node3D @export var initial_selected: Node3D
func _ready(): func _ready():
_update()
if Engine.is_editor_hint():
return
if initial_selected: if initial_selected:
selected.value = initial_selected selected.value = initial_selected

View File

@ -114,8 +114,6 @@ func render_devices():
) )
devices_node.add_child(button_instance) devices_node.add_child(button_instance)
devices_node._update_container()
func render_entities(): func render_entities():
var entities = get_page() var entities = get_page()
@ -135,8 +133,6 @@ func render_entities():
) )
devices_node.add_child(button_instance) devices_node.add_child(button_instance)
devices_node._update_container()
func _on_device_click(device_id): func _on_device_click(device_id):
selected_device = device_id selected_device = device_id
last_device_page = page last_device_page = page

View File

@ -8,26 +8,26 @@
script = ExtResource("1_34cbn") script = ExtResource("1_34cbn")
[node name="Devices" type="Node3D" parent="."] [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") script = ExtResource("3_0xvyw")
depth_gap = 0.06 gaps = Vector2(0.01, 0.01)
size = Vector3(0.24, 0.1, 0.1) size = Vector3(0.24, 0.1, 0.1)
[node name="PageNumberLabel" type="Label3D" parent="."] [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 pixel_size = 0.001
text = "0 / 0" text = "0 / 0"
font_size = 18 font_size = 18
outline_size = 0 outline_size = 0
[node name="Buttons" type="Node3D" parent="."] [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")] [node name="NextPageButton" parent="Buttons" instance=ExtResource("4_tvimg")]
label = "navigate_next" label = "navigate_next"
icon = true icon = true
[node name="PreviousPageButton" parent="Buttons" instance=ExtResource("4_tvimg")] [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" label = "navigate_before"
icon = true icon = true

View File

@ -44,6 +44,4 @@ func move_into_view():
var camera_transform = main.camera.global_transform var camera_transform = main.camera.global_transform
camera_transform.origin -= camera_transform.basis.z * 0.5 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 global_transform = camera_transform

View File

@ -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/ui/menu/menu.gd" id="1_ng4u3"]
[ext_resource type="Script" path="res://content/functions/movable.gd" id="2_8coxu"] [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"] [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"] [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"] [sub_resource type="ShaderMaterial" id="ShaderMaterial_du6qr"]
size = Vector3(0.3, 0.0264844, 0.3) render_priority = -3
[sub_resource type="ShaderMaterial" id="ShaderMaterial_mhqg4"]
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)
shader_parameter/edge_color = Color(0, 0, 0, 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_size = 0.001
shader_parameter/border_fade_in = 0.005 shader_parameter/border_fade_in = 0.005
shader_parameter/border_fade_out = 0.0 shader_parameter/border_fade_out = 0.0
@ -33,7 +30,24 @@ 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"]
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"] [sub_resource type="Animation" id="Animation_61md4"]
length = 0.001 length = 0.001
@ -178,71 +192,81 @@ 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.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") shape = SubResource("BoxShape3D_e1esh")
[node name="Movable" type="Node" parent="."] [node name="Movable" type="Node" parent="."]
script = ExtResource("2_8coxu") script = ExtResource("2_8coxu")
[node name="AnimationContainer" type="StaticBody3D" parent="."] [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_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.21, -0.00824219, 0.15) transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.2, -0.15, 0)
shape = SubResource("BoxShape3D_6xn1i") shape = SubResource("BoxShape3D_e1esh")
[node name="Background" type="MeshInstance3D" parent="AnimationContainer"] [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) transform = Transform3D(1, 0, 0, 0, 1, 1.06581e-14, 0, -1.06581e-14, 1, 0.23, -0.15, 0)
material_override = SubResource("ShaderMaterial_mhqg4") material_override = SubResource("ShaderMaterial_du6qr")
mesh = SubResource("QuadMesh_4bh1v") mesh = SubResource("QuadMesh_4bh1v")
skeleton = NodePath("../..") 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")] [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") script = ExtResource("4_eavfx")
initial_selected = NodePath("View") 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")] [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" label = "visibility"
icon = true icon = true
toggleable = true toggleable = true
disabled = true
[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.03, 0, 0.09) 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
[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.03, 0, 0.15) 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
[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.03, 0, 0.21) 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
[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.03, 0, 0.27) 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
[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.06, 0, 0) transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.01, 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")]
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")] [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
@ -254,11 +278,11 @@ visible = false
visible = false visible = false
[node name="NotifyPlace" type="Marker3D" parent="AnimationContainer"] [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 gizmo_extents = 0.02
[node name="KeyboardPlace" type="Marker3D" parent="AnimationContainer"] [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 gizmo_extents = 0.02
[node name="ImmersiveHomePanels" type="MeshInstance3D" parent="."] [node name="ImmersiveHomePanels" type="MeshInstance3D" parent="."]

View File

@ -26,11 +26,10 @@ script = ExtResource("5_ddrep")
initial_selected = NodePath("Overview") initial_selected = NodePath("Overview")
[node name="Overview" parent="Interface/Tabs3D" instance=ExtResource("4_cghmp")] [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" label = "Overview"
[node name="Rooms" parent="Interface/Tabs3D" instance=ExtResource("4_cghmp")] [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" label = "Rooms"
[node name="TabsContent3D" type="Node3D" parent="Interface" node_paths=PackedStringArray("tabs")] [node name="TabsContent3D" type="Node3D" parent="Interface" node_paths=PackedStringArray("tabs")]

View File

@ -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="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="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="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"] [sub_resource type="ShaderMaterial" id="ShaderMaterial_e5hvo"]
size = Vector3(0.3, 0.01, 0.3) 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"] [node name="ViewMenu" type="Node3D"]
script = ExtResource("1_hxajx") 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="Content" type="Node3D" parent="."]
[node name="MiniView" parent="Content" instance=ExtResource("2_qan1b")] [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" label = "view_comfy"
icon = true icon = true
toggleable = true toggleable = true
[node name="MiniViewLabel" type="Label3D" parent="Content"] [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 pixel_size = 0.001
double_sided = false
text = "Mini View" text = "Mini View"
font_size = 18 font_size = 18
outline_size = 0 outline_size = 0
horizontal_alignment = 0 horizontal_alignment = 0
[node name="HeatMap" parent="Content" instance=ExtResource("2_qan1b")] [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" label = "device_thermostat"
icon = true icon = true
toggleable = true toggleable = true
[node name="HeatMapLabel" type="Label3D" parent="Content"] [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 pixel_size = 0.001
double_sided = false
text = "Heat Map" text = "Heat Map"
font_size = 18 font_size = 18
outline_size = 0 outline_size = 0
horizontal_alignment = 0 horizontal_alignment = 0
[node name="HumidityMap" parent="Content" instance=ExtResource("2_qan1b")] [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" label = "humidity_mid"
icon = true icon = true
toggleable = true toggleable = true
[node name="HumidityMapLabel" type="Label3D" parent="Content"] [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 pixel_size = 0.001
double_sided = false
text = "Humidity Map" text = "Humidity Map"
font_size = 18 font_size = 18
outline_size = 0 outline_size = 0
horizontal_alignment = 0 horizontal_alignment = 0
[node name="MinSlider" parent="Content" instance=ExtResource("4_d3xhb")] [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 value = 0.0
step = 1.0 step = 1.0
show_label = true
size = Vector3(10, 0.4, 1)
[node name="MinValue" type="Label3D" parent="Content"] [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 pixel_size = 0.001
double_sided = false
text = "Min Value" text = "Min Value"
font_size = 18 font_size = 18
outline_size = 0 outline_size = 0
horizontal_alignment = 0 horizontal_alignment = 0
[node name="MaxSlider" parent="Content" instance=ExtResource("4_d3xhb")] [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 value = 0.0
step = 1.0 step = 1.0
show_label = true
size = Vector3(10, 0.4, 1)
[node name="MaxValue" type="Label3D" parent="Content"] [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 pixel_size = 0.001
double_sided = false
text = "Max Value" text = "Max Value"
font_size = 18 font_size = 18
outline_size = 0 outline_size = 0
horizontal_alignment = 0 horizontal_alignment = 0
[node name="OpacitySlider" parent="Content" instance=ExtResource("4_d3xhb")] [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 max = 100.0
value = 30.0 value = 30.0
step = 10.0 step = 10.0
show_label = true
label_unit = "%" label_unit = "%"
size = Vector3(10, 0.4, 1)
[node name="OpacityLabel" type="Label3D" parent="Content"] [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 pixel_size = 0.001
double_sided = false
text = "Opacity" text = "Opacity"
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_e5hvo")
mesh = SubResource("QuadMesh_1j6jf")
skeleton = NodePath("../..")