Beispiel #1
0
        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);
        }
Beispiel #2
0
        void Start()
        {
#if ENABLE_OVR_INPUT
            m_LHapticsChannel     = OVRHaptics.LeftChannel;
            m_RHapticsChannel     = OVRHaptics.RightChannel;
            m_GeneratedHapticClip = new OVRHapticsClip();
#endif
        }
Beispiel #3
0
        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
        }
Beispiel #4
0
    protected void OnEnable()
    {
        InitializeOVRHaptics();

        if (controllerMask == OVRInput.Controller.LTouch)
        {
            channel = OVRHaptics.LeftChannel;
        }
    }
Beispiel #5
0
    void RumbleSimple(OVRHaptics.OVRHapticsChannel channel)
    {
        if (channel == null)
        {
            return;
        }

        if (RumbleSimpleClip != null)
        {
            channel.Mix(RumbleSimpleClip);
        }
    }
Beispiel #6
0
    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();
 }
Beispiel #8
0
        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
        }
Beispiel #9
0
        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);
        }
Beispiel #10
0
        // 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);
 }