mikymod 13 лет назад
Родитель
Сommit
a0c80e70dd
5 измененных файлов с 47 добавлено и 37 удалено
  1. 17 12
      samples/terrain/terrain.cpp
  2. 2 2
      src/Config.h
  3. 17 11
      src/FPSSystem.cpp
  4. 10 11
      src/FPSSystem.h
  5. 1 1
      src/input/InputManager.cpp

+ 17 - 12
samples/terrain/terrain.cpp

@@ -4,6 +4,7 @@
 #include <GL/glew.h>
 #include <GL/glu.h>
 #include "OS.h"
+#include "FPSSystem.h"
 
 using namespace crown;
 
@@ -13,7 +14,7 @@ public:
 
 	WndCtrl()
 	{
-		GetInputManager()->RegisterKeyboardListener(this);
+		get_input_manager()->register_keyboard_listener(this);
 	}
 
 	void KeyReleased(const KeyboardEvent& event)
@@ -37,8 +38,8 @@ public:
 		optShowCrate(true),
 		optShowTerrain(true)
 	{
-		GetInputManager()->RegisterKeyboardListener(this);
-		GetInputManager()->RegisterMouseListener(this);
+		get_input_manager()->register_keyboard_listener(this);
+		get_input_manager()->register_mouse_listener(this);
 		mouseRightPressed = false;
 		mouseLeftPressed = false;
 	}
@@ -47,7 +48,7 @@ public:
 	{
 	}
 
-	void KeyReleased(const KeyboardEvent& event)
+	void key_released(const KeyboardEvent& event)
 	{
 		if (event.key == '1')
 		{
@@ -78,7 +79,7 @@ public:
 		}
 	}
 
-	void ButtonPressed(const MouseEvent& event)
+	void button_pressed(const MouseEvent& event)
 	{
 		if (event.button == MB_LEFT)
 		{
@@ -121,7 +122,7 @@ public:
 		wheel += event.wheel * 0.25;
 	}
 
-	void ButtonReleased(const MouseEvent& event)
+	void button_released(const MouseEvent& event)
 	{
 		if (event.button == MB_LEFT)
 		{
@@ -134,14 +135,14 @@ public:
 		wheel -= event.wheel * 0.25;
 	}
 		
-
 	void OnLoad()
 	{
 		crown::Renderer* renderer = crown::GetDevice()->GetRenderer();
 		renderer->SetClearColor(Color4::LIGHTBLUE);
-
+		
+		Vec3 start = Vec3(0.0f, 10.0f, 0.0f);
 		// Add a movable camera
-		cam = new MovableCamera(Vec3::ZERO, true, 90.0f, 1.6f, true, 0.1, 2.5);
+		cam = new MovableCamera(/*Vec3::ZERO*/start, true, 90.0f, 1.6f, true, 0.1, 2.5);
 
 		if (cam)
 		{
@@ -150,6 +151,8 @@ public:
 			cam->SetFarClipDistance(1000.0f);
 		}
 
+		system = new FPSSystem(cam);
+
 		// Add a skybox
 		skybox = new Skybox(Vec3::ZERO, true);
 
@@ -177,8 +180,9 @@ public:
 	void RenderScene()
 	{
 		Renderer* renderer = GetDevice()->GetRenderer();
-
-		cam->Render();
+		
+		system->set_view_by_cursor();
+		system->camera_render();
 
 		renderer->_SetLighting(false);
 		renderer->_SetTexturing(0, false);
@@ -235,6 +239,7 @@ public:
 
 private:
 
+	FPSSystem* system;
 	MovableCamera* cam;
 	Skybox* skybox;
 	Mat4 ortho;
@@ -268,7 +273,7 @@ int main(int argc, char** argv)
 	{
 		os::event_loop();
 
-		GetInputManager()->EventLoop();
+		get_input_manager()->event_loop();
 
 		GetDevice()->GetRenderer()->_BeginFrame();
 			mainScene.RenderScene();

+ 2 - 2
src/Config.h

@@ -62,8 +62,8 @@ OTHER DEALINGS IN THE SOFTWARE.
 	b) you can choose OpenGL|ES if and only if you are
 	   on a Linux or Android machine.
 */
-//#define CROWN_USE_OPENGL		//!< Whether to build with OpenGL
-#define CROWN_USE_OPENGLES		//!< Whether to build with OpenGL|ES
+#define CROWN_USE_OPENGL		//!< Whether to build with OpenGL
+//#define CROWN_USE_OPENGLES		//!< Whether to build with OpenGL|ES
 
 //#define CROWN_USE_WINDOWING	//!< Whether to build with windowing
 

+ 17 - 11
src/FPSSystem.cpp

@@ -5,23 +5,29 @@
 #include "Vec2.h"
 #include "Vec3.h"
 #include "Mat3.h"
+#include "OS.h"
 
 namespace crown
 {
 
 //-----------------------------------------------------------------------
-FPSSystem::FPSSystem() :
+FPSSystem::FPSSystem(MovableCamera* camera) :
 	m_angle_x(0),
 	m_angle_y(0),
-	m_sensibility()
+	m_camera(camera),
+	m_up_pressed(false),
+	m_right_pressed(false),
+	m_down_pressed(false),
+	m_left_pressed(false)
 {
 	get_input_manager()->register_keyboard_listener(this);
-	m_camera = new MovableCamera(Vec3::ZERO, true, 90.0f, 1.6f, true, 0.1, 2.5);
+	//get_input_manager()->register_mouse_listener(this);
 	get_input_manager()->set_cursor_relative_xy(Vec2(0.5f, 0.5f));
+	
 }
 
 //-----------------------------------------------------------------------
-void FPSSystem::KeyPressed(const KeyboardEvent& event)
+void FPSSystem::key_pressed(const KeyboardEvent& event)
 {
 	switch (event.key)
 	{
@@ -53,7 +59,7 @@ void FPSSystem::KeyPressed(const KeyboardEvent& event)
 }
 
 //-----------------------------------------------------------------------
-void FPSSystem::KeyReleased(const KeyboardEvent& event)
+void FPSSystem::key_released(const KeyboardEvent& event)
 {
 	switch (event.key)
 	{
@@ -85,15 +91,15 @@ void FPSSystem::KeyReleased(const KeyboardEvent& event)
 }
 
 //-----------------------------------------------------------------------
-void FPSSystem::set_camera_speed(const real speed)
+void FPSSystem::set_camera(MovableCamera* camera)
 {
-	m_camera->SetSpeed(speed);
+	m_camera = camera;
 }
 
 //-----------------------------------------------------------------------
-void FPSSystem::set_camera_sensibility(const real sensibility)
+MovableCamera* FPSSystem::get_camera()
 {
-	m_camera->SetSensibility(sensibility);
+	return m_camera;
 }
 
 //-----------------------------------------------------------------------
@@ -139,8 +145,8 @@ void FPSSystem::set_view_by_cursor()
 	get_input_manager()->set_cursor_relative_xy(Vec2(0.5f, 0.5f));
 	lastPos = get_input_manager()->get_cursor_relative_xy();
 
-	m_angle_x += delta.y * m_sensibility;
-	m_angle_y += delta.x * m_sensibility;
+	m_angle_x += delta.y * m_camera->GetSensibility();
+	m_angle_y += delta.x * m_camera->GetSensibility();
 
 	m_angle_x = math::clamp_to_range(-89.999f * math::DEG_TO_RAD, 89.999f * math::DEG_TO_RAD, m_angle_x);
 	m_angle_y = math::fmod(m_angle_y, math::TWO_PI);

+ 10 - 11
src/FPSSystem.h

@@ -9,35 +9,34 @@
 
 namespace crown
 {
-/// TODO: GameplaySystem example class
-class FPSSystem : public MouseListener, public KeyboardListener, public TouchListener, public AccelerometerListener
+/// TODO: set_view_by_cursor must be implemented through scripting
+class FPSSystem : public MouseListener, public KeyboardListener
 {
 public:
 
 					/// Constructor
-					FPSSystem();
+					FPSSystem(MovableCamera* camera);
+
+	void 			set_camera(MovableCamera* camera);
+	MovableCamera*	get_camera();
 
-	void			set_camera_speed(const real speed);
-	void 			set_camera_sensibility(const real sensibility);	
 	void			camera_render();
 	void			set_view_by_cursor();	
 
-	virtual void 	KeyPressed(const KeyboardEvent& event);
-	virtual void 	KeyReleased(const KeyboardEvent& event);
+	virtual void 	key_pressed(const KeyboardEvent& event);
+	virtual void 	key_released(const KeyboardEvent& event);
 
 private:
 
 	real 	m_angle_x;
 	real 	m_angle_y;
-	real	m_speed;
-	real 	m_sensibility;
-	
-	MovableCamera* m_camera;
 
 	bool m_up_pressed : 1;
 	bool m_right_pressed : 1;
 	bool m_down_pressed : 1;
 	bool m_left_pressed : 1;
+
+	MovableCamera* m_camera;
 };
 
 } // namespace crown

+ 1 - 1
src/input/InputManager.cpp

@@ -202,7 +202,7 @@ void InputManager::set_cursor_relative_xy(const Vec2& position)
 
 //-----------------------------------------------------------------------------
 InputManager inputManager;
-InputManager* GetInputManager()
+InputManager* get_input_manager()
 {
 	return &inputManager;
 }