Beispiel #1
0
    // Token: 0x06000D52 RID: 3410 RVA: 0x000538FC File Offset: 0x00051AFC
    public static int GetDeviceIndex(SteamVR_Controller.DeviceRelation relation, ETrackedDeviceClass deviceClass = ETrackedDeviceClass.Controller, int relativeTo = 0)
    {
        int result = -1;

        SteamVR_Utils.RigidTransform t = (relativeTo < 16) ? SteamVR_Controller.Input(relativeTo).transform.GetInverse() : SteamVR_Utils.RigidTransform.identity;
        CVRSystem system = OpenVR.System;

        if (system == null)
        {
            return(result);
        }
        float num  = float.MinValue;
        int   num2 = 0;

        while ((long)num2 < 16L)
        {
            if (num2 != relativeTo && system.GetTrackedDeviceClass((uint)num2) == deviceClass)
            {
                SteamVR_Controller.Device device = SteamVR_Controller.Input(num2);
                if (device.connected)
                {
                    if (relation == SteamVR_Controller.DeviceRelation.First)
                    {
                        return(num2);
                    }
                    Vector3 vector = t * device.transform.pos;
                    float   num3;
                    if (relation == SteamVR_Controller.DeviceRelation.FarthestRight)
                    {
                        num3 = vector.x;
                    }
                    else if (relation == SteamVR_Controller.DeviceRelation.FarthestLeft)
                    {
                        num3 = -vector.x;
                    }
                    else
                    {
                        Vector3 normalized = new Vector3(vector.x, 0f, vector.z).normalized;
                        float   num4       = Vector3.Dot(normalized, Vector3.forward);
                        Vector3 vector2    = Vector3.Cross(normalized, Vector3.forward);
                        if (relation == SteamVR_Controller.DeviceRelation.Leftmost)
                        {
                            num3 = ((vector2.y > 0f) ? (2f - num4) : num4);
                        }
                        else
                        {
                            num3 = ((vector2.y < 0f) ? (2f - num4) : num4);
                        }
                    }
                    if (num3 > num)
                    {
                        result = num2;
                        num    = num3;
                    }
                }
            }
            num2++;
        }
        return(result);
    }
Beispiel #2
0
 bool isPressed(SteamVR_Controller.DeviceRelation rel, ulong button)
 {
     if (SteamVR_Controller.GetDeviceIndex(rel) >= 0 && SteamVR_Controller.Input(SteamVR_Controller.GetDeviceIndex(rel)) != null)
     {
         return(SteamVR_Controller.Input(SteamVR_Controller.GetDeviceIndex(rel)).GetPress(button));
     }
     else
     {
         return(false);
     }
 }
    /// <summary>
    /// 手柄震动
    /// </summary>
    /// <param name="device">哪只手柄</param>
    /// <param name="deep">震动程度</param>
    void RainsShaking(SteamVR_Controller.DeviceRelation device, ushort deep)
    {
        var deviceIndex2 = SteamVR_Controller.GetDeviceIndex(device);

        SteamVR_Controller.Input(deviceIndex2).TriggerHapticPulse(deep);
    }