Пример #1
0
        private void Update(EvaluationContext context)
        {
            if (!_initialized)
            {
                SetupMediaFoundation();
                _initialized = true;
            }

            if (Texture.DirtyFlag.IsDirty || ShaderResourceView.DirtyFlag.IsDirty)
            {
                SetupTexture(new Size2(512, 512));
                //Initialize(filepath: Path.GetValue(context));
            }

            if (_engine == null)
            {
                return;
            }

            if (Path.DirtyFlag.IsDirty)
            {
                Url = Path.GetValue(context);
            }

            //TransferFrame();
            UpdateVideo();
        }
Пример #2
0
        public static T GetValueOfFieldWithType <T>(EvaluationContext context, InputSlot <StructuredList> dataListInput, InputSlot <int> itemIndex, InputSlot <int> FieldIndex,
                                                    InputSlot <string> orFieldName, ref FieldInfo fieldRef)
        {
            var list = dataListInput.GetValue(context);

            if (list == null || list.NumElements == 0)
            {
                return(default);
Пример #3
0
 public static T GetEnumValue <T>(this InputSlot <int> intInputSlot, EvaluationContext context) where T : Enum
 {
     return(CastTo <T> .From(intInputSlot.GetValue(context)));
 }
Пример #4
0
        private void Update(EvaluationContext context)
        {
            _trainedDeviceName   = Device.GetValue(context);
            _trainedChannel      = Channel.GetValue(context);
            _trainedControllerId = Control.GetValue(context);
            _allowPresets        = AllowPresets.GetValue(context);

            _controlRange = ControlRange.GetValue(context);

            _printLogMessages = PrintLogMessages.GetValue(context);

            var teachTrigger       = !TeachTrigger.GetValue(context);
            var teachJustTriggered = !teachTrigger && !_oldTeachTrigger;

            _oldTeachTrigger = !teachTrigger;
            var controlRangeSize = (_controlRange.Height - _controlRange.Width).Clamp(1, 128);

            if (_valuesForControlRange == null || _valuesForControlRange.Count != controlRangeSize)
            {
                _valuesForControlRange = new List <float>(controlRangeSize);
                _valuesForControlRange.AddRange(new float[controlRangeSize]); //initialize list values
            }

            if (teachJustTriggered)
            {
                MidiInConnectionManager.Rescan();
                _teachingActive = true;
                _lastMatchingSignals.Clear();
                _currentControllerValue = 0;
            }

            lock (this)
            {
                foreach (var signal in _lastMatchingSignals)
                {
                    if (_teachingActive)
                    {
                        Device.TypedInputValue.Value = _lastMessageDevice.ProductName;
                        Device.Input.IsDefault       = false;
                        Device.DirtyFlag.Invalidate();

                        Channel.TypedInputValue.Value = signal.Channel;
                        Channel.Input.IsDefault       = false;
                        Channel.DirtyFlag.Invalidate();

                        Control.TypedInputValue.Value = signal.ControllerId;
                        Control.Input.IsDefault       = false;
                        Control.DirtyFlag.Invalidate();

                        _trainedDeviceName   = _lastMessageDevice.ProductName;
                        _trainedChannel      = signal.Channel;
                        _trainedControllerId = signal.ControllerId;
                        _teachingActive      = false;

                        TeachTrigger.TypedInputValue.Value = false;
                    }

                    _currentControllerValue = signal.ControllerValue;
                    _currentControllerId    = signal.ControllerId;

                    var isWithinControlRange =
                        signal.ControllerId >= _controlRange.Width &&
                        signal.ControllerId < _controlRange.Height;

                    if (isWithinControlRange)
                    {
                        var index = signal.ControllerId - _controlRange.Width;
                        _valuesForControlRange[index] = signal.ControllerValue;
                    }

                    _isDefaultValue = false;
                }

                _lastMatchingSignals.Clear();
            }

            if (_isDefaultValue)
            {
                Result.Value = DefaultMidiValue.GetValue(context);
                return;
            }

            var outRange = OutputRange.GetValue(context);

            Result.Value = UseControlRange
                               ? _currentControllerId
                               : MathUtils.RemapAndClamp(_currentControllerValue, 0, 127, outRange.X, outRange.Y);
            Range.Value = _valuesForControlRange;
        }