Package org.kalimullin.fsraytracer

Source Code of org.kalimullin.fsraytracer.RayTracer

package org.kalimullin.fsraytracer;

import org.kalimullin.fsraytracer.ray.HitData;
import org.kalimullin.fsraytracer.ray.Ray;
import org.kalimullin.fsraytracer.scene.Scene;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import java.io.BufferedReader;
import java.io.IOException;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;

public class RayTracer {
    private static RayTracer ourInstance = new RayTracer();
    private static Logger logger = LoggerFactory.getLogger(RayTracer.class);
    private Scene scene = new Scene();

    public static RayTracer getInstance() {
        return ourInstance;
    }

    ExecutorService executorService = Executors.newFixedThreadPool(100);

    private RayTracer() {
    }

    public Scene getScene() {
        return scene;
    }

    public void setScene(Scene scene) {
        this.scene = scene;
    }

    public void startListening(BufferedReader inputStreamReader) {
        try {
            String line;
            while ((line = inputStreamReader.readLine()) != null) {
                try {
                    traceRay(Ray.getRayFromString(line));
                } catch (Exception e) {
                    logger.error("Exception while execution:", e);
                }
            }
        } catch (IOException e) {
            //TODO better error handling
            logger.error("IOException while listening stdin");
        }
    }

    private void traceRay(final Ray ray) {
        executorService.submit(new Runnable() {
            @Override
            public void run() {
                HitData hitData = getScene().traceRay(ray);
                System.out.println(ray.getId() + ":" + (!HitData.MISS.equals(hitData) ? hitData.getSceneObject().getName() : ""));
            }
        });
    }

}
TOP

Related Classes of org.kalimullin.fsraytracer.RayTracer

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.