calibration fix

This commit is contained in:
spatialfree 2020-06-11 11:25:53 -07:00
parent 6f1d1acbfb
commit 09747638d8

View file

@ -17,7 +17,8 @@ public class Input
public Vector3 twistCursor;
Vector3 mainCalibDir;
float calibDist;
Quaternion mainCalibRot;
float calibDist, calibZ;
public void Frame()
{
oculusInject.Frame(this);
@ -28,8 +29,13 @@ public class Input
rig.position = -head.localPosition; // that zeros us out for an offset
rig.position += head.localRotation * Vector3.back * 0.666f;
mainCalibDir = Vector3.zero - WorldPos(mainCon).normalized; // Vector3.zero == center?
mainCalibDir = Vector3.zero - WorldPos(mainCon).normalized;
mainCalibRot = mainCon.physical.Rot();
calibDist = Vector3.Distance(Vector3.zero, WorldPos(mainCon));
calibZ = Vector3.Angle(
offCon.physical.Rot() * Vector3.up,
WorldPos(mainCon) - WorldPos(offCon)
) / 90f;
}
float zValue = Vector3.Angle(
@ -37,7 +43,10 @@ public class Input
WorldPos(mainCon) - WorldPos(offCon)
) / 90f; // 0in - 1neutral - 2out
twistCursor = WorldPos(mainCon) + mainCon.physical.Rot() * mainCalibDir * calibDist * zValue;
zValue = 1 + zValue - calibZ;
Quaternion rot = mainCon.physical.Rot() * Quaternion.Inverse(mainCalibRot);
twistCursor = WorldPos(mainCon) + rot * mainCalibDir * calibDist * zValue;
}
public Vector3 WorldPos(Con con)