private void OnEnable()
        {
            _speakerRef  = (SpeakerReference)target;
            _rootElement = new VisualElement();
            var visualTree =
                Resources.Load <VisualTreeAsset>(
                    $"{nameof(SpeakerReferenceEditor)}_Main");

            visualTree.CloneTree(_rootElement);

            var style = Resources.Load <StyleSheet>(
                $"{nameof(SpeakerReferenceEditor)}_Style");

            _rootElement.styleSheets.Add(style);
        }
        static void RenderCustomGizmo(SpeakerReference reference, GizmoType gizmoType)
        {
            var transforms    = reference.GetActiveSpeakers();
            var speakerLabels = reference.channelConfiguration.groups
                                .SelectMany(x => x.channels)
                                .OrderBy(x => x.index)
                                .Select(x => x.id)
                                .ToArray();

            var color = gizmoType.HasFlag(GizmoType.Selected) ? Color.green : Color.white;

            using (new Handles.DrawingScope(color)) {
                for (var i = 0; i < transforms.Length; i++)
                {
                    var speaker = transforms[i];
                    Handles.DrawWireCube(speaker.position, speaker.lossyScale * 1.1f);
                    Handles.Label(speaker.position, speakerLabels[i], EditorStyles.miniButtonMid);
                }
            }
        }