示例#1
0
        void AddControlsToPath(MixerPath path, IEnumerable <XElement> ctlElements)
        {
            var xElements = ctlElements as XElement[] ?? ctlElements.ToArray();

            for (var i = 0; i < xElements.Length; i++)
            {
                var ctlElement = xElements[i];
                var name       = ctlElement.Attribute("name")?.Value;

                if (string.IsNullOrWhiteSpace(name))
                {
                    _logger.LogWarning("ctl with no name in path {PathName} at index {CtlIndex}, skipping", path.Name, i);
                    continue;
                }

                var id     = ctlElement.Attribute("id")?.Value;
                var ctlKey = $"{name}:{id ?? ""}";

                if (!MixerControls.TryGetValue(ctlKey, out var ctl))
                {
                    if (string.IsNullOrWhiteSpace(id))
                    {
                        _logger.LogWarning("Path {PathName} uses undefined control {CtlName}", path.Name, name);
                    }
                    else
                    {
                        _logger.LogWarning("Path {PathName} uses undefined control {CtlName}, id {CtlId}", path.Name, name, id);
                    }
                    continue;
                }

                var value = ctlElement.Attribute("value")?.Value;
                path.MixerControls.Add(new MixerControl(name, id, value));

                if (string.IsNullOrWhiteSpace(id))
                {
                    _logger.LogDebug("Path {PathName} uses control {CtlName}", path.Name, name);
                }
                else
                {
                    _logger.LogDebug("Path {PathName} uses control {CtlName} id {CtlId}, value {CtlDefaultValue} => {CtlValue}", path.Name, name, id, ctl.Value, value);
                }
            }
        }
示例#2
0
        void PopulateMixerControls(IEnumerable <XElement> ctlElements)
        {
            var xElements = ctlElements as XElement[] ?? ctlElements.ToArray();

            for (var i = 0; i < xElements.Length; i++)
            {
                var ctlElement = xElements[i];
                var name       = ctlElement.Attribute("name")?.Value;

                if (string.IsNullOrWhiteSpace(name))
                {
                    _logger.LogWarning("ctl with no name at index {CtlIndex}, skipping", i);
                    continue;
                }

                var id     = ctlElement.Attribute("id")?.Value;
                var ctlKey = $"{name}:{id ?? ""}";

                if (MixerControls.ContainsKey(ctlKey))
                {
                    if (string.IsNullOrWhiteSpace(id))
                    {
                        _logger.LogWarning("Duplicate control {CtlName}, skipping", name);
                    }
                    else
                    {
                        _logger.LogWarning("Duplicate control {CtlName} id {CtlId}, skipping", name, id);
                    }

                    continue;
                }

                var value = ctlElement.Attribute("value")?.Value;
                MixerControls[ctlKey] = new MixerControl(name, id, value);
                _logger.LogDebug("Found control {CtlName} with default value {CtlValue}", name, value);
            }
        }