con mesh and snap to hand

This commit is contained in:
ethan merchant 2024-12-07 19:49:15 -05:00
parent afa2e0db98
commit ba6fc33a40
5 changed files with 26 additions and 14 deletions

BIN
Assets/meshes/assets.glb (Stored with Git LFS)

Binary file not shown.

View file

@ -2,8 +2,8 @@
<manifest <manifest
xmlns:android="http://schemas.android.com/apk/res/android" xmlns:android="http://schemas.android.com/apk/res/android"
package="com.dofdev.dofdemo" package="com.dofdev.dofdemo"
android:versionCode="10" android:versionCode="17"
android:versionName="1.10" android:versionName="1.17"
android:installLocation="auto" android:installLocation="auto"
> >
<uses-sdk android:minSdkVersion="29" android:targetSdkVersion="32" /> <uses-sdk android:minSdkVersion="29" android:targetSdkVersion="32" />

View file

@ -76,13 +76,15 @@ static class Arts
// stretch_cursor // stretch_cursor
{ {
Mesh.Cube.Draw( float flip_x = Stretch.to_grab.Held && Stretch.to_grab.held_by.handed == Handed.Left ? -1 : 1;
meshes["con"].Draw(
mat_mono, mat_mono,
Stretch.to_grab.pose.ToMatrix(5 * U.cm) Stretch.to_grab.pose.ToMatrix(V.XYZ(flip_x, 1, 1) * 1.5f * U.cm)
); );
Mesh.Cube.Draw( flip_x = Stretch.from_grab.Held && Stretch.from_grab.held_by.handed == Handed.Left ? -1 : 1;
meshes["con"].Draw(
mat_mono, mat_mono,
Stretch.from_grab.pose.ToMatrix(4 * U.cm) Stretch.from_grab.pose.ToMatrix(V.XYZ(flip_x, 1, 1) * 1.5f * U.cm)
); );
Mesh.Cube.Draw( Mesh.Cube.Draw(

View file

@ -13,14 +13,16 @@ public class Grab
public Pose pose; public Pose pose;
private Vec3 pos_offset; private Vec3 pos_offset;
private Quat ori_offset; private Quat ori_offset;
private Hand? held_by; public Hand? held_by;
private bool snap_to_hand = false;
public Grab(float x, float y, float z) public Grab(float x, float y, float z, bool snap_to_hand = false)
{ {
pose = new Pose(x, y, z); pose = new Pose(x, y, z);
pos_offset = Vec3.Zero; pos_offset = Vec3.Zero;
ori_offset = Quat.Identity; ori_offset = Quat.Identity;
held_by = null; held_by = null;
this.snap_to_hand = snap_to_hand;
} }
public bool OnGrab(ref Hand hand, ref Grab grab_ref) public bool OnGrab(ref Hand hand, ref Grab grab_ref)
@ -50,8 +52,16 @@ public class Grab
{ {
if (Held) if (Held)
{ {
pose.orientation = held_by.palm.orientation * ori_offset; if (snap_to_hand)
pose.position = held_by.palm.position - held_by.palm.orientation * pos_offset; {
pose.orientation = held_by.palm.orientation;
pose.position = held_by.palm.position;
}
else
{
pose.orientation = held_by.palm.orientation * ori_offset;
pose.position = held_by.palm.position - held_by.palm.orientation * pos_offset;
}
} }
} }
} }

View file

@ -14,8 +14,8 @@ static class Stretch
public static void Init() public static void Init()
{ {
to_grab = new(-0.3f, 0, 0); to_grab = new(-0.3f, 0, 0, true);
from_grab = new(-0.3f, 0, 0.1f); from_grab = new(-0.3f, 0, 0.1f, true);
} }
public static void Frame() public static void Frame()