diff --git a/content/main.gd b/content/main.gd index d42c1a7..9feab7e 100644 --- a/content/main.gd +++ b/content/main.gd @@ -11,8 +11,6 @@ var sky_passthrough = preload ("res://assets/materials/sky_passthrough.material" @onready var menu = $Menu @onready var keyboard = $Keyboard -var last_room = null - func _ready(): # In case we're running on the headset, use the passthrough sky if OS.get_name() == "Android": @@ -84,17 +82,6 @@ func _emit_action(name: String, value, right_controller: bool=true): TYPE_FLOAT, TYPE_VECTOR2: EventSystem.emit("action_value", event) -func _physics_process(delta): - var room = House.body.find_room_at(camera.global_position) - - if room != last_room: - if room: - HomeApi.api.update_room(room.name) - last_room = room - else: - HomeApi.api.update_room("outside") - last_room = null - func _process(delta): if OS.get_name() != "Android": diff --git a/content/main.tscn b/content/main.tscn index 3ef5a93..421b116 100644 --- a/content/main.tscn +++ b/content/main.tscn @@ -1,9 +1,10 @@ -[gd_scene load_steps=15 format=3 uid="uid://eecv28y6jxk4"] +[gd_scene load_steps=16 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="Script" path="res://content/main.gd" id="1_uvrd4"] [ext_resource type="PackedScene" uid="uid://b30w6tywfj4fp" path="res://content/system/controller_left/controller_left.tscn" id="2_2lraw"] [ext_resource type="PackedScene" uid="uid://d3f8glx1xgm5w" path="res://content/system/raycast/raycast.tscn" id="3_67lii"] +[ext_resource type="PackedScene" uid="uid://b2kjh1fpjptdr" path="res://content/system/camera/camera.tscn" id="3_rj4ac"] [ext_resource type="PackedScene" uid="uid://bsx12q23v8apy" path="res://content/system/hands/hands.tscn" id="4_v8xu6"] [ext_resource type="PackedScene" uid="uid://ctltchlf2j2r4" path="res://addons/xr-simulator/XRSimulator.tscn" id="5_3qc8g"] [ext_resource type="Material" uid="uid://bf5ina366dwm6" path="res://assets/materials/sky.material" id="5_wgwf8"] @@ -46,10 +47,7 @@ shadow_enabled = true [node name="XROrigin3D" type="XROrigin3D" parent="."] -[node name="XRCamera3D" type="XRCamera3D" parent="XROrigin3D"] -transform = Transform3D(0.999999, 0.00106283, -0.000420545, -0.00106267, 0.999999, 0.000379457, 0.000420948, -0.000378989, 1, 0.0356617, 0.71033, 0.00564247) -cull_mask = 524287 -current = true +[node name="XRCamera3D" parent="XROrigin3D" instance=ExtResource("3_rj4ac")] [node name="XRControllerLeft" parent="XROrigin3D" instance=ExtResource("2_2lraw")] transform = Transform3D(0.999999, -1.39633e-11, 0, 9.48075e-12, 1, 0, 0, 0, 1, -0.355145, 0.550439, -0.477945) diff --git a/content/system/camera/camera.gd b/content/system/camera/camera.gd new file mode 100644 index 0000000..a6b7e01 --- /dev/null +++ b/content/system/camera/camera.gd @@ -0,0 +1,18 @@ +extends XRCamera3D + +var last_room = null + +func _physics_process(_delta): + if HomeApi.api.has_integration(): + update_room() + +func update_room(): + var room = House.body.find_room_at(global_position) + + if room != last_room: + if room: + HomeApi.api.update_room(room.name) + last_room = room + else: + HomeApi.api.update_room("outside") + last_room = null \ No newline at end of file diff --git a/content/system/camera/camera.tscn b/content/system/camera/camera.tscn new file mode 100644 index 0000000..50c955b --- /dev/null +++ b/content/system/camera/camera.tscn @@ -0,0 +1,6 @@ +[gd_scene format=3 uid="uid://b2kjh1fpjptdr"] + +[node name="XRCamera3D" type="XRCamera3D"] +transform = Transform3D(0.999999, 0.00106283, -0.000420545, -0.00106267, 0.999999, 0.000379457, 0.000420948, -0.000378989, 1, 0.0356617, 0.71033, 0.00564247) +cull_mask = 524287 +current = true diff --git a/lib/home_apis/hass_ws/hass.gd b/lib/home_apis/hass_ws/hass.gd index fd6a16d..2755574 100644 --- a/lib/home_apis/hass_ws/hass.gd +++ b/lib/home_apis/hass_ws/hass.gd @@ -255,6 +255,9 @@ func set_state(entity: String, state: String, attributes: Dictionary={}): } }) +func has_integration(): + return integration_handler.integration_exists + func update_room(room: String): var response = await send_request_packet({ "type": "immersive_home/update",