Panagiotis Christopoulos Charitos 15 년 전
부모
커밋
3f0d93bd25
6개의 변경된 파일52개의 추가작업 그리고 17개의 파일을 삭제
  1. 2 2
      src/Renderer/Bs.cpp
  2. 2 2
      src/Renderer/Dbg.cpp
  3. 3 2
      src/Renderer/Is.cpp
  4. 2 2
      src/Renderer/Renderer.cpp
  5. 17 9
      src/Scene/Scene.h
  6. 26 0
      src/Scene/VisibilityTester.h

+ 2 - 2
src/Renderer/Bs.cpp

@@ -87,8 +87,8 @@ void Bs::run()
 	glDepthMask(false);
 
 	// render the models
-	Vec<ModelNode*>::const_iterator it = SceneSingleton::getInstance().modelNodes.begin();
-	for(; it != SceneSingleton::getInstance().modelNodes.end(); ++it)
+	Scene::Types<ModelNode>::ConstIterator it = SceneSingleton::getInstance().getModelNodes().begin();
+	for(; it != SceneSingleton::getInstance().getModelNodes().end(); ++it)
 	{
 		const ModelNode& mn = *(*it);
 		boost::ptr_vector<ModelNodePatch>::const_iterator it = mn.getModelNodePatches().begin();

+ 2 - 2
src/Renderer/Dbg.cpp

@@ -269,8 +269,8 @@ void Dbg::run()
 	setModelMat(Mat4::getIdentity());
 	renderGrid();
 
-	Vec<SceneNode*>::const_iterator it = SceneSingleton::getInstance().nodes.begin();
-	for(; it != SceneSingleton::getInstance().nodes.end(); ++it)
+	Scene::Types<SceneNode>::ConstIterator it = SceneSingleton::getInstance().getAllNodes().begin();
+	for(; it != SceneSingleton::getInstance().getAllNodes().end(); ++it)
 	{
 		const SceneNode& node = *(*it);
 

+ 3 - 2
src/Renderer/Is.cpp

@@ -345,9 +345,10 @@ void Is::run()
 	calcPlanes();
 
 	// for all lights
-	for(uint i=0; i<SceneSingleton::getInstance().lights.size(); i++)
+	Scene::Types<Light>::ConstIterator it = SceneSingleton::getInstance().getLights().begin();
+	for(; it != SceneSingleton::getInstance().getLights().end(); it++)
 	{
-		const Light& light = *SceneSingleton::getInstance().lights[i];
+		const Light& light = *(*it);
 		switch(light.getType())
 		{
 			case Light::LT_POINT:

+ 2 - 2
src/Renderer/Renderer.cpp

@@ -352,8 +352,8 @@ void Renderer::renderModelNode(const ModelNode& modelNode, const Camera& cam, Mo
 //======================================================================================================================
 void Renderer::renderAllModelNodes(const Camera& cam, ModelNodeRenderType type) const
 {
-	Vec<ModelNode*>::const_iterator it = SceneSingleton::getInstance().modelNodes.begin();
-	for(; it != SceneSingleton::getInstance().modelNodes.end(); ++it)
+	Scene::Types<ModelNode>::ConstIterator it = SceneSingleton::getInstance().getModelNodes().begin();
+	for(; it != SceneSingleton::getInstance().getModelNodes().end(); ++it)
 	{
 		const ModelNode& md = *(*it);
 		renderModelNode(md, cam, type);

+ 17 - 9
src/Scene/Scene.h

@@ -30,15 +30,6 @@ class Scene
 				typedef typename Container::const_iterator ConstIterator;
 		};
 
-		// Containers of scene's data
-		Types<SceneNode>::Container nodes;
-		Types<Light>::Container lights;
-		Types<Camera>::Container cameras;
-		Types<ParticleEmitter>::Container particleEmitters;
-		Types<ModelNode>::Container modelNodes;
-		Types<Controller>::Container controllers;
-
-		// The funcs
 		Scene();
 		~Scene() throw() {}
 
@@ -55,9 +46,26 @@ class Scene
 		GETTER_SETTER(Vec3, ambientCol, getAmbientCol, setAmbientCol)
 		Physics& getPhysics() {return *physics;}
 		const Physics& getPhysics() const {return *physics;}
+
+		GETTER_RW(Types<SceneNode>::Container, nodes, getAllNodes)
+		GETTER_RW(Types<Light>::Container, lights, getLights)
+		GETTER_RW(Types<Camera>::Container, cameras, getCameras)
+		GETTER_RW(Types<ParticleEmitter>::Container, particleEmitters, getParticleEmitters)
+		GETTER_RW(Types<ModelNode>::Container, modelNodes, getModelNodes)
+		GETTER_RW(Types<Controller>::Container, controllers, getControllers)
 		/// @}
 
 	private:
+		/// @name Containers of scene's data
+		/// @{
+		Types<SceneNode>::Container nodes;
+		Types<Light>::Container lights;
+		Types<Camera>::Container cameras;
+		Types<ParticleEmitter>::Container particleEmitters;
+		Types<ModelNode>::Container modelNodes;
+		Types<Controller>::Container controllers;
+		/// @}
+
 		Vec3 ambientCol; ///< The global ambient color
 		std::auto_ptr<Physics> physics; ///< Connection with Bullet wrapper
 

+ 26 - 0
src/Scene/VisibilityTester.h

@@ -0,0 +1,26 @@
+#ifndef VISIBILITY_TESTER_H
+#define VISIBILITY_TESTER_H
+
+#include <deque>
+
+
+class VisibilityTester
+{
+	public:
+		/// Types
+		template<typedef Type>
+		class Types
+		{
+			typedef std::deque<Type> Container;
+			typedef typename Container::iterator Iterator;
+			typedef typename Container::const_iterator ConstIterator;
+		};
+
+		void test(const Camera& cam);
+
+	private:
+		Scene& scene; ///< Know your father
+};
+
+
+#endif