Initialer Upload neues Unity-Projekt
This commit is contained in:
132
Assets/SteamVR/Scripts/SteamVR_TestController.cs
Normal file
132
Assets/SteamVR/Scripts/SteamVR_TestController.cs
Normal file
@ -0,0 +1,132 @@
|
||||
//======= Copyright (c) Valve Corporation, All rights reserved. ===============
|
||||
//
|
||||
// Purpose: Test SteamVR_Controller support.
|
||||
//
|
||||
//=============================================================================
|
||||
|
||||
using UnityEngine;
|
||||
using System.Collections.Generic;
|
||||
using Valve.VR;
|
||||
|
||||
public class SteamVR_TestController : MonoBehaviour
|
||||
{
|
||||
List<int> controllerIndices = new List<int>();
|
||||
|
||||
private void OnDeviceConnected(int index, bool connected)
|
||||
{
|
||||
var system = OpenVR.System;
|
||||
if (system == null || system.GetTrackedDeviceClass((uint)index) != ETrackedDeviceClass.Controller)
|
||||
return;
|
||||
|
||||
if (connected)
|
||||
{
|
||||
Debug.Log(string.Format("Controller {0} connected.", index));
|
||||
PrintControllerStatus(index);
|
||||
controllerIndices.Add(index);
|
||||
}
|
||||
else
|
||||
{
|
||||
Debug.Log(string.Format("Controller {0} disconnected.", index));
|
||||
PrintControllerStatus(index);
|
||||
controllerIndices.Remove(index);
|
||||
}
|
||||
}
|
||||
|
||||
void OnEnable()
|
||||
{
|
||||
SteamVR_Events.DeviceConnected.Listen(OnDeviceConnected);
|
||||
}
|
||||
|
||||
void OnDisable()
|
||||
{
|
||||
SteamVR_Events.DeviceConnected.Remove(OnDeviceConnected);
|
||||
}
|
||||
|
||||
void PrintControllerStatus(int index)
|
||||
{
|
||||
var device = SteamVR_Controller.Input(index);
|
||||
Debug.Log("index: " + device.index);
|
||||
Debug.Log("connected: " + device.connected);
|
||||
Debug.Log("hasTracking: " + device.hasTracking);
|
||||
Debug.Log("outOfRange: " + device.outOfRange);
|
||||
Debug.Log("calibrating: " + device.calibrating);
|
||||
Debug.Log("uninitialized: " + device.uninitialized);
|
||||
Debug.Log("pos: " + device.transform.pos);
|
||||
Debug.Log("rot: " + device.transform.rot.eulerAngles);
|
||||
Debug.Log("velocity: " + device.velocity);
|
||||
Debug.Log("angularVelocity: " + device.angularVelocity);
|
||||
|
||||
var l = SteamVR_Controller.GetDeviceIndex(SteamVR_Controller.DeviceRelation.Leftmost);
|
||||
var r = SteamVR_Controller.GetDeviceIndex(SteamVR_Controller.DeviceRelation.Rightmost);
|
||||
Debug.Log((l == r) ? "first" : (l == index) ? "left" : "right");
|
||||
}
|
||||
|
||||
EVRButtonId[] buttonIds = new EVRButtonId[] {
|
||||
EVRButtonId.k_EButton_ApplicationMenu,
|
||||
EVRButtonId.k_EButton_Grip,
|
||||
EVRButtonId.k_EButton_SteamVR_Touchpad,
|
||||
EVRButtonId.k_EButton_SteamVR_Trigger
|
||||
};
|
||||
|
||||
EVRButtonId[] axisIds = new EVRButtonId[] {
|
||||
EVRButtonId.k_EButton_SteamVR_Touchpad,
|
||||
EVRButtonId.k_EButton_SteamVR_Trigger
|
||||
};
|
||||
|
||||
public Transform point, pointer;
|
||||
|
||||
void Update()
|
||||
{
|
||||
foreach (var index in controllerIndices)
|
||||
{
|
||||
var overlay = SteamVR_Overlay.instance;
|
||||
if (overlay && point && pointer)
|
||||
{
|
||||
var t = SteamVR_Controller.Input(index).transform;
|
||||
pointer.transform.localPosition = t.pos;
|
||||
pointer.transform.localRotation = t.rot;
|
||||
|
||||
var results = new SteamVR_Overlay.IntersectionResults();
|
||||
var hit = overlay.ComputeIntersection(t.pos, t.rot * Vector3.forward, ref results);
|
||||
if (hit)
|
||||
{
|
||||
point.transform.localPosition = results.point;
|
||||
point.transform.localRotation = Quaternion.LookRotation(results.normal);
|
||||
}
|
||||
|
||||
continue;
|
||||
}
|
||||
|
||||
foreach (var buttonId in buttonIds)
|
||||
{
|
||||
if (SteamVR_Controller.Input(index).GetPressDown(buttonId))
|
||||
Debug.Log(buttonId + " press down");
|
||||
if (SteamVR_Controller.Input(index).GetPressUp(buttonId))
|
||||
{
|
||||
Debug.Log(buttonId + " press up");
|
||||
if (buttonId == EVRButtonId.k_EButton_SteamVR_Trigger)
|
||||
{
|
||||
SteamVR_Controller.Input(index).TriggerHapticPulse();
|
||||
PrintControllerStatus(index);
|
||||
}
|
||||
}
|
||||
if (SteamVR_Controller.Input(index).GetPress(buttonId))
|
||||
Debug.Log(buttonId);
|
||||
}
|
||||
|
||||
foreach (var buttonId in axisIds)
|
||||
{
|
||||
if (SteamVR_Controller.Input(index).GetTouchDown(buttonId))
|
||||
Debug.Log(buttonId + " touch down");
|
||||
if (SteamVR_Controller.Input(index).GetTouchUp(buttonId))
|
||||
Debug.Log(buttonId + " touch up");
|
||||
if (SteamVR_Controller.Input(index).GetTouch(buttonId))
|
||||
{
|
||||
var axis = SteamVR_Controller.Input(index).GetAxis(buttonId);
|
||||
Debug.Log("axis: " + axis);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user