mirror of
https://github.com/hanetzer/sdraw_mods_cvr.git
synced 2025-09-03 10:29:22 +00:00
Add gesture recognition setting
Also fixed attachmentDistance by setting it to 0f.
This commit is contained in:
parent
c9162a766f
commit
c6506727ab
3 changed files with 136 additions and 5 deletions
|
@ -40,6 +40,7 @@ namespace ml_lme
|
|||
m_handRayLeft.isInteractionRay = true;
|
||||
m_handRayLeft.triggerGazeEvents = false;
|
||||
m_handRayLeft.holderRoot = m_handRayLeft.gameObject;
|
||||
m_handRayLeft.attachmentDistance = 0f;
|
||||
|
||||
m_handRayRight = LeapTracking.GetInstance().GetRightHand().gameObject.AddComponent<ControllerRay>();
|
||||
m_handRayRight.hand = false;
|
||||
|
@ -47,6 +48,7 @@ namespace ml_lme
|
|||
m_handRayRight.isInteractionRay = true;
|
||||
m_handRayRight.triggerGazeEvents = false;
|
||||
m_handRayRight.holderRoot = m_handRayRight.gameObject;
|
||||
m_handRayRight.attachmentDistance = 0f;
|
||||
|
||||
m_lineLeft = m_handRayLeft.gameObject.AddComponent<LineRenderer>();
|
||||
m_lineLeft.endWidth = 1f;
|
||||
|
@ -74,9 +76,11 @@ namespace ml_lme
|
|||
|
||||
Settings.EnabledChange += this.OnEnableChange;
|
||||
Settings.InputChange += this.OnInputChange;
|
||||
Settings.GesturesChange += this.OnGesturesChange;
|
||||
|
||||
OnEnableChange(Settings.Enabled);
|
||||
OnInputChange(Settings.Input);
|
||||
OnGesturesChange(Settings.Gestures);
|
||||
|
||||
MelonLoader.MelonCoroutines.Start(WaitForSettings());
|
||||
MelonLoader.MelonCoroutines.Start(WaitForMaterial());
|
||||
|
@ -133,6 +137,8 @@ namespace ml_lme
|
|||
{
|
||||
ResetFingers(true);
|
||||
m_handVisibleLeft = false;
|
||||
if (Settings.Gestures)
|
||||
ResetGestures(true);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -147,6 +153,8 @@ namespace ml_lme
|
|||
{
|
||||
ResetFingers(false);
|
||||
m_handVisibleRight = false;
|
||||
if (Settings.Gestures)
|
||||
ResetGestures(false);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -166,13 +174,16 @@ namespace ml_lme
|
|||
m_handRayLeft.enabled = (l_data.m_leftHand.m_present && (!m_inVR || !Utils.IsLeftHandTracked() || !Settings.FingersOnly));
|
||||
m_handRayRight.enabled = (l_data.m_rightHand.m_present && (!m_inVR || !Utils.IsRightHandTracked() || !Settings.FingersOnly));
|
||||
}
|
||||
|
||||
|
||||
public override void UpdateInput()
|
||||
{
|
||||
if(Settings.Enabled && Settings.Input)
|
||||
{
|
||||
GestureMatcher.LeapData l_data = LeapManager.GetInstance().GetLatestData();
|
||||
if (!Settings.Enabled)
|
||||
return;
|
||||
|
||||
GestureMatcher.LeapData l_data = LeapManager.GetInstance().GetLatestData();
|
||||
|
||||
if(Settings.Input)
|
||||
{
|
||||
if(l_data.m_leftHand.m_present && (!m_inVR || !Utils.IsLeftHandTracked() || !Settings.FingersOnly))
|
||||
{
|
||||
float l_strength = l_data.m_leftHand.m_grabStrength;
|
||||
|
@ -229,6 +240,85 @@ namespace ml_lme
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (Settings.Gestures)
|
||||
{
|
||||
// Left hand gestures
|
||||
if (l_data.m_leftHand.m_present && (!m_inVR || !Utils.IsLeftHandTracked() || !Settings.FingersOnly))
|
||||
{
|
||||
if (m_inputManager.fingerCurlLeftThumb < 0.5f && m_inputManager.fingerCurlLeftIndex < 0.5f && m_inputManager.fingerCurlLeftMiddle < 0.5f && m_inputManager.fingerCurlLeftRing < 0.5f && m_inputManager.fingerCurlLeftPinky < 0.5f)
|
||||
{
|
||||
m_inputManager.gestureLeftRaw = -1f;
|
||||
}
|
||||
if (m_inputManager.fingerCurlLeftThumb >= 0.75f || m_inputManager.fingerCurlLeftIndex >= 0.75f || m_inputManager.fingerCurlLeftMiddle >= 0.75f || m_inputManager.fingerCurlLeftRing >= 0.75f || m_inputManager.fingerCurlLeftPinky >= 0.75f)
|
||||
{
|
||||
m_inputManager.gestureLeftRaw = Settings.Input ? m_inputManager.gripLeftValue : 1f;
|
||||
}
|
||||
if (m_inputManager.fingerCurlLeftIndex >= 0.75f && m_inputManager.fingerCurlLeftMiddle >= 0.75f && m_inputManager.fingerCurlLeftRing >= 0.75f && m_inputManager.fingerCurlLeftPinky >= 0.75f)
|
||||
{
|
||||
m_inputManager.gestureLeftRaw = 2f;
|
||||
}
|
||||
if (m_inputManager.fingerCurlLeftMiddle >= 0.75f && m_inputManager.fingerCurlLeftRing >= 0.75f && m_inputManager.fingerCurlLeftPinky >= 0.75f)
|
||||
{
|
||||
m_inputManager.gestureLeftRaw = 3f;
|
||||
}
|
||||
if (m_inputManager.fingerCurlLeftThumb >= 0.75f && m_inputManager.fingerCurlLeftMiddle >= 0.75f && m_inputManager.fingerCurlLeftRing >= 0.75f && m_inputManager.fingerCurlLeftPinky >= 0.75f)
|
||||
{
|
||||
m_inputManager.gestureLeftRaw = 4f;
|
||||
}
|
||||
if (m_inputManager.fingerCurlLeftThumb >= 0.75f && m_inputManager.fingerCurlLeftRing >= 0.75f && m_inputManager.fingerCurlLeftPinky >= 0.75f)
|
||||
{
|
||||
m_inputManager.gestureLeftRaw = 5f;
|
||||
}
|
||||
if (m_inputManager.fingerCurlLeftIndex >= 0.75f && m_inputManager.fingerCurlLeftRing >= 0.75f && m_inputManager.fingerCurlLeftPinky >= 0.75f)
|
||||
{
|
||||
m_inputManager.gestureLeftRaw = 6f;
|
||||
}
|
||||
if (m_inputManager.fingerCurlLeftThumb >= 0.75f && m_inputManager.fingerCurlLeftMiddle >= 0.5f && m_inputManager.fingerCurlLeftRing >= 0.75f)
|
||||
{
|
||||
m_inputManager.gestureLeftRaw = 6f;
|
||||
}
|
||||
m_inputManager.gestureLeft = m_inputManager.gestureLeftRaw;
|
||||
}
|
||||
|
||||
// Right hand gestures
|
||||
if (l_data.m_rightHand.m_present && (!m_inVR || !Utils.IsRightHandTracked() || !Settings.FingersOnly))
|
||||
{
|
||||
if (m_inputManager.fingerCurlRightThumb < 0.5f && m_inputManager.fingerCurlRightIndex < 0.5f && m_inputManager.fingerCurlRightMiddle < 0.5f && m_inputManager.fingerCurlRightRing < 0.5f && m_inputManager.fingerCurlRightPinky < 0.5f)
|
||||
{
|
||||
m_inputManager.gestureRightRaw = -1f;
|
||||
}
|
||||
if (m_inputManager.fingerCurlRightThumb >= 0.75f || m_inputManager.fingerCurlRightIndex >= 0.75f || m_inputManager.fingerCurlRightMiddle >= 0.75f || m_inputManager.fingerCurlRightRing >= 0.75f || m_inputManager.fingerCurlRightPinky >= 0.75f)
|
||||
{
|
||||
m_inputManager.gestureRightRaw = Settings.Input ? m_inputManager.gripRightValue : 1f;
|
||||
}
|
||||
if (m_inputManager.fingerCurlRightIndex >= 0.75f && m_inputManager.fingerCurlRightMiddle >= 0.75f && m_inputManager.fingerCurlRightRing >= 0.75f && m_inputManager.fingerCurlRightPinky >= 0.75f)
|
||||
{
|
||||
m_inputManager.gestureRightRaw = 2f;
|
||||
}
|
||||
if (m_inputManager.fingerCurlRightMiddle >= 0.75f && m_inputManager.fingerCurlRightRing >= 0.75f && m_inputManager.fingerCurlRightPinky >= 0.75f)
|
||||
{
|
||||
m_inputManager.gestureRightRaw = 3f;
|
||||
}
|
||||
if (m_inputManager.fingerCurlRightThumb >= 0.75f && m_inputManager.fingerCurlRightMiddle >= 0.75f && m_inputManager.fingerCurlRightRing >= 0.75f && m_inputManager.fingerCurlRightPinky >= 0.75f)
|
||||
{
|
||||
m_inputManager.gestureRightRaw = 4f;
|
||||
}
|
||||
if (m_inputManager.fingerCurlRightThumb >= 0.75f && m_inputManager.fingerCurlRightRing >= 0.75f && m_inputManager.fingerCurlRightPinky >= 0.75f)
|
||||
{
|
||||
m_inputManager.gestureRightRaw = 5f;
|
||||
}
|
||||
if (m_inputManager.fingerCurlRightIndex >= 0.75f && m_inputManager.fingerCurlRightRing >= 0.75f && m_inputManager.fingerCurlRightPinky >= 0.75f)
|
||||
{
|
||||
m_inputManager.gestureRightRaw = 6f;
|
||||
}
|
||||
if (m_inputManager.fingerCurlRightThumb >= 0.75f && m_inputManager.fingerCurlRightMiddle >= 0.5f && m_inputManager.fingerCurlRightRing >= 0.75f)
|
||||
{
|
||||
m_inputManager.gestureRightRaw = 6f;
|
||||
}
|
||||
m_inputManager.gestureRight = m_inputManager.gestureRightRaw;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Settings changes
|
||||
|
@ -262,6 +352,14 @@ namespace ml_lme
|
|||
}
|
||||
}
|
||||
|
||||
void OnGesturesChange(bool p_state)
|
||||
{
|
||||
m_inputManager.gestureLeft = 0f;
|
||||
m_inputManager.gestureLeftRaw = 0f;
|
||||
m_inputManager.gestureRight = 0f;
|
||||
m_inputManager.gestureRightRaw = 0f;
|
||||
}
|
||||
|
||||
// Game events
|
||||
internal void OnAvatarSetup()
|
||||
{
|
||||
|
@ -348,8 +446,22 @@ namespace ml_lme
|
|||
}
|
||||
}
|
||||
|
||||
void ResetGestures(bool p_left)
|
||||
{
|
||||
if (p_left)
|
||||
{
|
||||
m_inputManager.gestureLeft = 0f;
|
||||
m_inputManager.gestureLeftRaw = 0f;
|
||||
}
|
||||
else
|
||||
{
|
||||
m_inputManager.gestureRight = 0f;
|
||||
m_inputManager.gestureRightRaw = 0f;
|
||||
}
|
||||
}
|
||||
|
||||
// Game settings
|
||||
void OnGameSettingBoolChange(string p_name, bool p_state)
|
||||
void OnGameSettingBoolChange(string p_name, bool p_state)
|
||||
{
|
||||
if(p_name == "ControlUseGripToGrab")
|
||||
m_gripToGrab = p_state;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue