private static void UpdateFieldString <TEnum>(ref ulong prev, ulong curr, List <string> setNames) #if CSHARP_7_OR_LATER where TEnum : Enum #endif { if (curr != prev) { var enumInfo = EnumUtils.GetDisplayInfo(typeof(TEnum)); for (int i = EnumArrayBase <TEnum> .StaticMinInt, imax = EnumArrayBase <TEnum> .StaticMaxInt; i <= imax; ++i) { if (EnumArrayBase <TEnum> .StaticIsValidIndex(i)) { var mask = 1ul << i; var wasSet = (prev & mask) > 0ul; var nowSet = (curr & mask) > 0ul; if (!wasSet) { if (nowSet) { setNames.Add(GetDisplayName <TEnum>(enumInfo, i)); } } else { if (!nowSet) { setNames.Remove(GetDisplayName <TEnum>(enumInfo, i)); } } } } prev = curr; } }
public bool TryGetValidTooltipRig(ControllerButton button, out TooltipRig rig) { rig = default(TooltipRig); if (!EnumArrayBase <ControllerButton> .StaticIsValidIndex((int)button)) { return(false); } var model = VRModule.GetDeviceState(m_viveRole.GetDeviceIndex()).deviceModel; var rigSetAsset = (TooltipRigAsset)null; if (m_customTooltipRigSet != null) { rigSetAsset = m_customTooltipRigSet[(int)model]; } if (rigSetAsset != null || TooltipRigAsset.TryGetDefaultAsset(model, out rigSetAsset)) { var entries = rigSetAsset.rigEntries; if (entries != null && entries.Count > 0) { for (int i = 0, imax = entries.Count; i < imax; ++i) { var entry = entries[i]; if (entry.button == button) { rig = entry.tooltipRig; return(true); } } } } return(false); }
private static string GetDisplayName <TEnum>(EnumUtils.EnumDisplayInfo info, int i) #if CSHARP_7_OR_LATER where TEnum : Enum #endif { int displayIndex; if (info.value2displayedIndex.TryGetValue(i, out displayIndex)) { return(info.displayedNames[displayIndex]); } else { return(EnumArrayBase <TEnum> .I2E(i).ToString()); } }
private void UpdateFingerJoints(JointEnumArray.IReadOnly roomSpaceJoints, Transform parentTransform, RigidPose roomSpaceParentPoseInverse, HandJointName startJoint, HandJointName endJoint) { foreach (var index in EnumArrayBase <HandJointName> .StaticEnumsFrom(startJoint, endJoint)) { var jointTrans = m_modelJoints[index]; if (jointTrans == null) { continue; } var data = roomSpaceJoints[index]; if (!data.isValid) { continue; } var parentSpaceJointPose = roomSpaceParentPoseInverse * data.pose; UpdateJointTransformLocal(parentTransform, jointTrans, parentSpaceJointPose); parentTransform = jointTrans; roomSpaceParentPoseInverse = data.pose.GetInverse(); } }
public static bool TryGetDefaultAsset(VRModuleDeviceModel model, out TooltipRigAsset rigAsset) { if (!EnumArrayBase <VRModuleDeviceModel> .StaticIsValidIndex((int)model)) { rigAsset = null; return(false); } if (s_defaultTooltipRigSets == null) { s_defaultTooltipRigSets = new EnumArray <VRModuleDeviceModel, LoadedRigSet>(); } var loadedRigSet = s_defaultTooltipRigSets[(int)model]; if (!loadedRigSet.haveLoaded) { TooltipRigAsset asset = null; int modelNameIndex; var info = EnumUtils.GetDisplayInfo(typeof(VRModuleDeviceModel)); if (info.value2displayedIndex.TryGetValue((int)model, out modelNameIndex)) { asset = Resources.Load <TooltipRigAsset>("TooltipRig/VIUTooltipRig" + info.displayedNames[modelNameIndex]); } s_defaultTooltipRigSets[(int)model] = loadedRigSet = new LoadedRigSet() { haveLoaded = true, asset = asset, }; } if (loadedRigSet.asset == null) { rigAsset = null; return(false); } rigAsset = loadedRigSet.asset; return(rigAsset != null); }