make entities movable

This commit is contained in:
Nitwel 2023-11-05 21:32:50 +01:00
parent 7927d00e5b
commit c2e37bc8d8
11 changed files with 69 additions and 10 deletions

View File

@ -12,7 +12,7 @@ func _ready():
sprite.set_frame(1) sprite.set_frame(1)
func _on_toggle(): func _on_click(event):
HomeAdapters.adapter.set_state(entity_id, "off" if sprite.get_frame() == 0 else "on") HomeAdapters.adapter.set_state(entity_id, "off" if sprite.get_frame() == 0 else "on")
if sprite.get_frame() == 0: if sprite.get_frame() == 0:
sprite.set_frame(1) sprite.set_frame(1)

View File

@ -1,8 +1,9 @@
[gd_scene load_steps=6 format=3 uid="uid://cw86rc42dv2d8"] [gd_scene load_steps=7 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="Texture2D" uid="uid://b72vsbcvqqxg7" path="res://assets/materials/swich_on.png" id="2_6gn2e"] [ext_resource type="Texture2D" uid="uid://b72vsbcvqqxg7" path="res://assets/materials/swich_on.png" id="2_6gn2e"]
[ext_resource type="Texture2D" uid="uid://cvc0o6dsktnvl" path="res://assets/materials/switch_off.png" id="3_qlm62"] [ext_resource type="Texture2D" uid="uid://cvc0o6dsktnvl" path="res://assets/materials/switch_off.png" id="3_qlm62"]
[ext_resource type="Script" path="res://content/functions/movable.gd" id="4_4sfxb"]
[sub_resource type="SphereShape3D" id="SphereShape3D_ukj14"] [sub_resource type="SphereShape3D" id="SphereShape3D_ukj14"]
radius = 0.1 radius = 0.1
@ -31,3 +32,6 @@ shape = SubResource("SphereShape3D_ukj14")
pixel_size = 0.0005 pixel_size = 0.0005
billboard = 1 billboard = 1
sprite_frames = SubResource("SpriteFrames_ldpuo") sprite_frames = SubResource("SpriteFrames_ldpuo")
[node name="Movable" type="Node" parent="."]
script = ExtResource("4_4sfxb")

View File

@ -12,5 +12,5 @@ func _ready():
label.text = new_state["state"] label.text = new_state["state"]
) )
func _on_toggle(): func _on_click(event):
pass pass

View File

@ -22,7 +22,7 @@ func _ready():
) )
func _on_toggle(): func _on_click(event):
HomeAdapters.adapter.set_state(entity_id, "off" if sprite.get_frame() == 0 else "on") HomeAdapters.adapter.set_state(entity_id, "off" if sprite.get_frame() == 0 else "on")
if sprite.get_frame() == 0: if sprite.get_frame() == 0:
sprite.set_frame(1) sprite.set_frame(1)

View File

@ -0,0 +1,2 @@
extends Node
class_name Function

View File

@ -0,0 +1,40 @@
@tool
extends Function
class_name Movable
var start_pos:Vector3
var start_rot:Vector3
var grab_pos:Vector3
var grab_rot:Vector3
func _on_grab_down(event):
print("grab down movable")
start_pos = get_parent().position
start_rot = get_parent().rotation
grab_pos = event.controller.position
grab_rot = event.controller.rotation
func _on_grab_move(event):
print("grab move movable")
var delta_pos = event.controller.position - grab_pos
var delta_rot = event.controller.rotation - grab_rot
print(delta_pos, delta_rot)
get_parent().position = start_pos + delta_pos
get_parent().rotation = start_rot + delta_rot
func _on_grab_up(event):
print("grab up movable")
func _get_configuration_warnings() -> PackedStringArray:
var warnings := PackedStringArray()
if get_parent() is StaticBody3D == false:
warnings.append("Movable requires a StaticBody3D as parent.")
return warnings

View File

@ -25,10 +25,15 @@ func _get_event_data():
} }
func _handle_move(): func _handle_move():
if _is_pressed == false && _is_grabbed == false:
return
var distance = ray.get_collision_point().distance_to(_click_point) var distance = ray.get_collision_point().distance_to(_click_point)
var collider = ray.get_collider() var collider = ray.get_collider()
if distance > 0.01: print(distance)
if distance > 0.02:
if _is_pressed: if _is_pressed:
_call_fn(collider, "_on_press_move") _call_fn(collider, "_on_press_move")
_moved = true _moved = true
@ -84,5 +89,12 @@ func _on_button_released(button):
_moved = false _moved = false
func _call_fn(collider: Object, fn_name: String): func _call_fn(collider: Object, fn_name: String):
if collider != null && collider.has_method(fn_name): if collider != null:
if collider.has_method(fn_name):
collider.call(fn_name, _get_event_data()) collider.call(fn_name, _get_event_data())
for child in collider.get_children():
print("child", child)
if child is Function:
print("child is function!")
_call_fn(child, fn_name)

View File

@ -5,7 +5,7 @@ extends StaticBody3D
signal click(id: String) signal click(id: String)
func _on_toggle(): func _on_click(event):
click.emit(id) click.emit(id)
func set_device_name(text): func set_device_name(text):

View File

@ -5,7 +5,7 @@ extends StaticBody3D
signal click(name: String) signal click(name: String)
func _on_toggle(): func _on_click(event):
click.emit(text) click.emit(text)
func set_entity_name(text): func set_entity_name(text):

View File

@ -7,7 +7,7 @@ var request_timeout := 10.0
var url := "ws://192.168.33.33:8123/api/websocket" var url := "ws://192.168.33.33:8123/api/websocket"
var token := "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiIzZjQ0ZGM2N2Y3YzY0MDc1OGZlMWI2ZjJlNmIxZjRkNSIsImlhdCI6MTY5ODAxMDcyOCwiZXhwIjoyMDEzMzcwNzI4fQ.K6ydLUC-4Q7BNIRCU1nWlI2s6sg9UCiOu-Lpedw2zJc" var token := "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiIzZjQ0ZGM2N2Y3YzY0MDc1OGZlMWI2ZjJlNmIxZjRkNSIsImlhdCI6MTY5ODAxMDcyOCwiZXhwIjoyMDEzMzcwNzI4fQ.K6ydLUC-4Q7BNIRCU1nWlI2s6sg9UCiOu-Lpedw2zJc"
var LOG_MESSAGES := true var LOG_MESSAGES := false
var authenticated := false var authenticated := false
var loading := true var loading := true

View File

@ -31,6 +31,7 @@ renderer/rendering_method="mobile"
textures/vram_compression/import_etc2_astc=true textures/vram_compression/import_etc2_astc=true
lights_and_shadows/directional_shadow/soft_shadow_filter_quality=4 lights_and_shadows/directional_shadow/soft_shadow_filter_quality=4
lights_and_shadows/directional_shadow/soft_shadow_filter_quality.mobile=4 lights_and_shadows/directional_shadow/soft_shadow_filter_quality.mobile=4
anti_aliasing/quality/msaa_3d=2
[xr] [xr]