void UpdateBindings(ulong updateTick, float deltaTime)
        {
            var lastInputType            = LastInputType;
            var lastInputTypeChangedTick = LastInputTypeChangedTick;
            var lastUpdateTick           = UpdateTick;
            var lastDeviceClass          = LastDeviceClass;
            var lastDeviceStyle          = LastDeviceStyle;

            var bindingCount = regularBindings.Count;

            for (var i = bindingCount - 1; i >= 0; i--)
            {
                var binding = regularBindings[i];

                if (binding.BoundTo != this)
                {
                    regularBindings.RemoveAt(i);
                    visibleBindings.Remove(binding);
                }
                else
                {
                    var value = binding.GetValue(Device);
                    if (UpdateWithValue(value, updateTick, deltaTime))
                    {
                        lastInputType            = binding.BindingSourceType;
                        lastInputTypeChangedTick = updateTick;
                        lastDeviceClass          = binding.DeviceClass;
                        lastDeviceStyle          = binding.DeviceStyle;
                    }
                }
            }

            Commit();

            Enabled = Owner.Enabled;

            if (lastInputTypeChangedTick > LastInputTypeChangedTick)
            {
                if (lastInputType != BindingSourceType.MouseBindingSource ||
                    Utility.Abs(LastValue - Value) >= MouseBindingSource.JitterThreshold)
                {
                    var triggerEvent = lastInputType != LastInputType;

                    LastInputType            = lastInputType;
                    LastInputTypeChangedTick = lastInputTypeChangedTick;
                    LastDeviceClass          = lastDeviceClass;
                    LastDeviceStyle          = lastDeviceStyle;

                    if (OnLastInputTypeChanged != null && triggerEvent)
                    {
                        OnLastInputTypeChanged.Invoke(lastInputType);
                    }
                }
            }

            if (UpdateTick > lastUpdateTick)
            {
                activeDevice = LastInputTypeIsDevice ? Device : null;
            }
        }
Ejemplo n.º 2
0
        void Update(ulong updateTick, float deltaTime)
        {
            var device = Device ?? InputManager.ActiveDevice;

            var actionsCount = actions.Count;

            for (int i = 0; i < actionsCount; i++)
            {
                var action = actions[i];

                action.Update(updateTick, deltaTime, device);

                if (action.UpdateTick > UpdateTick)
                {
                    UpdateTick    = action.UpdateTick;
                    LastInputType = action.LastInputType;
                }
            }

            var oneAxisActionsCount = oneAxisActions.Count;

            for (int i = 0; i < oneAxisActionsCount; i++)
            {
                oneAxisActions[i].Update(updateTick, deltaTime);
            }

            var twoAxisActionsCount = twoAxisActions.Count;

            for (int i = 0; i < twoAxisActionsCount; i++)
            {
                twoAxisActions[i].Update(updateTick, deltaTime);
            }
        }
Ejemplo n.º 3
0
 void ProcessActionUpdate(PlayerAction action)
 {
     if (action.UpdateTick > UpdateTick)
     {
         UpdateTick    = action.UpdateTick;
         LastInputType = action.LastInputType;
     }
 }
        /// <param name="description">The localized description provided to the end user when the binding source is singular (such as self binding).</param>
        public BindingSource(string name, BindingSourceType type, string description)
            : this(name, type)
        {
            if (description == null)
            {
                throw new ArgumentNullException(nameof(description));
            }

            Description = description;
        }
        public BindingSource(string name, BindingSourceType type)
        {
            if (name == null)
            {
                throw new ArgumentNullException(nameof(name));
            }

            Name = name;
            Type = type;
        }
Ejemplo n.º 6
0
        internal void Update(ulong updateTick, float deltaTime)
        {
            var device = Device ?? FindActiveDevice();

            var lastInputType            = LastInputType;
            var lastInputTypeChangedTick = LastInputTypeChangedTick;

            var actionsCount = actions.Count;

            for (var i = 0; i < actionsCount; i++)
            {
                var action = actions[i];

                action.Update(updateTick, deltaTime, device);

                if (action.UpdateTick > UpdateTick)
                {
                    UpdateTick   = action.UpdateTick;
                    activeDevice = action.ActiveDevice;
                }

                if (action.LastInputTypeChangedTick > lastInputTypeChangedTick)
                {
                    lastInputType            = action.LastInputType;
                    lastInputTypeChangedTick = action.LastInputTypeChangedTick;
                }
            }

            var oneAxisActionsCount = oneAxisActions.Count;

            for (var i = 0; i < oneAxisActionsCount; i++)
            {
                oneAxisActions[i].Update(updateTick, deltaTime);
            }

            var twoAxisActionsCount = twoAxisActions.Count;

            for (var i = 0; i < twoAxisActionsCount; i++)
            {
                twoAxisActions[i].Update(updateTick, deltaTime);
            }

            if (lastInputTypeChangedTick > LastInputTypeChangedTick)
            {
                var triggerEvent = lastInputType != LastInputType;

                LastInputType            = lastInputType;
                LastInputTypeChangedTick = lastInputTypeChangedTick;

                if (OnLastInputTypeChanged != null && triggerEvent)
                {
                    OnLastInputTypeChanged.Invoke(lastInputType);
                }
            }
        }
 private void ProcessCodeFunctions(CodeClass codeClass, BindingSourceType bindingSourceType, IdeBindingSourceProcessor bindingSourceProcessor)
 {
     foreach (var codeFunction in codeClass.Children.OfType <CodeFunction>())
     {
         var bindingSourceMethod = CreateBindingSourceMethod(codeFunction, bindingSourceType, bindingSourceProcessor);
         if (bindingSourceMethod != null)
         {
             bindingSourceProcessor.ProcessMethod(bindingSourceMethod);
         }
     }
 }
Ejemplo n.º 8
0
        private void UpdateBindings(ulong updateTick, float deltaTime)
        {
            bool flag = IsListeningForBinding || (Owner.IsListeningForBinding && Owner.PreventInputWhileListeningForBinding);
            BindingSourceType bindingSourceType = LastInputType;
            ulong             num             = LastInputTypeChangedTick;
            ulong             updateTick2     = base.UpdateTick;
            InputDeviceClass  lastDeviceClass = LastDeviceClass;
            InputDeviceStyle  lastDeviceStyle = LastDeviceStyle;
            int count = regularBindings.Count;

            for (int num2 = count - 1; num2 >= 0; num2--)
            {
                BindingSource bindingSource = regularBindings[num2];
                if (bindingSource.BoundTo != this)
                {
                    regularBindings.RemoveAt(num2);
                    visibleBindings.Remove(bindingSource);
                }
                else if (!flag)
                {
                    float value = bindingSource.GetValue(Device);
                    if (UpdateWithValue(value, updateTick, deltaTime))
                    {
                        bindingSourceType = bindingSource.BindingSourceType;
                        num             = updateTick;
                        lastDeviceClass = bindingSource.DeviceClass;
                        lastDeviceStyle = bindingSource.DeviceStyle;
                    }
                }
            }
            if (flag || count == 0)
            {
                UpdateWithValue(0f, updateTick, deltaTime);
            }
            Commit();
            Enabled = Owner.Enabled;
            if (num > LastInputTypeChangedTick && (bindingSourceType != BindingSourceType.MouseBindingSource || Utility.Abs(base.LastValue - base.Value) >= MouseBindingSource.JitterThreshold))
            {
                bool flag2 = bindingSourceType != LastInputType;
                LastInputType            = bindingSourceType;
                LastInputTypeChangedTick = num;
                LastDeviceClass          = lastDeviceClass;
                LastDeviceStyle          = lastDeviceStyle;
                if (this.OnLastInputTypeChanged != null && flag2)
                {
                    this.OnLastInputTypeChanged(bindingSourceType);
                }
            }
            if (base.UpdateTick > updateTick2)
            {
                activeDevice = ((!LastInputTypeIsDevice) ? null : Device);
            }
        }
Ejemplo n.º 9
0
        internal void Update(ulong updateTick, float deltaTime)
        {
            InputDevice       device                   = Device ?? FindActiveDevice();
            BindingSourceType lastInputType            = LastInputType;
            ulong             lastInputTypeChangedTick = LastInputTypeChangedTick;
            InputDeviceClass  lastDeviceClass          = LastDeviceClass;
            InputDeviceStyle  lastDeviceStyle          = LastDeviceStyle;
            int count = actions.Count;

            for (int i = 0; i < count; i++)
            {
                PlayerAction playerAction = actions[i];
                playerAction.Update(updateTick, deltaTime, device);
                if (playerAction.UpdateTick > UpdateTick)
                {
                    UpdateTick   = playerAction.UpdateTick;
                    activeDevice = playerAction.ActiveDevice;
                }
                if (playerAction.LastInputTypeChangedTick > lastInputTypeChangedTick)
                {
                    lastInputType            = playerAction.LastInputType;
                    lastInputTypeChangedTick = playerAction.LastInputTypeChangedTick;
                    lastDeviceClass          = playerAction.LastDeviceClass;
                    lastDeviceStyle          = playerAction.LastDeviceStyle;
                }
            }
            int count2 = oneAxisActions.Count;

            for (int j = 0; j < count2; j++)
            {
                oneAxisActions[j].Update(updateTick, deltaTime);
            }
            int count3 = twoAxisActions.Count;

            for (int k = 0; k < count3; k++)
            {
                twoAxisActions[k].Update(updateTick, deltaTime);
            }
            if (lastInputTypeChangedTick > LastInputTypeChangedTick)
            {
                bool flag = lastInputType != LastInputType;
                LastInputType            = lastInputType;
                LastInputTypeChangedTick = lastInputTypeChangedTick;
                LastDeviceClass          = lastDeviceClass;
                LastDeviceStyle          = lastDeviceStyle;
                if (this.OnLastInputTypeChanged != null && flag)
                {
                    this.OnLastInputTypeChanged(lastInputType);
                }
            }
        }
Ejemplo n.º 10
0
    void ProcessActionUpdate(PlayerAction action)
    {
        var lastInputType = LastInputType;

        if (action.UpdateTick > UpdateTick)
        {
            UpdateTick    = action.UpdateTick;
            lastInputType = action.LastInputType;
        }

        if (LastInputType != lastInputType)
        {
            LastInputType = lastInputType;
        }
    }
Ejemplo n.º 11
0
        internal int CountBindingsOfType(BindingSourceType bindingSourceType)
        {
            int count        = 0;
            var bindingCount = regularBindings.Count;

            for (int i = 0; i < bindingCount; i++)
            {
                var binding = regularBindings[i];
                if (binding.BoundTo == this && binding.BindingSourceType == bindingSourceType)
                {
                    count += 1;
                }
            }
            return(count);
        }
Ejemplo n.º 12
0
        internal void RemoveFirstBindingOfType(BindingSourceType bindingSourceType)
        {
            var bindingCount = regularBindings.Count;

            for (int i = 0; i < bindingCount; i++)
            {
                var binding = regularBindings[i];
                if (binding.BoundTo == this && binding.BindingSourceType == bindingSourceType)
                {
                    binding.BoundTo = null;
                    regularBindings.RemoveAt(i);
                    return;
                }
            }
        }
Ejemplo n.º 13
0
        private int CountBindingsOfType(BindingSourceType bindingSourceType)
        {
            int num   = 0;
            int count = regularBindings.Count;

            for (int i = 0; i < count; i++)
            {
                BindingSource bindingSource = regularBindings[i];
                if (bindingSource.BoundTo == this && bindingSource.BindingSourceType == bindingSourceType)
                {
                    num++;
                }
            }
            return(num);
        }
Ejemplo n.º 14
0
        void RemoveFirstBindingOfType(BindingSourceType bindingSourceType)
        {
            var bindingCount = regularBindings.Count;

            for (var i = 0; i < bindingCount; i++)
            {
                var binding = regularBindings[i];
                if (binding.BoundTo == this && binding.BindingSourceType == bindingSourceType)
                {
                    binding.BoundTo = null;
                    regularBindings.RemoveAt(i);
                    triggerBindingChanged = true;
                    return;
                }
            }
        }
Ejemplo n.º 15
0
    void UpdateBindings(ulong updateTick, float deltaTime)
    {
        var lastInputType            = LastInputType;
        var lastInputTypeChangedTick = LastInputTypeChangedTick;
        var lastUpdateTick           = UpdateTick;

        var bindingCount = regularBindings.Count;

        for (var i = bindingCount - 1; i >= 0; i--)
        {
            var binding = regularBindings[i];

            if (binding.BoundTo != this)
            {
                regularBindings.RemoveAt(i);
                visibleBindings.Remove(binding);
            }
            else
            {
                var value = binding.GetValue(Device);
                if (UpdateWithValue(value, updateTick, deltaTime))
                {
                    lastInputType            = binding.BindingSourceType;
                    lastInputTypeChangedTick = updateTick;
                }
            }
        }

        if (bindingCount == 0)
        {
            UpdateWithValue(0.0f, updateTick, deltaTime);
        }

        Commit();

        if (lastInputTypeChangedTick > LastInputTypeChangedTick)
        {
            if (lastInputType != BindingSourceType.MouseBindingSource ||
                Utility.Abs(LastValue - Value) >= MouseBindingSource.JitterThreshold)
            {
                var triggerEvent = lastInputType != LastInputType;

                LastInputType            = lastInputType;
                LastInputTypeChangedTick = lastInputTypeChangedTick;
            }
        }
    }
Ejemplo n.º 16
0
    void AddNewBindingSource(object sourceType)
    {
        BindingSourceType type = (BindingSourceType)sourceType;

        //show an object selection field based on the whether monobehavior or scriptable object
        int index = BindingSourceList.serializedProperty.arraySize;

        BindingSourceList.serializedProperty.arraySize++;
        BindingSourceList.index = index;

        SerializedProperty element = BindingSourceList.serializedProperty.GetArrayElementAtIndex(index);

        element.FindPropertyRelative("ReferenceType").enumValueIndex         = (int)type;
        element.FindPropertyRelative("ObjectReference").objectReferenceValue = null;

        serializedObject.ApplyModifiedProperties();
    }
        private void ProcessActionUpdate(PlayerAction action)
        {
            BindingSourceType lastInputType = LastInputType;

            if (action.UpdateTick > base.UpdateTick)
            {
                base.UpdateTick = action.UpdateTick;
                lastInputType   = action.LastInputType;
            }
            if (LastInputType != lastInputType)
            {
                LastInputType = lastInputType;
                if (this.OnLastInputTypeChanged != null)
                {
                    this.OnLastInputTypeChanged(lastInputType);
                }
            }
        }
Ejemplo n.º 18
0
        void ProcessActionUpdate(PlayerAction action)
        {
            var lastInputType = LastInputType;

            if (action.UpdateTick > UpdateTick)
            {
                UpdateTick    = action.UpdateTick;
                lastInputType = action.LastInputType;
            }

            if (LastInputType != lastInputType)
            {
                LastInputType = lastInputType;
                if (OnLastInputTypeChanged != null)
                {
                    OnLastInputTypeChanged.Invoke(lastInputType);
                }
            }
        }
Ejemplo n.º 19
0
    internal void Update(ulong updateTick, float deltaTime)
    {
        var lastInputType            = LastInputType;
        var lastInputTypeChangedTick = LastInputTypeChangedTick;

        var actionsCount = actions.Count;

        for (var i = 0; i < actionsCount; i++)
        {
            var action = actions[i];

            action.Update(updateTick, deltaTime);

            if (action.UpdateTick > UpdateTick)
            {
                UpdateTick = action.UpdateTick;
            }

            if (action.LastInputTypeChangedTick > lastInputTypeChangedTick)
            {
                lastInputType            = action.LastInputType;
                lastInputTypeChangedTick = action.LastInputTypeChangedTick;
            }
        }

        var twoAxisActionsCount = twoAxisActions.Count;

        for (var i = 0; i < twoAxisActionsCount; i++)
        {
            twoAxisActions[i].Update(updateTick, deltaTime);
        }

        if (lastInputTypeChangedTick > LastInputTypeChangedTick)
        {
            var triggerEvent = lastInputType != LastInputType;

            LastInputType            = lastInputType;
            LastInputTypeChangedTick = lastInputTypeChangedTick;
        }
    }
Ejemplo n.º 20
0
        private void RemoveFirstBindingOfType(BindingSourceType bindingSourceType)
        {
            int           count = regularBindings.Count;
            int           num   = 0;
            BindingSource bindingSource;

            while (true)
            {
                if (num < count)
                {
                    bindingSource = regularBindings[num];
                    if (bindingSource.BoundTo == this && bindingSource.BindingSourceType == bindingSourceType)
                    {
                        break;
                    }
                    num++;
                    continue;
                }
                return;
            }
            bindingSource.BoundTo = null;
            regularBindings.RemoveAt(num);
        }
Ejemplo n.º 21
0
        internal void Load(BinaryReader reader, ushort dataFormatVersion)
        {
            ClearBindings();
            int num = reader.ReadInt32();

            for (int i = 0; i < num; i++)
            {
                BindingSourceType bindingSourceType = (BindingSourceType)reader.ReadInt32();
                BindingSource     bindingSource;
                switch (bindingSourceType)
                {
                case BindingSourceType.DeviceBindingSource:
                    bindingSource = new DeviceBindingSource();
                    break;

                case BindingSourceType.KeyBindingSource:
                    bindingSource = new KeyBindingSource();
                    break;

                case BindingSourceType.MouseBindingSource:
                    bindingSource = new MouseBindingSource();
                    break;

                case BindingSourceType.UnknownDeviceBindingSource:
                    bindingSource = new UnknownDeviceBindingSource();
                    break;

                default:
                    throw new InControlException("Don't know how to load BindingSourceType: " + bindingSourceType);

                case BindingSourceType.None:
                    continue;
                }
                bindingSource.Load(reader, dataFormatVersion);
                AddBinding(bindingSource);
            }
        }
        public void ProcessTypeAndMethod_InVisualStudioExtension_ShouldFindBinding()
        {
            // The Visual Studio Extension uses a source code based binding reflection that
            //   * cannot support IPolymorphicBindingType
            //   * resolves the BindingSourceAttribute from the step definition source code without the Types property

            //ARRANGE
            var sut = CreateBindingSourceProcessor();

            BindingSourceType bindingSourceType = new BindingSourceType
            {
                Attributes = new[]
                {
                    CreateBindingSourceAttribute("BindingAttribute", "TechTalk.SpecFlow.BindingAttribute")
                },
            };

            BindingSourceMethod bindingSourceMethod = new BindingSourceMethod();

            bindingSourceMethod.Attributes = new[]
            {
                CreateBindingSourceAttribute("GivenAttribute", "TechTalk.SpecFlow.GivenAttribute")
                .WithValue("an authenticated user"),
            };

            //ACT
            sut.ProcessType(bindingSourceType);
            sut.ProcessMethod(bindingSourceMethod);

            //ASSERT
            var binding = sut.StepDefinitionBindings.Should().ContainSingle().Subject;

            binding.StepDefinitionType.Should().Be(StepDefinitionType.Given);
            binding.Regex.Should().NotBeNull();
            binding.Regex.IsMatch("an authenticated user").Should().BeTrue();
        }
Ejemplo n.º 23
0
        void UpdateBindings(ulong updateTick, float deltaTime)
        {
            var bindingCount = regularBindings.Count;

            for (int i = bindingCount - 1; i >= 0; i--)
            {
                var binding = regularBindings[i];
                if (binding.BoundTo != this)
                {
                    regularBindings.RemoveAt(i);
                    visibleBindings.Remove(binding);
                }
                else
                {
                    var value = binding.GetValue(Device);
                    if (UpdateWithValue(value, updateTick, deltaTime))
                    {
                        LastInputType = binding.BindingSourceType;
                    }
                }
            }

            Commit();
        }
Ejemplo n.º 24
0
		void UpdateBindings( ulong updateTick, float deltaTime )
		{
			var bindingCount = regularBindings.Count;
			for (int i = bindingCount - 1; i >= 0; i--)
			{
				var binding = regularBindings[i];
				if (binding.BoundTo != this)
				{
					regularBindings.RemoveAt( i );
					visibleBindings.Remove( binding );
				}
				else
				{
					var value = binding.GetValue( Device );
					if (UpdateWithValue( value, updateTick, deltaTime ))
					{
						LastInputType = binding.BindingSourceType;
					}
				}
			}

			Commit();
		}
Ejemplo n.º 25
0
 void LastInputTypeChanged(BindingSourceType type)
 {
     UpdateHotkeyText();
 }
Ejemplo n.º 26
0
 void LastInputTypeChanged(BindingSourceType type)
 {
     UpdateSuffix();
 }
Ejemplo n.º 27
0
		internal int CountBindingsOfType( BindingSourceType bindingSourceType )
		{
			int count = 0;
			var bindingCount = regularBindings.Count;
			for (int i = 0; i < bindingCount; i++)
			{
				var binding = regularBindings[i];
				if (binding.BoundTo == this && binding.BindingSourceType == bindingSourceType)
				{
					count += 1;
				}
			}
			return count;
		}
Ejemplo n.º 28
0
		internal void RemoveFirstBindingOfType( BindingSourceType bindingSourceType )
		{
			var bindingCount = regularBindings.Count;
			for (int i = 0; i < bindingCount; i++)
			{
				var binding = regularBindings[i];
				if (binding.BoundTo == this && binding.BindingSourceType == bindingSourceType)
				{
					binding.BoundTo = null;
					regularBindings.RemoveAt( i );
					return;
				}
			}
		}
Ejemplo n.º 29
0
 protected virtual void SetLastInputType(BindingSource inBinding)
 {
     LastInputType = inBinding.BindingSourceType;
 }
Ejemplo n.º 30
0
 private BindingSourceMethod CreateBindingSourceMethod(MethodDefinition methodDefinition, BindingSourceType bindingSourceType, IBindingSourceProcessor bindingSourceProcessor)
 {
     return(new BindingSourceMethod
     {
         BindingMethod = new BindingMethod(bindingSourceType.BindingType, methodDefinition.Name, GetParameters(methodDefinition), GetReturnType(methodDefinition)),
         IsPublic = methodDefinition.IsPublic,
         IsStatic = methodDefinition.IsStatic,
         Attributes = GetAttributes(methodDefinition.CustomAttributes.Where(attr => bindingSourceProcessor.CanProcessTypeAttribute(attr.AttributeType.FullName)))
     });
 }
Ejemplo n.º 31
0
		void Update( ulong updateTick, float deltaTime )
		{
			var device = Device ?? InputManager.ActiveDevice;

			var actionsCount = actions.Count;
			for (int i = 0; i < actionsCount; i++)
			{
				var action = actions[i];

				action.Update( updateTick, deltaTime, device );

				if (action.UpdateTick > UpdateTick)
				{
					UpdateTick = action.UpdateTick;
					LastInputType = action.LastInputType;
				}
			}

			var oneAxisActionsCount = oneAxisActions.Count;
			for (int i = 0; i < oneAxisActionsCount; i++)
			{
				oneAxisActions[i].Update( updateTick, deltaTime );
			}

			var twoAxisActionsCount = twoAxisActions.Count;
			for (int i = 0; i < twoAxisActionsCount; i++)
			{
				twoAxisActions[i].Update( updateTick, deltaTime );
			}
		}
 private BindingSourceMethod CreateBindingSourceMethod(CodeFunction codeFunction, BindingSourceType bindingSourceType, IdeBindingSourceProcessor bindingSourceProcessor)
 {
     try
     {
         var filteredAttributes = codeFunction.Attributes.Cast <CodeAttribute2>().Where(attr => bindingSourceProcessor.CanProcessTypeAttribute(attr.FullName)).ToArray();
         return(bindingReflectionFactory.CreateBindingSourceMethod(codeFunction, bindingSourceType, filteredAttributes));
     }
     catch (Exception ex)
     {
         tracer.Trace("CreateBindingSourceMethod error: {0}", this, ex);
         return(null);
     }
 }
Ejemplo n.º 33
0
 public BindingSourceMethod CreateBindingSourceMethod(CodeFunction codeFunction, BindingSourceType bindingSourceType, CodeAttribute2[] filteredAttributes)
 {
     return(new BindingSourceMethod
     {
         BindingMethod = CreateBindingMethod(codeFunction),
         IsPublic = codeFunction.Access == vsCMAccess.vsCMAccessPublic,
         IsStatic = (codeFunction.FunctionKind & vsCMFunction.vsCMFunctionShared) != 0,
         Attributes = GetAttributes(filteredAttributes)
     });
 }