1 #ifndef SCHLICKPHOTONMATERIALFACTORY_HXX
 2 #define SCHLICKPHOTONMATERIALFACTORY_HXX
 3 
 4 #include "MaterialFactory.hxx"
 5 #include "SchlickPhotonShader.hxx"
 6 #include "SchlickPhotonDistributor.hxx"
 7 
 8 // This class creates a SchlickPhoton-tuple based on a given material
 9 class SchlickPhotonMaterialFactory
10 	: public MaterialFactory
11 {
12 PhotonKDTree *photon_tree;
13 public:
14 	// Use a standard white default material if nothing is specified
15 	SchlickPhotonMaterialFactory(Scene *scene, PhotonKDTree *photon_tree)
16 		:MaterialFactory(scene), photon_tree(photon_tree)
17 	{
18 		Material *mat = new Material(Vec3f(0.9f));
19 		mat->SetSchlickParams(0.3f, 0.9f, 0.5f);
20 		shaders.push_back(new SchlickPhotonShader(scene, mat, photon_tree));
21 		photondistris.push_back(new SchlickPhotonDistributor(scene, mat));
22 		lookupvector.push_back(0);
23 	};
24 
25 	virtual ~SchlickPhotonMaterialFactory(){};
26 
27 	// Sets the factorie's state to a new material
28 	virtual void SetMaterial(std::istream &material, const int face)
29 	{
30 		Material *mat = sceneDescription->parse(material);
31 		shaders.push_back(new SchlickPhotonShader(scene, mat, photon_tree));
32 		photondistris.push_back(new SchlickPhotonDistributor(scene, mat));
33 		lookupvector.push_back(face);
34 	};
35 };
36 
37 #endif


syntax highlighted by Code2HTML, v. 0.9.1