Exemplo n.º 1
0
        void AddParentPathsToPath(MixerPath path, IEnumerable <XElement> pathElements)
        {
            var xElements = pathElements as XElement[] ?? pathElements.ToArray();

            foreach (var pathElement in xElements)
            {
                var name = pathElement.Attribute("name")?.Value;

                if (string.IsNullOrWhiteSpace(name))
                {
                    _logger.LogWarning("parent path with no name in path {PathName}, skipping", path.Name);
                    continue;
                }

                if (!MixerPaths.ContainsKey(name))
                {
                    _logger.LogWarning("Path {PathName} uses undefined path {ParentPathName}", path.Name, name);
                    continue;
                }

                var value = pathElement.Attribute("value")?.Value;
                path.MixerPaths.Add(new MixerPath(name));
                _logger.LogDebug("Path {PathName} uses path {ParentPathName}", path.Name, name);
            }
        }
Exemplo n.º 2
0
        void PopulateMixerPaths(IEnumerable <XElement> pathElements)
        {
            var xElements = pathElements as XElement[] ?? pathElements.ToArray();

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

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

                if (MixerPaths.ContainsKey(name))
                {
                    _logger.LogWarning("Duplicate path {PathName}, skipping", name);
                    continue;
                }

                var path = new MixerPath(name);
                AddControlsToPath(path, pathElement.Elements("ctl"));
                AddParentPathsToPath(path, pathElement.Elements("path"));

                MixerPaths[name] = path;
            }
        }
Exemplo n.º 3
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);
                }
            }
        }