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); } } }