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 2016-2020, HTC Corporation. All rights reserved. ===========
using HTC.UnityPlugin.VRModuleManagement;
namespace HTC.UnityPlugin.Vive{ [ViveRoleEnum((int)TrackerRole.Invalid)] public enum TrackerRole { Invalid, Tracker1, Tracker2, Tracker3, Tracker4, Tracker5, Tracker6, Tracker7, Tracker8, Tracker9, Tracker10, Tracker11, Tracker12, Tracker13, }
public class TrackerRoleHandler : ViveRole.MapHandler<TrackerRole> { private bool IsTracker(uint deviceIndex) { return IsTracker(VRModule.GetCurrentDeviceState(deviceIndex).deviceClass); }
private bool IsTracker(VRModuleDeviceClass deviceClass) { return deviceClass == VRModuleDeviceClass.GenericTracker; }
public override void OnAssignedAsCurrentMapHandler() { Refresh(); }
public override void OnConnectedDeviceChanged(uint deviceIndex, VRModuleDeviceClass deviceClass, string deviceSN, bool connected) { if (!RoleMap.IsDeviceBound(deviceSN) && !IsTracker(deviceClass)) { return; }
Refresh(); }
public override void OnBindingChanged(string deviceSN, bool previousIsBound, TrackerRole previousRole, bool currentIsBound, TrackerRole currentRole) { uint deviceIndex; if (!VRModule.TryGetConnectedDeviceIndex(deviceSN, out deviceIndex)) { return; }
Refresh(); }
public void Refresh() { MappingTrackers(); }
private void MappingTrackers() { var deviceIndex = 0u; for (var role = RoleInfo.MinValidRole; role <= RoleInfo.MaxValidRole; ++role) { if (!RoleInfo.IsValidRole(role)) { continue; } if (RoleMap.IsRoleBound(role)) { continue; }
// find next valid device
if (VRModule.IsValidDeviceIndex(deviceIndex)) { while (!IsTracker(deviceIndex) || RoleMap.IsDeviceConnectedAndBound(deviceIndex)) { if (!VRModule.IsValidDeviceIndex(++deviceIndex)) { break; } } }
if (VRModule.IsValidDeviceIndex(deviceIndex)) { MappingRole(role, deviceIndex++); } else { UnmappingRole(role); } } } }}
|