コード例 #1
0
ファイル: APIManager.cs プロジェクト: metanchik/Sidekick
        public int SendToPlayers(BaseRequest request)
        {
            SidekickSettings settings = BridgingContext.Instance.container.Settings;

            lastRequestID++;
            if (settings.InspectionConnection == InspectionConnection.LocalEditor)
            {
                if (ResponseReceived != null)
                {
                    ResponseReceived(request.GenerateResponse());
                }
            }
            else
            {
                byte[] bytes;
                using (MemoryStream ms = new MemoryStream())
                {
                    using (BinaryWriter bw = new BinaryWriter(ms))
                    {
                        bw.Write(lastRequestID);

                        bw.Write(request.GetType().Name);
                        request.Write(bw);
                    }
                    bytes = ms.ToArray();
                }
#if SIDEKICK_DEBUG
                if (settings.LocalDevMode)
                {
                    byte[] testResponse = SidekickRequestProcessor.Process(bytes);

                    BaseResponse response = SidekickResponseProcessor.Process(testResponse);
                    if (ResponseReceived != null)
                    {
                        ResponseReceived(response);
                    }
                }
                else
#endif
                {
                    EditorMessaging.SendRequest(bytes);
                }
            }
            return(lastRequestID);
        }
コード例 #2
0
        void OnInspectorUpdate()
        {
            if (!EditorMessaging.Started)
            {
                EditorMessaging.Start();
            }
            EditorMessaging.Tick();

            EditorMessaging.RegisterForResponses(OnReceivedResponse);
            if (EditorMessaging.KnownEndpoints.Count >= 1)
            {
                if (!registered)
                {
                    EditorMessaging.RegisterForResponses(OnReceivedResponse);
                    registered = true;
                }
            }
            else
            {
                if (registered)
                {
                    registered = false;
                    //EditorConnection.instance.Unregister(RuntimeSidekickBridge.SEND_PLAYER_TO_EDITOR, OnMessageEvent);
                }
            }

            if (Settings.InspectionConnection == InspectionConnection.LocalEditor ||
                (Settings.AutoRefreshRemote && EditorMessaging.IsConnected))
            {
                if (EditorApplication.timeSinceStartup > timeLastRefreshed + AUTO_REFRESH_FREQUENCY)
                {
                    timeLastRefreshed = EditorApplication.timeSinceStartup;
                    APIManager.SendToPlayers(new GetHierarchyRequest());
                    if (!string.IsNullOrEmpty(SelectionManager.SelectedPath)) // Valid path?
                    {
                        APIManager.SendToPlayers(new GetObjectRequest(SelectionManager.SelectedPath, Settings.GetGameObjectFlags));
                    }
                }
            }
        }