using Godot; using System.Collections.Generic; public partial class XRHand : XRController3D { List joints = new(); [Export] StaticBody3D body; [Export] float strength = 1.0f; public void _Update(float delta) { if ((bool)GetInput("trigger_click")) { var query = new PhysicsShapeQueryParameters3D(); var sphere = new SphereShape3D(); sphere.Radius = 0.1f; query.Shape = sphere; query.CollideWithBodies = true; query.CollideWithAreas = false; query.Transform = ((Node3D)GetParent()).GlobalTransform; var overlaps = GetWorld3D().DirectSpaceState.IntersectShape(query); foreach (var fuckingcollider in overlaps) { var collider = (Node3D)fuckingcollider["collider"]; Generic6DofJoint3D joint = new(); joint.NodeA = GetPathTo(body); joint.NodeB = collider.GetPath(); joints.Add(joint); AddChild(joint); } } else if (joints.Count > 0) { foreach (var joint in joints) joint.QueueFree(); joints.Clear(); } } }