private static void setFingerBones(ref Transform[] bones, Vector3 angles, ESensoFingerType fingerType) { if (fingerType == ESensoFingerType.Thumb) { setThumbBones(ref bones, ref angles); } else { if (angles.z < 0.0f) { bones[0].localEulerAngles = angles; } else { angles.z /= 2.0f; for (int j = 0; j < bones.Length; ++j) { bones[j].localEulerAngles = angles; if (j == 0) { angles.y = 0.0f; } } } if (ESensoFingerType.Little == fingerType) { bones[0].Rotate(new Vector3(0.0f, -15.0f, 0)); } } }
public int GetJSON(ESensoPositionType hand, ESensoFingerType finger, ref Byte[] buf, ref int bufOffset) { var str = String.Format("{{\"dst\":\"{0}\",\"type\":\"vibration\",\"data\":{{\"type\":{1},\"dur\":{2},\"str\":{3}}}}}\n", (hand == ESensoPositionType.RightHand ? "rh" : "lh"), (int)finger, m_duration, m_strength); changed = false; return(Encoding.ASCII.GetBytes(str, 0, str.Length, buf, bufOffset)); }
public void VibrateFinger(ESensoFingerType finger, ushort duration, byte strength) { if (m_sensoManager.IsAlive) { SensoManager man = m_sensoManager.Target as SensoManager; man.SendVibro(HandType, finger, duration, strength); } }
/// /// @brief Send vibrating command to the server /// public void VibrateFinger(ESensoPositionType handType, ESensoFingerType fingerType, ushort duration, byte strength) { int handMult = handType == ESensoPositionType.RightHand ? 0 : 1; int ind = handMult * 5 + (int)fingerType; lock (vibroLock) vibroPackets[ind].Change(duration, strength); }
/// /// @brief Return FingerTip with specified type /// public SensoFingerTip GetFingerTip(ESensoFingerType fingerType) { var fingers = GetComponentsInChildren <SensoFingerTip>(); foreach (var finger in fingers) { if (finger.FingerType == fingerType) { return(finger); } } return(null); }
public void SensoPoseChanged(SensoHandData aData) { latestSample = aData; sampleChanged = true; for (ESensoFingerType fingerType = ESensoFingerType.Thumb; fingerType <= ESensoFingerType.Little; ++fingerType) { var tip = GetFingerTip(fingerType); if (tip != null) { tip.SetRelativePitch(aData.fingerAngles[(int)fingerType].z); } } }
public event EventHandler <SensoGrabArgs> OnGrabEnd = delegate {}; // Is fired when hand has ended grabbing public void TriggerPinch(ESensoFingerType finger1Type, ESensoFingerType finger2Type, bool stop = false) { SensoFingerTip finger1 = GetFingerTip(finger1Type < finger2Type ? finger1Type : finger2Type); SensoFingerTip finger2 = GetFingerTip(finger2Type > finger1Type ? finger2Type : finger1Type); var args = new SensoPinchEventArgs(finger1, finger2); if (!stop) { OnPinchStart(this, args); } else { OnPinchEnd(this, args); } }
/// Events public void fingerPinch(ESensoPositionType handType, ESensoFingerType finger1Type, ESensoFingerType finger2Type, bool stop = false) { SensoHand aHand = null; foreach (var hand in sensoHands) { if (hand.HandType == handType) { aHand = hand; break; } } if (aHand != null) { aHand.TriggerPinch(finger1Type, finger2Type, stop); } }
private void netSendVibro(ref Byte[] buf, ref int offset) { ESensoPositionType hand = ESensoPositionType.Unknown; ESensoFingerType finger = ESensoFingerType.Thumb; lock (vibroLock) { for (int i = 0; i < 10; ++i) { if (i % 5 == 0) { ++hand; finger = ESensoFingerType.Thumb; } if (vibroPackets[i].changed) { offset += vibroPackets[i].GetJSON(hand, finger, ref buf, ref offset); } ++finger; } } }
public SensoHandGesture(JSONNode data) { JSONArray arr = data["fingers"].AsArray; Fingers = new ESensoFingerType[arr.Count]; for (int i = 0; i < arr.Count; ++i) { Fingers[i] = (ESensoFingerType)arr[i].AsInt; } string handStr = data["hand"].Value; if (handStr.Equals("rh")) { Hand = ESensoPositionType.RightHand; } else if (handStr.Equals("lh")) { Hand = ESensoPositionType.LeftHand; } else { Hand = ESensoPositionType.Unknown; } string typeStr = data["name"].Value; if (typeStr.Equals("pinch_start")) { Type = ESensoGestureType.PinchStart; } else if (typeStr.Equals("pinch_end")) { Type = ESensoGestureType.PinchEnd; } else { Type = ESensoGestureType.Unknown; } }
/*void OrientationUpdated(OVRCameraRig rig) * { * if (VRCameraHolder != null) * { * VRCameraHolder.localRotation = Quaternion.Inverse(rig.centerEyeAnchor.localRotation); * } * if (DateTime.Now >= orientationNextSend) * { * sensoThread.SendHMDOrientation(rig.centerEyeAnchor.localEulerAngles); * orientationNextSend = DateTime.Now.AddMilliseconds(orientationSendEveryMS); * } * }*/ /// /// @brief Send vibration command to the server /// public void SendVibro(ESensoPositionType hand, ESensoFingerType finger, ushort duration, byte strength) { sensoThread.VibrateFinger(hand, finger, duration, strength); }