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;
        }
Example #2
0
        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();
 }