private static void InitUIElement <T, K>(CreateCallback createAction, OSCWindowControlCreator.ControlData data, MenuCommand menuCommand) where K : OSCTransmitterInformer where T : Component { if (createAction == null) { return; } var resources = OSCEditorUtils.GetStandardResources(); resources.Color = data.ControlColor; var element = createAction(resources); PlaceUIElement(element, menuCommand); if (data.UseInformer) { AddInformer <K>(element.GetComponent <T>(), data.InformerTransmitter, data.InformAddress, data.InformOnChanged, data.InformInterval); } }
protected override void DrawContent(ref Rect contentRect) { if (!_controlCreator.IsValid) { EditorGUILayout.LabelField(_errorCreateContent, OSCEditorStyles.CenterLabel, GUILayout.Height(contentRect.height)); return; } contentRect.x += 2; contentRect.y += 2; contentRect.width -= 4; contentRect.height -= 4; GUILayout.BeginArea(contentRect); OSCEditorInterface.LogoLayout(); GUILayout.Label(_controlSettingsContent, EditorStyles.boldLabel); EditorGUILayout.BeginVertical(OSCEditorStyles.Box); ControlColor = EditorGUILayout.ColorField(_controlColorContent, ControlColor); EditorGUILayout.EndVertical(); GUI.color = AddInformer ? Color.green : Color.red; if (GUILayout.Button(_addInformerContent)) { AddInformer = !AddInformer; } GUI.color = Color.white; if (AddInformer) { GUILayout.Label(_informerSettingsContent, EditorStyles.boldLabel); EditorGUILayout.BeginVertical(OSCEditorStyles.Box); OSCEditorUtils.FindObjects(TransmitterCallback, true, out var content, out OSCTransmitter[] objects); InformerAddress = EditorGUILayout.TextField(_oscAddressContent, InformerAddress); InformerTransmitter = OSCEditorInterface.PopupLayout(_oscTransmitterContent, InformerTransmitter, content, objects); GUI.color = InformOnChanged ? Color.green : Color.red; if (GUILayout.Button(_informOnChangedContent)) { InformOnChanged = !InformOnChanged; } GUI.color = Color.white; if (!InformOnChanged) { InformerInterval = EditorGUILayout.FloatField(_informerIntervalContent, InformerInterval); if (InformerInterval < 0) { InformerInterval = 0; } EditorGUILayout.HelpBox("Set to 0 for send message with each frame.", MessageType.Info); } EditorGUILayout.EndVertical(); } GUI.color = Color.green; if (GUILayout.Button(_createContent)) { var data = new OSCWindowControlCreator.ControlData(); data.ControlColor = ControlColor; data.UseInformer = AddInformer; data.InformAddress = InformerAddress; data.InformInterval = InformerInterval; data.InformOnChanged = InformOnChanged; data.InformerTransmitter = InformerTransmitter; OSCWindowControlCreator.CreateControl(data); } GUI.color = Color.white; GUILayout.EndArea(); }
private static void InitMultiplySlidersUIElement(CreateCallback createAction, OSCWindowControlCreator.ControlData data, MenuCommand menuCommand) { if (createAction == null) { return; } var resources = OSCEditorUtils.GetStandardResources(); resources.Color = data.ControlColor; var element = createAction(resources); if (data.UseInformer) { var multiplySliders = element.GetComponent <OSCMultiplySliders>(); multiplySliders.Address = data.InformAddress; multiplySliders.Transmitter = data.InformerTransmitter; } PlaceUIElement(element, menuCommand); }
protected override void DrawContent(Rect contentRect) { if (!_controlCreator.IsValid) { EditorGUILayout.LabelField(_errorCreateContent, OSCEditorStyles.CenterLabel, GUILayout.Height(contentRect.height)); return; } var defaultColor = GUI.color; contentRect.x += 2; contentRect.y += 2; contentRect.width -= 4; contentRect.height -= 4; GUILayout.BeginArea(contentRect); GUILayout.Space(10); OSCEditorLayout.DrawLogo(); GUILayout.Space(5); GUILayout.Label(_controlSettingsContent, EditorStyles.boldLabel); EditorGUILayout.BeginVertical("box"); _controlColor = EditorGUILayout.ColorField(_controlColorContent, _controlColor); EditorGUILayout.EndVertical(); GUI.color = _addInformer ? Color.green : Color.red; if (GUILayout.Button(_addInformerContent)) { _addInformer = !_addInformer; } GUI.color = defaultColor; if (_addInformer) { GUILayout.Label(_informerSettingsContent, EditorStyles.boldLabel); EditorGUILayout.BeginVertical("box"); _informerAddress = EditorGUILayout.TextField(_oscAddressContent, _informerAddress); _informerTransmitter = OSCEditorLayout.TransmittersPopup(_informerTransmitter, _oscTransmitterContent); GUI.color = _informOnChanged ? Color.green : Color.red; if (GUILayout.Button(_informOnChangedContent)) { _informOnChanged = !_informOnChanged; } GUI.color = defaultColor; if (!_informOnChanged) { _informerInterval = EditorGUILayout.FloatField(_informerIntervalContent, _informerInterval); if (_informerInterval < 0) { _informerInterval = 0; } EditorGUILayout.HelpBox("Set to 0 for send message with each frame.", MessageType.Info); } EditorGUILayout.EndVertical(); } GUI.color = Color.green; if (GUILayout.Button(_createContent)) { var data = new OSCWindowControlCreator.ControlData(); data.ControlColor = _controlColor; data.UseInformer = _addInformer; data.InformAddress = _informerAddress; data.InformInterval = _informerInterval; data.InformOnChanged = _informOnChanged; data.InformerTransmitter = _informerTransmitter; OSCWindowControlCreator.Invoke(data); } GUI.color = defaultColor; GUILayout.EndArea(); }