void OnEnable()
        {
            _oscIn = target as OscIn;

            _openOnAwake                  = serializedObject.FindProperty("_openOnAwake");
            _port                         = serializedObject.FindProperty("_port");
            _mode                         = serializedObject.FindProperty("_mode");
            _multicastAddress             = serializedObject.FindProperty("_multicastAddress");
            _filterDuplicates             = serializedObject.FindProperty("_filterDuplicates");
            _addTimeTagsToBundledMessages = serializedObject.FindProperty("_addTimeTagsToBundledMessages");
            _mappings                     = serializedObject.FindProperty("_mappings");
            _dirtyMappings                = serializedObject.FindProperty("_dirtyMappings");
            _udpBufferSize                = serializedObject.FindProperty("_udpBufferSize");
            _settingsFoldout              = serializedObject.FindProperty("_settingsFoldout");
            _mappingsFoldout              = serializedObject.FindProperty("_mappingsFoldout");
            _messagesFoldout              = serializedObject.FindProperty("_messagesFoldout");

            // Store socket info for change check workaround.
            _tempPort             = _port.intValue;
            _tempMulticastAddress = _multicastAddress.stringValue;

            // Ensure that OscIn scripts will be executed early, so it can deliver messages before we compute anything.
            MonoScript script = MonoScript.FromMonoBehaviour(target as MonoBehaviour);

            if (MonoImporter.GetExecutionOrder(script) != -5000)
            {
                MonoImporter.SetExecutionOrder(script, -5000);
            }

            // When object is selected in Edit Mode then we start listening.
            if (_oscIn.enabled && !Application.isPlaying && !EditorApplication.isPlayingOrWillChangePlaymode && !_oscIn.isOpen)
            {
                if (_oscIn.mode == OscReceiveMode.UnicastBroadcast)
                {
                    _oscIn.Open(_oscIn.port);
                }
                else
                {
                    _oscIn.Open(_oscIn.port, _oscIn.multicastAddress);
                }
            }

            // Subscribe to messages.
            OscEditorUI.AddInspectorMessageListener(_oscIn, OnOSCMessage, ref _inspectorMessageEventObject);
        }
Exemplo n.º 2
0
        void OnEnable()
        {
            _oscOut = target as OscOut;

            // Get serialized properties.
            _openOnAwake                        = serializedObject.FindProperty("_openOnAwake");
            _remoteIpAddress                    = serializedObject.FindProperty("_remoteIpAddress");
            _port                               = serializedObject.FindProperty("_port");
            _multicastLoopback                  = serializedObject.FindProperty("_multicastLoopback");
            _bundleMessagesOnEndOfFrame         = serializedObject.FindProperty("_bundleMessagesOnEndOfFrame");
            _splitBundlesAvoidingBufferOverflow = serializedObject.FindProperty("_splitBundlesAvoidingBufferOverflow");
            _udpBufferSize                      = serializedObject.FindProperty("_udpBufferSize");
            _settingsFoldout                    = serializedObject.FindProperty("_settingsFoldout");
            _messagesFoldout                    = serializedObject.FindProperty("_messagesFoldout");

            // Store socket info for change check workaround.
            _tempIPAddress = _remoteIpAddress.stringValue;
            _tempPort      = _port.intValue;

            // Ensure that OscOut scripts will be executed early, so that if Open On Awake is enabled the socket will open before other scripts are called.
            MonoScript script = MonoScript.FromMonoBehaviour(target as MonoBehaviour);

            if (MonoImporter.GetExecutionOrder(script) != executionOrderNum)
            {
                MonoImporter.SetExecutionOrder(script, executionOrderNum);
            }

            // When object is selected in Edit Mode then we start listening.
            if (_oscOut.enabled && !Application.isPlaying && !_oscOut.isOpen)
            {
                _oscOut.Open(_oscOut.port, _oscOut.remoteIpAddress);
                _statusInEditMode = _oscOut.mode == OscSendMode.UnicastToSelf ? OscRemoteStatus.Connected : OscRemoteStatus.Unknown;
            }

            // Subscribe to OSC messages
            OscEditorUI.AddInspectorMessageListener(_oscOut, OnOSCMessage, ref _inspectorMessageEventObject);

            // If in Edit Mode, then start a coroutine that will update the connection status. Unity can't start coroutines in Runtime.
            if (!Application.isPlaying && _oscOut.mode == OscSendMode.Unicast)
            {
                _pingEnumerator = OscHelper.StartCoroutineInEditMode(PingCoroutine(), ref _lastPingTime);
            }
        }