make entities movable
This commit is contained in:
parent
7927d00e5b
commit
c2e37bc8d8
|
@ -12,7 +12,7 @@ func _ready():
|
|||
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")
|
||||
if sprite.get_frame() == 0:
|
||||
sprite.set_frame(1)
|
||||
|
|
|
@ -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="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="Script" path="res://content/functions/movable.gd" id="4_4sfxb"]
|
||||
|
||||
[sub_resource type="SphereShape3D" id="SphereShape3D_ukj14"]
|
||||
radius = 0.1
|
||||
|
@ -31,3 +32,6 @@ shape = SubResource("SphereShape3D_ukj14")
|
|||
pixel_size = 0.0005
|
||||
billboard = 1
|
||||
sprite_frames = SubResource("SpriteFrames_ldpuo")
|
||||
|
||||
[node name="Movable" type="Node" parent="."]
|
||||
script = ExtResource("4_4sfxb")
|
||||
|
|
|
@ -12,5 +12,5 @@ func _ready():
|
|||
label.text = new_state["state"]
|
||||
)
|
||||
|
||||
func _on_toggle():
|
||||
func _on_click(event):
|
||||
pass
|
|
@ -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")
|
||||
if sprite.get_frame() == 0:
|
||||
sprite.set_frame(1)
|
||||
|
|
2
content/functions/function.gd
Normal file
2
content/functions/function.gd
Normal file
|
@ -0,0 +1,2 @@
|
|||
extends Node
|
||||
class_name Function
|
40
content/functions/movable.gd
Normal file
40
content/functions/movable.gd
Normal 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
|
|
@ -25,10 +25,15 @@ func _get_event_data():
|
|||
}
|
||||
|
||||
func _handle_move():
|
||||
if _is_pressed == false && _is_grabbed == false:
|
||||
return
|
||||
|
||||
var distance = ray.get_collision_point().distance_to(_click_point)
|
||||
var collider = ray.get_collider()
|
||||
|
||||
if distance > 0.01:
|
||||
print(distance)
|
||||
|
||||
if distance > 0.02:
|
||||
if _is_pressed:
|
||||
_call_fn(collider, "_on_press_move")
|
||||
_moved = true
|
||||
|
@ -84,5 +89,12 @@ func _on_button_released(button):
|
|||
_moved = false
|
||||
|
||||
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())
|
||||
|
||||
for child in collider.get_children():
|
||||
print("child", child)
|
||||
if child is Function:
|
||||
print("child is function!")
|
||||
_call_fn(child, fn_name)
|
||||
|
|
|
@ -5,7 +5,7 @@ extends StaticBody3D
|
|||
|
||||
signal click(id: String)
|
||||
|
||||
func _on_toggle():
|
||||
func _on_click(event):
|
||||
click.emit(id)
|
||||
|
||||
func set_device_name(text):
|
||||
|
|
|
@ -5,7 +5,7 @@ extends StaticBody3D
|
|||
|
||||
signal click(name: String)
|
||||
|
||||
func _on_toggle():
|
||||
func _on_click(event):
|
||||
click.emit(text)
|
||||
|
||||
func set_entity_name(text):
|
||||
|
|
|
@ -7,7 +7,7 @@ var request_timeout := 10.0
|
|||
|
||||
var url := "ws://192.168.33.33:8123/api/websocket"
|
||||
var token := "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiIzZjQ0ZGM2N2Y3YzY0MDc1OGZlMWI2ZjJlNmIxZjRkNSIsImlhdCI6MTY5ODAxMDcyOCwiZXhwIjoyMDEzMzcwNzI4fQ.K6ydLUC-4Q7BNIRCU1nWlI2s6sg9UCiOu-Lpedw2zJc"
|
||||
var LOG_MESSAGES := true
|
||||
var LOG_MESSAGES := false
|
||||
|
||||
var authenticated := false
|
||||
var loading := true
|
||||
|
|
|
@ -31,6 +31,7 @@ renderer/rendering_method="mobile"
|
|||
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.mobile=4
|
||||
anti_aliasing/quality/msaa_3d=2
|
||||
|
||||
[xr]
|
||||
|
||||
|
|
Loading…
Reference in New Issue
Block a user