sdhkfgjhksgf

This commit is contained in:
Snorre 2025-04-05 03:41:27 +02:00
parent c51757b700
commit ab1d5b78ea
2 changed files with 66 additions and 50 deletions

View file

@ -39,4 +39,6 @@ shape = SubResource("SphereShape3D_iyx0m")
[node name="XRCamera3D" type="XRCamera3D" parent="."]
[connection signal="button_pressed" from="LeftHand" to="." method="OnPress"]
[connection signal="input_float_changed" from="LeftHand" to="." method="OnFloat"]
[connection signal="profile_changed" from="LeftHand" to="LeftHand" method="OnProfileChanged"]

View file

@ -3,60 +3,74 @@ using System.Collections.Generic;
public partial class XRHand : XRController3D
{
List<Generic6DofJoint3D> joints = new();
List<Generic6DofJoint3D> joints = new();
[Export]
StaticBody3D body;
[Export]
StaticBody3D body;
[Export]
float strength = 1.0f;
[Export]
float strength = 1.0f;
public override void _Process(double 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)
{
RigidBody3D body = null;
try
{
body = (RigidBody3D)fuckingcollider["collider"];
}
catch (System.InvalidCastException)
{
continue;
}
public override void _Process(double 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)
{
RigidBody3D body = null;
try
{
body = (RigidBody3D)fuckingcollider["collider"];
}
catch (System.InvalidCastException)
{
continue;
}
if (body.Mass > strength)
{
continue;
}
if (body.Mass > strength)
{
continue;
}
Generic6DofJoint3D joint = new();
joint.NodeA = GetPathTo(body);
joint.NodeB = body.GetPath();
joints.Add(joint);
AddChild(joint);
}
}
else if (joints.Count > 0)
{
foreach (var joint in joints)
joint.QueueFree();
joints.Clear();
}
}
Generic6DofJoint3D joint = new();
joint.NodeA = GetPathTo(body);
joint.NodeB = body.GetPath();
joints.Add(joint);
AddChild(joint);
}
}
else if (joints.Count > 0)
{
foreach (var joint in joints)
joint.QueueFree();
joints.Clear();
}
}
public void OnProfileChange(string name) {
GD.Print("Profile changed to:");
GD.Print(name);
}
public void OnProfileChange(string name)
{
GD.Print("Profile changed to:");
GD.Print(name);
}
public void OnPress(string name)
{
GD.Print("Button pressed:");
GD.Print(name);
}
public void OnFloat(string name, float value)
{
GD.Print("Float input:");
GD.Print(name);
GD.Print(value);
}
}