public void SetData(object data) { var dataProcessor = data as IDataProcessor; _dataProcessor = dataProcessor ?? throw new InvalidOperationException($"Аргумент {nameof(data)} должен наследовать интерфейс {nameof(IDataProcessor)}"); _dataProcessorInfo = new DataProcessorInfo(dataProcessor); _dataProcessor.Awake(); if (_dataProcessorInfo.Outputs.Count > 1) { throw new NotImplementedException(); } var output = _dataProcessorInfo.Outputs.Single(); _outputDataRenderer = DataRendererUtil.GetRendererFor(output.Type); _outputDataRenderer.OnUpdateRequest += RequestUpdate; _outputDataRenderer.UpdateControlsRequest += () => UpdateControlsRequest?.Invoke(); var outputObject = output.Get(); if (outputObject != null) { _outputDataRenderer.SetData(outputObject); } _dataProcessor.Updated += DataProcessorUpdated; }
private void HandleUpdateFlightControls(LitePeer peer, OperationRequest operationRequest, SendParameters sendParameters) { var op = new UpdateControlsRequest(peer.Protocol, operationRequest); if (peer.ValidateOperation(op, sendParameters) == false) { return; } DebugLog(peer, operationRequest); op.OnStart(); peer.SendOperationResponse(new OperationResponse { OperationCode = op.OperationRequest.OperationCode }, sendParameters); op.OnComplete(); }
private void UpdateControls() { SetControlMode(); SetViewMode(); UpdateControlsRequest?.Invoke(); }