Minor hands detection change

Update to latest LeapCSharp
This commit is contained in:
SDraw 2022-03-26 15:08:44 +03:00
parent f6d16f25b7
commit 8c8b8d2e99
No known key found for this signature in database
GPG key ID: BB95B4DAB2BB8BB5
4 changed files with 58 additions and 18 deletions

View file

@ -12,7 +12,6 @@ namespace ml_lme_cvr
static LeapMotionExtension ms_instance = null;
Leap.Controller m_leapController = null;
long m_lastFrameId = 0;
GestureMatcher.GesturesData m_gesturesData = null;
GameObject m_leapTrackingRoot = null;
@ -101,26 +100,28 @@ namespace ml_lme_cvr
public override void OnUpdate()
{
if(Settings.Enabled && (m_leapController != null))
if(Settings.Enabled)
{
for(int i = 0; i < GestureMatcher.GesturesData.ms_handsCount; i++)
m_gesturesData.m_handsPresenses[i] = false;
Leap.Frame l_frame = m_leapController.Frame();
if((l_frame != null) && (m_lastFrameId != l_frame.Id))
if((m_leapController != null) && m_leapController.IsConnected)
{
m_lastFrameId = l_frame.Id;
GestureMatcher.GetGestures(l_frame, ref m_gesturesData);
for(int i = 0; i < GestureMatcher.GesturesData.ms_handsCount; i++)
Leap.Frame l_frame = m_leapController.Frame();
if(l_frame != null)
{
if((m_leapHands[i] != null) && m_gesturesData.m_handsPresenses[i])
GestureMatcher.GetGestures(l_frame, ref m_gesturesData);
for(int i = 0; i < GestureMatcher.GesturesData.ms_handsCount; i++)
{
Vector3 l_pos = m_gesturesData.m_handsPositons[i];
Quaternion l_rot = m_gesturesData.m_handsRotations[i];
ReorientateLeapToUnity(ref l_pos, ref l_rot, Settings.HmdMode);
m_leapHands[i].transform.localPosition = l_pos;
m_leapHands[i].transform.localRotation = l_rot;
if((m_leapHands[i] != null) && m_gesturesData.m_handsPresenses[i])
{
Vector3 l_pos = m_gesturesData.m_handsPositons[i];
Quaternion l_rot = m_gesturesData.m_handsRotations[i];
ReorientateLeapToUnity(ref l_pos, ref l_rot, Settings.HmdMode);
m_leapHands[i].transform.localPosition = l_pos;
m_leapHands[i].transform.localRotation = l_rot;
}
}
}
}

View file

@ -1,10 +1,10 @@
using System.Reflection;
[assembly: AssemblyTitle("LeapMotionExtension")]
[assembly: AssemblyVersion("1.0.2")]
[assembly: AssemblyFileVersion("1.0.2")]
[assembly: AssemblyVersion("1.0.3")]
[assembly: AssemblyFileVersion("1.0.3")]
[assembly: MelonLoader.MelonInfo(typeof(ml_lme_cvr.LeapMotionExtension), "LeapMotionExtension", "1.0.2", "SDraw", "https://github.com/SDraw")]
[assembly: MelonLoader.MelonInfo(typeof(ml_lme_cvr.LeapMotionExtension), "LeapMotionExtension", "1.0.3", "SDraw", "https://github.com/SDraw")]
[assembly: MelonLoader.MelonGame(null, "ChilloutVR")]
[assembly: MelonLoader.MelonPlatform(MelonLoader.MelonPlatformAttribute.CompatiblePlatforms.WINDOWS_X64)]
[assembly: MelonLoader.MelonPlatformDomain(MelonLoader.MelonPlatformDomainAttribute.CompatibleDomains.MONO)]

View file

@ -245,6 +245,18 @@ namespace LeapInternal
_polster.Join();
}
/// <summary>
/// Returns the version of the currently installed Tracking Service.
/// Might return 0.0.0 if no device is connected or it cannot get the current version.
/// </summary>
/// <returns>the current tracking service version</returns>
public LEAP_VERSION GetCurrentServiceVersion()
{
LEAP_VERSION currentVersion = new LEAP_VERSION { major = 0, minor = 0, patch = 0 };
LeapC.GetVersion(_leapConnection, eLeapVersionPart.eLeapVersionPart_ServerLibrary, ref currentVersion);
return currentVersion;
}
//Run in Polster thread, fills in object queues
private void processMessages()
{
@ -586,7 +598,13 @@ namespace LeapInternal
private void handleLostDevice(ref LEAP_DEVICE_EVENT deviceMsg)
{
Device lost = _devices.FindDeviceByHandle(deviceMsg.device.handle);
IntPtr deviceHandle;
eLeapRS result = LeapC.OpenDevice(deviceMsg.device, out deviceHandle);
if (result != eLeapRS.eLeapRS_Success)
return;
//UnityEngine.Debug.Log("handleLostDevice: " + deviceHandle);
Device lost = _devices.FindDeviceByHandle(deviceHandle);
if (lost != null)
{
_devices.Remove(lost);

View file

@ -497,6 +497,27 @@ namespace Leap
}
}
/// <summary>
/// Checks whether a minimum or required tracking service version is installed.
/// Gets the currently installed service version from the connection and checks whether
/// the argument minServiceVersion is smaller or equal to it
/// </summary>
/// <param name="minServiceVersion">The minimum service version to check against</param>
/// <returns></returns>
public bool CheckRequiredServiceVersion(LEAP_VERSION minServiceVersion)
{
LEAP_VERSION currentServiceVersion = _connection.GetCurrentServiceVersion();
// check that minServiceVersion is smaller or equal to the current service version
if (minServiceVersion.major < currentServiceVersion.major) return true;
else if (minServiceVersion.major == currentServiceVersion.major)
{
if (minServiceVersion.minor < currentServiceVersion.minor) return true;
else if (minServiceVersion.minor == currentServiceVersion.minor && minServiceVersion.patch <= currentServiceVersion.patch) return true;
}
return false;
}
/// <summary>
/// Requests setting a policy.
///