コード例 #1
0
        public static void OpenPacket(OSCPacket packet)
        {
            ShowWindow();

            Instance.packetEditorPanel.CurrentPacket = OSCEditorUtils.CopyPacket(packet);
            Instance.Focus();
        }
コード例 #2
0
        private OSCValue CreateValueButton(object sender)
        {
            var defaultColor = GUI.color;

            using (new GUILayout.HorizontalScope(OSCEditorStyles.Box))
            {
                if (!_valueTypeTemp.ContainsKey(sender))
                {
                    _valueTypeTemp.Add(sender, OSCValueType.Float);
                }

                _valueTypeTemp[sender] = (OSCValueType)EditorGUILayout.EnumPopup(_valueTypeTemp[sender]);

                GUI.color = Color.green;
                if (GUILayout.Button(_addValueContent, GUILayout.Height(EditorGUIUtility.singleLineHeight)))
                {
                    var value = OSCEditorUtils.CreateValue(_valueTypeTemp[sender]);
                    if (value != null)
                    {
                        return(value);
                    }

                    Debug.LogError($"[extOSC] You can't add this ({_valueTypeTemp[sender]}) value type!");
                }

                GUI.color = defaultColor;
            }

            return(null);
        }
コード例 #3
0
        protected override void Update()
        {
            if (ConsoleBuffer == null)
            {
                ConsoleBuffer = OSCEditorUtils.LoadConsoleMessages(OSCEditorUtils.LogsFilePath);

                Repaint();
            }

            if (OSCConsole.ConsoleBuffer.Count > 0)
            {
                foreach (var message in OSCConsole.ConsoleBuffer)
                {
                    if (ConsoleBuffer.Count >= _maxBufferCapacity)
                    {
                        ConsoleBuffer.RemoveAt(ConsoleBuffer.Count - 1);
                    }

                    ConsoleBuffer.Insert(0, message);
                }

                OSCEditorUtils.SaveConsoleMessages(OSCEditorUtils.LogsFilePath, ConsoleBuffer);
                OSCConsole.ConsoleBuffer.Clear();

                Repaint();
            }

            if (packetPanel.SelecedMessage != logPanel.SelectedMessage)
            {
                packetPanel.SelecedMessage = logPanel.SelectedMessage;

                Repaint();
            }
        }
コード例 #4
0
        public override void OnGUI(Rect position, SerializedProperty property, GUIContent label)
        {
            if (property.propertyType != SerializedPropertyType.ObjectReference)
            {
                return;
            }

            var fieldType = fieldInfo.FieldType;

            if (fieldType == _transmitterType)
            {
                OSCEditorUtils.FindObjects(TransmitterCallback, true, out var content, out OSCTransmitter[] objects);

                property.objectReferenceValue = OSCEditorInterface.Popup(position, label,
                                                                         (OSCTransmitter)property.objectReferenceValue,
                                                                         content,
                                                                         objects);
            }
            else if (fieldType == _receiverType)
            {
                OSCEditorUtils.FindObjects(ReceiverCallback, true, out var content, out OSCReceiver[] objects);

                property.objectReferenceValue = OSCEditorInterface.Popup(position, label,
                                                                         (OSCReceiver)property.objectReferenceValue,
                                                                         content,
                                                                         objects);
            }
        }
コード例 #5
0
        private void DrawActions(OSCBase osc, Color elementColor)
        {
            GUI.color   = Color.yellow;
            GUI.enabled = osc.IsAvaible;

            if (osc is OSCTransmitter)
            {
                DrawTransmitterActions((OSCTransmitter)osc);
            }
            else if (osc is OSCReceiver)
            {
                DrawReceiverActions((OSCReceiver)osc);
            }

            GUI.enabled = true;
            GUI.color   = Color.white;

            var selectButton = GUILayout.Button(_selectActionContent, GUILayout.MaxWidth(60));

            if (selectButton)
            {
                OSCEditorUtils.PingObject(osc);
            }

            GUI.color = elementColor;
        }
コード例 #6
0
        private void DrawMessage(OSCMessage message)
        {
            var removeValue = (OSCValue)null;

            EditorGUILayout.LabelField(_addressContent, EditorStyles.boldLabel);
            using (new GUILayout.VerticalScope(OSCEditorStyles.Box))
            {
                message.Address = EditorGUILayout.TextField(message.Address, GUILayout.MaxHeight(EditorGUIUtility.singleLineHeight));
            }

            EditorGUILayout.LabelField($"Values ({OSCEditorUtils.GetValueTags(message)}):", EditorStyles.boldLabel);
            using (new GUILayout.VerticalScope())
            {
                foreach (var value in message.Values)
                {
                    DrawValue(value, ref removeValue);
                }
            }

            var includeValue = CreateValueButton(message);

            // ACTIONS
            if (removeValue != null)
            {
                message.Values.Remove(removeValue);
            }

            if (includeValue != null)
            {
                message.AddValue(includeValue);
            }
        }
コード例 #7
0
        private OSCValue CreateValueButton(object sender)
        {
            EditorGUILayout.BeginHorizontal("box");

            if (!_valueTypeTemp.ContainsKey(sender))
            {
                _valueTypeTemp.Add(sender, OSCValueType.Float);
            }

            _valueTypeTemp[sender] = (OSCValueType)EditorGUILayout.EnumPopup(_valueTypeTemp[sender]);

            GUI.color = Color.green;

            var addButton = GUILayout.Button(_addValueContent, GUILayout.Height(EditorGUIUtility.singleLineHeight));

            if (addButton)
            {
                var value = OSCEditorUtils.CreateOSCValue(_valueTypeTemp[sender]);
                if (value != null)
                {
                    return(value);
                }
                else
                {
                    Debug.LogFormat("[extOSC] You can't add this ({0}) value type!", _valueTypeTemp[sender]);
                }
            }

            GUI.color = Color.white;
            EditorGUILayout.EndHorizontal();

            return(null);
        }
コード例 #8
0
        private static string PropertiesPopup(Rect rect, object target, string memberName, Type propertyType, GUIContent content, OSCReflectionAccess access)
        {
            var members   = OSCReflection.GetMembersByType(target, propertyType, access, OSCReflectionType.All);
            var clearName = new List <GUIContent>();

            var currentIndex = 0;

            // GET INDEX
            foreach (var member in members)
            {
                if (member.Name == memberName)
                {
                    currentIndex = clearName.Count;
                }

                clearName.Add(new GUIContent(OSCEditorUtils.MemberName(member)));
            }

            if (clearName.Count == 0)
            {
                clearName.Add(new GUIContent("- None -"));
            }

            currentIndex = EditorGUI.Popup(rect, content, currentIndex, clearName.ToArray());
            currentIndex = Mathf.Clamp(currentIndex, 0, clearName.Count - 1);

            return(members.Length > 0 ? members[currentIndex].Name : "- None -");
        }
コード例 #9
0
        private void AddSlider()
        {
            var multiplySliders = (OSCMultiplySliders)target;
            var layoutTransform = ((Component)_layoutGroupProperty.objectReferenceValue).transform;

            var resources = OSCEditorUtils.GetStandardResources();

            resources.Color = multiplySliders.DefaultColor;

            var index = _slidersProperty.arraySize;

            var sliderObject = OSCControls.CreateSlider(resources);

            sliderObject.name = string.Format("Slider: {0}", index);

            var slider = sliderObject.GetComponent <OSCSlider>();

            slider.MultiplyController = multiplySliders;

            var sliderRect = sliderObject.GetComponent <RectTransform>();

            sliderRect.SetParent(layoutTransform);
            sliderRect.localScale    = Vector3.one;
            sliderRect.localPosition = Vector3.zero;

            _slidersProperty.InsertArrayElementAtIndex(index);

            var element = _slidersProperty.GetArrayElementAtIndex(index);

            element.objectReferenceValue = sliderObject;
        }
コード例 #10
0
        public void Refresh()
        {
            _transmitters.Clear();
            _transmitters = OSCEditorUtils.GetTransmitters();

            _receivers.Clear();
            _receivers = OSCEditorUtils.GetReceivers();
        }
コード例 #11
0
ファイル: OSCWindowConsole.cs プロジェクト: Iam1337/extOSC
 public static void Clear()
 {
     if (ConsoleBuffer != null)
     {
         ConsoleBuffer.Clear();
         OSCEditorUtils.SaveConsoleMessages(OSCEditorUtils.LogsFilePath, ConsoleBuffer);
     }
 }
コード例 #12
0
        private void OpenCurrentDebugPacket()
        {
            var filePath = EditorUtility.OpenFilePanel("Open Packet", OSCEditorUtils.DebugFolder, "eod");

            if (!string.IsNullOrEmpty(filePath))
            {
                _currentPacket = OSCEditorUtils.LoadPacket(filePath);
                _filePath      = filePath;
            }
        }
コード例 #13
0
        private void DrawTransmitterActions(OSCTransmitter transmitter)
        {
            var actionButton = GUILayout.Button(_sendActionContent);

            if (actionButton)
            {
                var debugPacket = OSCWindowDebug.CurrentPacket;
                if (debugPacket != null)
                {
                    transmitter.Send(OSCEditorUtils.CopyPacket(debugPacket));
                }
            }
        }
コード例 #14
0
        private void SavePacket()
        {
            if (CurrentPacket == null)
            {
                return;
            }

            var file = EditorUtility.SaveFilePanel("Save Packet", OSCEditorUtils.DebugFolder, "New Debug Packet", "eod");

            if (!string.IsNullOrEmpty(file))
            {
                FilePath = file;
                OSCEditorUtils.SavePacket(file, CurrentPacket);
            }
        }
コード例 #15
0
        protected override void LoadWindowSettings()
        {
            if (packetEditorPanel == null) return;

            var lastOpenedFile = OSCEditorSettings.GetString(_lastFileSettings, "");

            if (!string.IsNullOrEmpty(lastOpenedFile))
            {
                var debugPacket = OSCEditorUtils.LoadPacket(lastOpenedFile);
                if (debugPacket != null)
                {
                    packetEditorPanel.CurrentPacket = debugPacket;
                    packetEditorPanel.FilePath = lastOpenedFile;
                }
            }
        }
コード例 #16
0
        private void DrawReceiverActions(OSCReceiver receiver)
        {
            var actionButton = GUILayout.Button(_receiveActionContent);

            if (actionButton)
            {
                var debugPacket = OSCWindowDebug.CurrentPacket;
                if (debugPacket != null)
                {
                    if (_receiveMethod == null)
                    {
                        _receiveMethod = typeof(OSCReceiver).GetMethod("PacketReceived", BindingFlags.Instance | BindingFlags.NonPublic);
                    }

                    _receiveMethod.Invoke(receiver, new object[] { OSCEditorUtils.CopyPacket(debugPacket) });
                }
            }
        }
コード例 #17
0
        protected override void SaveWindowSettings()
        {
            if (packetEditorPanel == null) return;

            var debugPacket = packetEditorPanel.CurrentPacket;
            if (debugPacket != null)
            {
                if (string.IsNullOrEmpty(packetEditorPanel.FilePath))
                {
                    packetEditorPanel.FilePath = OSCEditorUtils.BackupFolder + "unsaved.eod";
                }

                OSCEditorUtils.SavePacket(packetEditorPanel.FilePath, debugPacket);
                OSCEditorSettings.SetString(_lastFileSettings, packetEditorPanel.FilePath);

                return;
            }

            OSCEditorSettings.SetString(_lastFileSettings, "");
        }
コード例 #18
0
        private void RecacheMember()
        {
            // Check is we have target.
            var targetObject = _targetProperty.objectReferenceValue;

            if (targetObject == null)
            {
                return;
            }

            _members = OSCReflection.GetMembersByType(targetObject, _memberType, _reflectionAccess, _reflectionType);

            // Stop method is we do not have any members.
            var membersLength = _members.Length;

            if (membersLength == 0)
            {
                return;
            }

            _membersNames    = new GUIContent[membersLength + 1];
            _membersNames[0] = _memberNoneContent;

            // Creating member names.
            for (var i = 0; i < membersLength; i++)
            {
                var member  = _members[i];
                var content = new GUIContent();

                if (OnMemberName != null)
                {
                    content.text = OnMemberName.Invoke(member);
                }
                else
                {
                    content.text = OSCEditorUtils.MemberName(member);
                }

                _membersNames[i + 1] = content;
            }
        }
コード例 #19
0
        private void DrawMessage(OSCMessage message)
        {
            if (message != null)
            {
                EditorGUILayout.LabelField(_addressContent, EditorStyles.boldLabel);
                using (new GUILayout.VerticalScope(OSCEditorStyles.Box))
                {
                    EditorGUILayout.SelectableLabel(message.Address, GUILayout.Height(EditorGUIUtility.singleLineHeight));
                }

                if (message.Values.Count > 0)
                {
                    EditorGUILayout.LabelField($"Values ({OSCEditorUtils.GetValueTags(message)}):", EditorStyles.boldLabel);
                    using (new GUILayout.VerticalScope())
                    {
                        foreach (var value in message.Values)
                        {
                            DrawValue(value);
                        }
                    }
                }
            }
        }
コード例 #20
0
        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();
        }