Пример #1
0
	public abstract string GetControllerAxisTypeNameFromEnum(EVRControllerAxisType eAxisType);
Пример #2
0
	internal static extern IntPtr VR_IVRSystem_GetControllerAxisTypeNameFromEnum(IntPtr instancePtr, EVRControllerAxisType eAxisType);
Пример #3
0
	public string GetControllerAxisTypeNameFromEnum(EVRControllerAxisType eAxisType)
	{
		IntPtr result = FnTable.GetControllerAxisTypeNameFromEnum(eAxisType);
		return (string) Marshal.PtrToStructure(result, typeof(string));
	}
Пример #4
0
	public override string GetControllerAxisTypeNameFromEnum(EVRControllerAxisType eAxisType)
	{
		CheckIfUsable();
		IntPtr result = VRNativeEntrypoints.VR_IVRSystem_GetControllerAxisTypeNameFromEnum(m_pVRSystem,eAxisType);
		return (string) Marshal.PtrToStructure(result, typeof(string));
	}
Пример #5
0
 public string GetButtonIdNameFromEnum(EVRButtonId eButtonId) => default;                     // 0x00000001811DFFF0-0x00000001811E0070
 public string GetControllerAxisTypeNameFromEnum(EVRControllerAxisType eAxisType) => default; // 0x00000001811E0070-0x00000001811E00F0
Пример #6
0
	public string GetControllerAxisTypeNameFromEnum(EVRControllerAxisType eAxisType)
	{
		IntPtr result = FnTable.GetControllerAxisTypeNameFromEnum(eAxisType);
		return Marshal.PtrToStringAnsi(result);
	}
Пример #7
0
 // Token: 0x06001EFB RID: 7931 RVA: 0x0009CCE3 File Offset: 0x0009AEE3
 public string GetControllerAxisTypeNameFromEnum(EVRControllerAxisType eAxisType)
 {
     return(Marshal.PtrToStringAnsi(this.FnTable.GetControllerAxisTypeNameFromEnum(eAxisType)));
 }
Пример #8
0
        public string GetControllerAxisTypeNameFromEnum(EVRControllerAxisType eAxisType)
        {
            IntPtr ptr = this.FnTable.GetControllerAxisTypeNameFromEnum(eAxisType);

            return((string)Marshal.PtrToStructure(ptr, typeof(string)));
        }
    public void Update()
    {
        for (uint deviceIdx = 0; deviceIdx < OpenVR.k_unMaxTrackedDeviceCount; ++deviceIdx)
        {
            ControllerStateTracker controllerStateTracker = controllerManager.StateTrackers[deviceIdx];

            if (!controllerStateTracker.MenuActive)
            {
                continue;
            }

            uint        primaryAxisIdx      = 0;
            EVRButtonId primaryAxisButtonId = EVRButtonId.k_EButton_Axis0 + (int)primaryAxisIdx;

            if (controllerStateTracker.WasClicked(primaryAxisButtonId) ||
                controllerStateTracker.WasClicked(EVRButtonId.k_EButton_A))                   //k_EButton_A is the A/X button on touch
            {
                model.Press();
            }

            if (controllerStateTracker.WasClicked(EVRButtonId.k_EButton_Grip))
            {
                model.PressSecondary();
            }

            EVRControllerAxisType axisType = (EVRControllerAxisType)OpenVR.System.GetInt32TrackedDeviceProperty(deviceIdx,
                                                                                                                ETrackedDeviceProperty.Prop_Axis0Type_Int32 + (int)primaryAxisIdx);

            if (axisType == EVRControllerAxisType.k_eControllerAxis_TrackPad)
            {
                //use interial scrolling
                if (controllerStateTracker.HasTouchDelta(primaryAxisIdx))
                {
                    Vector2 delta = controllerStateTracker.GetTouchDelta(primaryAxisIdx);
                    velocities[deviceIdx] = delta / controllerStateTracker.GetUpdateRate();
                    ApplyDelta(delta, deviceIdx, primaryAxisIdx);
                }
                else if (!controllerStateTracker.IsTouched(primaryAxisButtonId))
                {
                    Vector2 velocity = velocities[deviceIdx];
                    if (velocity != Vector2.Zero)
                    {
                        if (velocity.LengthSquared() < 1e-5f)
                        {
                            velocity = Vector2.Zero;
                            model.DoneMove();
                        }
                        else
                        {
                            velocity *= 0.99f;
                            ApplyDelta(velocity, deviceIdx, primaryAxisIdx);
                        }
                        velocities[deviceIdx] = velocity;
                    }
                }
            }
            else
            {
                //use velocity scrolling
                if (controllerStateTracker.IsTouched(primaryAxisButtonId))
                {
                    Vector2 position = controllerStateTracker.GetAxisPosition(primaryAxisIdx);
                    Vector2 velocity = PowerCurve(position, 2) * 0.2f;
                    Vector2 delta    = velocity;
                    ApplyDelta(delta, deviceIdx, primaryAxisIdx);
                }
                else if (controllerStateTracker.BecameUntouched(primaryAxisButtonId))
                {
                    model.DoneMove();
                }
            }
        }
    }