Beispiel #1
0
            // both roleValue and deviceIndex must be valid
            // ignore binding state
            private void InternalUnmapping(int roleValue, uint deviceIndex)
            {
                if (m_lockInternalMapping)
                {
                    throw new Exception("Recursive calling InternalMapping");
                }
                m_lockInternalMapping = true;

                var roleOffset = m_info.RoleValueToRoleOffset(roleValue);
                var eventArg   = new MappingChangedEventArg()
                {
                    roleValue           = roleValue,
                    previousDeviceIndex = deviceIndex,
                    currentDeviceIndex  = VRModule.INVALID_DEVICE_INDEX,
                };

                m_role2index[roleOffset]  = VRModule.INVALID_DEVICE_INDEX;
                m_index2role[deviceIndex] = m_info.InvalidRoleValue;

                if (onRoleValueMappingChanged != null)
                {
                    onRoleValueMappingChanged(this, eventArg);
                }

                m_lockInternalMapping = false;
            }
Beispiel #2
0
 private void OnMappingChanged(IMap map, MappingChangedEventArg arg)
 {
     if (onRoleMappingChanged != null)
     {
         onRoleMappingChanged(this, new MappingChangedEventArg <TRole>()
         {
             role = m_info.ToRole(arg.roleValue),
             previousDeviceIndex = arg.previousDeviceIndex,
             currentDeviceIndex  = arg.currentDeviceIndex,
         });
     }
 }
Beispiel #3
0
            // both roleValue and deviceIndex must be valid
            // ignore binding state
            private void InternalMapping(int roleValue, uint deviceIndex)
            {
                if (m_lockInternalMapping)
                {
                    throw new Exception("Recursive calling InternalMapping");
                }
                m_lockInternalMapping = true;

                var previousRoleValue = m_index2role[deviceIndex];

                if (roleValue == previousRoleValue)
                {
                    m_lockInternalMapping = false;
                    return;
                }

                if (m_info.IsValidRoleValue(previousRoleValue))
                {
                    m_lockInternalMapping = false;
                    InternalUnmapping(previousRoleValue, deviceIndex);
                    m_lockInternalMapping = true;
                }

                var roleOffset          = m_info.RoleValueToRoleOffset(roleValue);
                var previousDeviceIndex = m_role2index[roleOffset];
                var eventArg            = new MappingChangedEventArg()
                {
                    roleValue           = roleValue,
                    previousDeviceIndex = previousDeviceIndex,
                    currentDeviceIndex  = deviceIndex,
                };

                m_role2index[roleOffset]  = deviceIndex;
                m_index2role[deviceIndex] = roleValue;

                if (VRModule.IsValidDeviceIndex(previousDeviceIndex))
                {
                    m_index2role[previousDeviceIndex] = m_info.InvalidRoleValue;
                }

                if (onRoleValueMappingChanged != null)
                {
                    onRoleValueMappingChanged(this, eventArg);
                }

                m_lockInternalMapping = false;
            }