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