2021년 4학년 1학기 기업연계프로젝트2
컴퓨터소프트웨어공학과 <원광투어팀>
팀장 : 송유진
팀원 : 김나영, 이경희, 한유진
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
//======= Copyright (c) Valve Corporation, All rights reserved. ===============
//
// Purpose: For controlling in-game objects with tracked devices.
//
//=============================================================================
using UnityEngine;using Valve.VR;
namespace Valve.VR{ public class SteamVR_TrackedObject : MonoBehaviour { public enum EIndex { None = -1, Hmd = (int)OpenVR.k_unTrackedDeviceIndex_Hmd, Device1, Device2, Device3, Device4, Device5, Device6, Device7, Device8, Device9, Device10, Device11, Device12, Device13, Device14, Device15, Device16 }
public EIndex index;
[Tooltip("If not set, relative to parent")] public Transform origin;
public bool isValid { get; private set; }
private void OnNewPoses(TrackedDevicePose_t[] poses) { if (index == EIndex.None) return;
var i = (int)index;
isValid = false; if (poses.Length <= i) return;
if (!poses[i].bDeviceIsConnected) return;
if (!poses[i].bPoseIsValid) return;
isValid = true;
var pose = new SteamVR_Utils.RigidTransform(poses[i].mDeviceToAbsoluteTracking);
if (origin != null) { transform.position = origin.transform.TransformPoint(pose.pos); transform.rotation = origin.rotation * pose.rot; } else { transform.localPosition = pose.pos; transform.localRotation = pose.rot; } }
SteamVR_Events.Action newPosesAction;
SteamVR_TrackedObject() { newPosesAction = SteamVR_Events.NewPosesAction(OnNewPoses); }
private void Awake() { OnEnable(); }
void OnEnable() { var render = SteamVR_Render.instance; if (render == null) { enabled = false; return; }
newPosesAction.enabled = true; }
void OnDisable() { newPosesAction.enabled = false; isValid = false; }
public void SetDeviceIndex(int index) { if (System.Enum.IsDefined(typeof(EIndex), index)) this.index = (EIndex)index; } }}
|