コード例 #1
0
ファイル: Program.cs プロジェクト: dastevens/timelapse
        public static async Task MainAsync(string engineJson, ICameraFactory cameraFactory)
        {
            var fileSystem = new FileSystem();
            var config     = new Config();

            if (fileSystem.File.Exists(engineJson))
            {
                config = await JsonHelper.ReadFrom <Config>(new FileSystem(), engineJson);
            }

            using (var cancellationTokenSource = new CancellationTokenSource())
            {
                var keyBoardTask = Task.Run(() =>
                {
                    Console.WriteLine("Press enter to cancel");
                    Console.ReadLine();
                    Console.WriteLine("Cancelled by user");
                    cancellationTokenSource.Cancel();
                });

                try
                {
                    await RunEngineAsync(config, cameraFactory, cancellationTokenSource.Token);
                }
                catch (TaskCanceledException e)
                {
                    Logger.Error(e, "RunEngineAsync task was cancelled");
                }

                await keyBoardTask;
            }
        }
コード例 #2
0
        public GrabService()
        {
            _baslerFactory = CameraFactory.Instance.Create(ECameraManufacturer.Basler);
            _hikFactory    = CameraFactory.Instance.Create(ECameraManufacturer.Hik);

            _logger = LogManager.GetCurrentClassLogger();

            _grabbing = false;
        }
コード例 #3
0
ファイル: Scheduler.cs プロジェクト: dastevens/timelapse
 public Scheduler(IFileSystem fileSystem, string engineFolder, string jobFolder, string projectsFolder, Queue queue, ICameraFactory cameraFactory)
 {
     this.fileSystem            = fileSystem;
     this.engineFolder          = engineFolder;
     this.jobFolder             = jobFolder;
     this.projectsFolder        = projectsFolder;
     this.queue                 = queue;
     this.cameraFactory         = cameraFactory;
     this.heartbeatSignal       = new Signal(fileSystem, fileSystem.Path.Combine(engineFolder, "heartbeat"));
     this.requestPreviewSignal  = new Signal(fileSystem, fileSystem.Path.Combine(engineFolder, "request-preview"));
     this.previewCompleteSignal = new Signal(fileSystem, fileSystem.Path.Combine(engineFolder, "preview-complete"));
 }
コード例 #4
0
        public CameraManager(ICameraFactory cameraFactory,
                             IIdGenerator idGenerator,
                             ISimpleCollectionFactory collectionFactory)

        {
            _idGenerator   = idGenerator;
            _cameraFactory = cameraFactory;

            _camera2DCollection = collectionFactory.Create <ICameraModel2D>(32);
            _camera3DCollection = collectionFactory.Create <ICameraModel3D>(16);

            _camerasToDestroy = new List <ulong>();
        }
コード例 #5
0
ファイル: Program.cs プロジェクト: dastevens/timelapse
 static async Task RunEngineAsync(Config config, ICameraFactory cameraFactory, CancellationToken cancellationToken)
 {
     try
     {
         var fileSystem = new FileSystem();
         var engine     = new Engine(config, cameraFactory, fileSystem);
         Logger.Info("Starting engine");
         await engine.RunAsync(cancellationToken);
     }
     catch (Exception e)
     {
         Logger.Error(e, $"Error while running engine: {e.Message}");
         throw e;
     }
 }
コード例 #6
0
        public SpriteBatchRenderer(IDevice device, IBlobReader blobReader, ICameraFactory cameraFactory)
        {
            _device  = device;
            _context = _device.ImmediateContext;
            _camera  = cameraFactory.CreateOrhographicCamera();

            _buffer       = device.CreateVertexBuffer <Vertex2D>(MaxVertices, BufferUsage.Dynamic, BufferAccessFlags.Write);
            _indices      = device.CreateIndexBuffer(CreateIndices());
            _sampler      = device.CreateSampler(true);
            _blendState   = device.CreateBlendState();
            _cameraBuffer = device.CreateConstantBuffer(new Camera {
                Transform = _camera.ViewProjection
            });
            using var vertexShaderBlob = blobReader.ReadFromFile("Shaders/VertexShader2D.cso");
            _vertexShader             = device.CreateVertexShader(vertexShaderBlob);
            using var pixelShaderBlob = blobReader.ReadFromFile("Shaders/PixelShader2D.cso");
            _pixelShader = device.CreatePixelShader(pixelShaderBlob);

            _inputLayout = device.CreateInputLayout(new VertexLayout(3).Append("Position", VertexLayoutTypes.Position2D).Append("Textures", VertexLayoutTypes.Texture2D).Append("Color", VertexLayoutTypes.Float4Color), vertexShaderBlob);
        }
コード例 #7
0
 public Engine(Config config, ICameraFactory cameraFactory, IFileSystem fileSystem)
 {
     this.config        = config;
     this.cameraFactory = cameraFactory;
     this.fileSystem    = fileSystem;
 }