From 6985c7585de14d8baf3d9657287198a336d52d7d Mon Sep 17 00:00:00 2001 From: Nitwel Date: Mon, 6 Nov 2023 15:39:53 +0100 Subject: [PATCH] implement movable entities --- assets/design.afdesign | 4 ++-- content/entities/sensor/sensor.tscn | 6 +++++- content/entities/switch/switch.tscn | 6 +++++- content/functions/movable.gd | 30 ++++++----------------------- content/main.tscn | 2 +- content/raycast.gd | 4 ---- project.godot | 1 - 7 files changed, 19 insertions(+), 34 deletions(-) diff --git a/assets/design.afdesign b/assets/design.afdesign index c0044da..5e102a7 100644 --- a/assets/design.afdesign +++ b/assets/design.afdesign @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:065527a0fe822f47a1f45bed61a0dcca10f73004f9c012fb3539021ca6bd2fbd -size 2451944 +oid sha256:034fb07ad84872c283141a5f2ae34989b349cdf77328cab5458a9263f58e4967 +size 2984138 diff --git a/content/entities/sensor/sensor.tscn b/content/entities/sensor/sensor.tscn index 0cf6030..37ef248 100644 --- a/content/entities/sensor/sensor.tscn +++ b/content/entities/sensor/sensor.tscn @@ -1,6 +1,7 @@ -[gd_scene load_steps=3 format=3 uid="uid://xsiy71rsqulj"] +[gd_scene load_steps=4 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/functions/movable.gd" id="2_fpq5q"] [sub_resource type="SphereShape3D" id="SphereShape3D_r20gc"] radius = 0.1 @@ -13,3 +14,6 @@ shape = SubResource("SphereShape3D_r20gc") [node name="Label" type="Label3D" parent="."] text = "some text" + +[node name="Movable" type="Node" parent="."] +script = ExtResource("2_fpq5q") diff --git a/content/entities/switch/switch.tscn b/content/entities/switch/switch.tscn index 4babc8f..a6cedf4 100644 --- a/content/entities/switch/switch.tscn +++ b/content/entities/switch/switch.tscn @@ -1,8 +1,9 @@ -[gd_scene load_steps=6 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="Texture2D" uid="uid://b72vsbcvqqxg7" path="res://assets/materials/swich_on.png" id="1_w68gw"] [ext_resource type="Texture2D" uid="uid://cvc0o6dsktnvl" path="res://assets/materials/switch_off.png" id="2_86ba1"] +[ext_resource type="Script" path="res://content/functions/movable.gd" id="4_6xr03"] [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_6xr03") diff --git a/content/functions/movable.gd b/content/functions/movable.gd index 0f022b2..a729fe7 100644 --- a/content/functions/movable.gd +++ b/content/functions/movable.gd @@ -2,33 +2,15 @@ extends Function class_name Movable -var start_pos:Vector3 -var start_rot:Vector3 - -var grab_pos:Vector3 -var grab_rot:Vector3 +var hit_node := Node3D.new() 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 - + event.controller.add_child(hit_node) + hit_node.global_position = get_parent().global_position 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") + get_parent().global_position = hit_node.global_position + get_parent().global_rotation = hit_node.global_rotation func _get_configuration_warnings() -> PackedStringArray: var warnings := PackedStringArray() @@ -37,4 +19,4 @@ func _get_configuration_warnings() -> PackedStringArray: warnings.append("Movable requires a StaticBody3D as parent.") - return warnings \ No newline at end of file + return warnings diff --git a/content/main.tscn b/content/main.tscn index 5a04593..1da5ecb 100644 --- a/content/main.tscn +++ b/content/main.tscn @@ -57,7 +57,7 @@ script = ExtResource("1_tsqxc") ray = NodePath("RayCast3D") [node name="RayCast3D" type="RayCast3D" parent="XROrigin3D/XRControllerRight/Raycast"] -transform = Transform3D(1.91069e-15, 4.37114e-08, 1, 1, -4.37114e-08, 0, 4.37114e-08, 1, -4.37114e-08, 0, 0, 0) +transform = Transform3D(-2.58078e-11, 4.3714e-08, 1, 1, -4.37117e-08, 9.27469e-12, 4.37112e-08, 1, -4.3714e-08, 0, 0, 0) target_position = Vector3(0, -5, 0) [node name="StartXR" parent="." instance=ExtResource("1_i4c04")] diff --git a/content/raycast.gd b/content/raycast.gd index 6d7d3bb..03a3c32 100644 --- a/content/raycast.gd +++ b/content/raycast.gd @@ -31,8 +31,6 @@ func _handle_move(): var distance = ray.get_collision_point().distance_to(_click_point) var collider = ray.get_collider() - print(distance) - if distance > 0.02: if _is_pressed: _call_fn(collider, "_on_press_move") @@ -94,7 +92,5 @@ func _call_fn(collider: Object, fn_name: String): 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) diff --git a/project.godot b/project.godot index 232d0bb..79aa4f7 100644 --- a/project.godot +++ b/project.godot @@ -31,7 +31,6 @@ 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]