OVRHaptics.OVRHapticsChannel GetTargetChannel(Node node) { OVRHaptics.OVRHapticsChannel channel = null; if (node == Node.None) { return(channel); } switch (node) { case Node.LeftHand: channel = m_LHapticsChannel; break; case Node.RightHand: channel = m_RHapticsChannel; break; default: Debug.LogWarning("Invalid node. Could not fetch haptics channel."); break; } return(channel); }
void Start() { #if ENABLE_OVR_INPUT m_LHapticsChannel = OVRHaptics.LeftChannel; m_RHapticsChannel = OVRHaptics.RightChannel; m_GeneratedHapticClip = new OVRHapticsClip(); #endif }
public override void HapticPulse(byte[] samples) { #if OVR OVRHapticsClip clip = new OVRHapticsClip(samples, samples.Length); OVRHaptics.OVRHapticsChannel channel = hand == XRHand.Left ? OVRHaptics.LeftChannel : OVRHaptics.RightChannel; channel.Mix(clip); #endif }
protected void OnEnable() { InitializeOVRHaptics(); if (controllerMask == OVRInput.Controller.LTouch) { channel = OVRHaptics.LeftChannel; } }
void RumbleSimple(OVRHaptics.OVRHapticsChannel channel) { if (channel == null) { return; } if (RumbleSimpleClip != null) { channel.Mix(RumbleSimpleClip); } }
void Rumble(OVRHaptics.OVRHapticsChannel channel, AudioClip audioClip) { RumbleSimple(channel); // TODO: remove //////////// /*if (channel == null) { return; } * * OVRHapticsClip clip = new OVRHapticsClip(audioClip); // TODO: This line crashes Unity * for (int i = 0; i < _audioClipAmpMultiplier; i++) * { * channel.Mix(clip); * }*/ }
private void Start() { m_hapticsChannelL = OVRHaptics.LeftChannel; m_hapticsChannelR = OVRHaptics.RightChannel; if (GoodAudio) { GoodClip = new OVRHapticsClip(GoodAudio); } if (BadAudio) { BadClip = new OVRHapticsClip(BadAudio); } //Create EmptyClip proceduralClip = new OVRHapticsClip(); }
public override void HapticPulse(AnimationCurve curve, float time) { #if OVR int count = (int)(time * 320); //Touch controllers sample at 320Hz. OVRHapticsClip clip = new OVRHapticsClip(count); for (int i = 0; i < count; i++) { float value = curve.Evaluate(i / (float)count) * 255f; value = Mathf.Clamp(value, 0, 255); clip.Samples[i] = (byte)(int)value; } clip = new OVRHapticsClip(clip.Samples, clip.Samples.Length); OVRHaptics.OVRHapticsChannel channel = hand == XRHand.Left ? OVRHaptics.LeftChannel : OVRHaptics.RightChannel; channel.Mix(clip); #endif }
internal override void HapticPulse(Controller ctrl, int durationMicroSec) { /* mapping from durationMicroSec, which is a value up to ~500, down to bytes */ if (haptics_clip == null) { haptics_clip = new OVRHapticsClip(1); } int value = durationMicroSec / 2; if (value > 255) { value = 255; } haptics_clip.Reset(); haptics_clip.WriteSample((byte)value); OVRHaptics.OVRHapticsChannel channel = OVRHaptics.Channels[ctrl.index]; channel.Preempt(haptics_clip); }
// Send haptic impulse based on intensity and hand options public void Vibrate(EHapticIntensity hapticIntensity, EHapticHand hapticHand) { switch (hapticHand) { case EHapticHand.LeftController: _channel = OVRHaptics.LeftChannel; break; case EHapticHand.RightController: _channel = OVRHaptics.RightChannel; break; case EHapticHand.NoHaptics: break; default: throw new ArgumentOutOfRangeException(nameof(hapticHand), hapticHand, null); } switch (hapticIntensity) { case EHapticIntensity.Light: _channel.Preempt(_clipLight); break; case EHapticIntensity.Medium: _channel.Preempt(_clipMedium); break; case EHapticIntensity.Strong: _channel.Preempt(_clipStrong); break; default: throw new ArgumentOutOfRangeException(nameof(hapticIntensity), hapticIntensity, null); } }
private void TriggerHapticFeedback(XRNode node, OVRHapticsClip clip) { OVRHaptics.OVRHapticsChannel channel = (node != XRNode.LeftHand) ? OVRHaptics.RightChannel : OVRHaptics.LeftChannel; channel.Mix(clip); }