public void Grabcommands()
        {
            while (true)
            {
                Debug.Log("waiting...");
                Thread.Sleep(100);
                if (_commandRetriever.TryGrabCommand(out var commandName, out var commandValue))
                {
                    if (commandName.Equals(UnityEngineCommands.ReadTrialData))
                    {
                        _dataRetriever.RetrieveData(commandValue, out _currentTrialMetaData);

                        _currentUnijoySceneData = _sceneBuilder.Build(_currentTrialMetaData);

                        NewSceneReceived.Invoke(this, _currentUnijoySceneData);
                    }
                    else if (commandName.Equals(UnityEngineCommands.VisualOperationCommand))
                    {
                        if (commandValue.Equals(VisualOperationCommand.StartRender))
                        {
                            StartRenderCommandReceived.Invoke(this, null);
                        }
                        else if (commandValue.Equals(VisualOperationCommand.CleanScreen))
                        {
                            ClearRenderCommandReceied.Invoke(this, null);
                        }
                    }
                }
            }
        }
Exemple #2
0
        private static Frame GenerateFrame()
        {
            var entityIdFactory       = new EntityIdFactory();
            var sceneBuilder          = new SceneBuilder(new Vector3(0.2f, 0.0f, 0.43f));
            var scatterableComputer   = new ScatterableComputer();
            var hitableSphereComputer = new HitableSphereComputer();

            // Create the scene
            var elementBuilderFactory =
                new ElementBuilderFactory(entityIdFactory, hitableSphereComputer, scatterableComputer);

            sceneBuilder.AddElement(elementBuilderFactory.Create()
                                    .WithPosition(new Position(new Vector3(0.725f, 0.5f, 0.725f)))
                                    .WithShape(new Sphere(0.5f))
                                    .WithMaterial(new Diffuse(new Vector3(0.0f, 1.0f, 0.0f))).Build());
            sceneBuilder.AddElement(elementBuilderFactory.Create()
                                    .WithPosition(new Position(new Vector3(0.0f, -200.0f, 0.0f)))
                                    .WithShape(new Sphere(200f))
                                    .WithMaterial(new Diffuse(new Vector3(0.5f, 0.5f, 0.5f))).Build());

            var cameraFactory = new CameraFactory();

            var         lookFrom        = new Vector3(0, 8, 10);
            var         lookat          = new Vector3(0, 0, 0);
            var         distanceToFocus = (lookFrom - lookat).Length();
            const float aperture        = 0.1f;
            var         camera          = cameraFactory.CreateCamera(lookFrom, lookat, new Vector3(0, 1, 0), 20,
                                                                     (float)ResolutionHorizontal / ResolutionVertical, aperture,
                                                                     distanceToFocus);


            var scene  = sceneBuilder.Build();
            var tracer =
                new MonitoringTracer(
                    new BackgroundTracer(scene, camera, ResolutionHorizontal, ResolutionVertical, Sampling));

            return(tracer.Trace());
        }