Browse Source

Building the shredder tool

Panagiotis Christopoulos Charitos 15 years ago
parent
commit
91c86ffa97
1 changed files with 107 additions and 9 deletions
  1. 107 9
      tools/shredder/src/Main.cpp

+ 107 - 9
tools/shredder/src/Main.cpp

@@ -4,6 +4,10 @@
 #include "Collision.h"
 #include "App.h"
 #include "Shredder.h"
+#include "Camera.h"
+#include "Input.h"
+#include "MainRenderer.h"
+#include "RendererInitializer.h"
 
 
 struct TempMesh
@@ -108,6 +112,40 @@ void shredMesh(const char* filename, float octreeMinSize)
 }
 
 
+//======================================================================================================================
+// initEngine                                                                                                          =
+//======================================================================================================================
+void initEngine(int argc, char** argv)
+{
+	new App(argc, argv);
+	app->initWindow();
+
+	RendererInitializer initializer;
+	initializer.ms.ez.enabled = false;
+	initializer.dbg.enabled = true;
+	initializer.is.sm.bilinearEnabled = true;
+	initializer.is.sm.enabled = true;
+	initializer.is.sm.pcfEnabled = true;
+	initializer.is.sm.resolution = 512;
+	initializer.pps.hdr.enabled = true;
+	initializer.pps.hdr.renderingQuality = 0.25;
+	initializer.pps.hdr.blurringDist = 1.0;
+	initializer.pps.hdr.blurringIterations = 2;
+	initializer.pps.hdr.exposure = 4.0;
+	initializer.pps.ssao.blurringIterations = 2;
+	initializer.pps.ssao.enabled = true;
+	initializer.pps.ssao.renderingQuality = 0.5;
+	initializer.mainRendererQuality = 1.0;
+	app->getMainRenderer().init(initializer);
+
+	Camera* cam = new Camera(toRad(60.0), toRad(60.0), 0.5, 200.0);
+	cam->moveLocalY(3.0);
+	cam->moveLocalZ(5.7);
+	cam->moveLocalX(-0.3);
+	app->setActiveCam(cam);
+}
+
+
 //======================================================================================================================
 // main                                                                                                                =
 //======================================================================================================================
@@ -115,27 +153,87 @@ int main(int argc, char** argv)
 {
 	try
 	{
-		new App(argc, argv);
-		app->initWindow();
-
-		Camera* cam = new Camera(app->getMainRenderer().getAspectRatio()*toRad(60.0), toRad(60.0), 0.5, 200.0);
-		cam->moveLocalY(3.0);
-		cam->moveLocalZ(5.7);
-		cam->moveLocalX(-0.3);
-		app->setActiveCam(cam);
 
 		Shredder shredder("/home/godlike/src/anki/maps/sponza/walls.mesh", 1.0);
 
 		while(true)
 		{
+			// Input
+			app->getInput().handleEvents();
+			float dist = 0.2;
+			float ang = toRad(3.0);
+			float scale = 0.01;
+			SceneNode* mover = app->getActiveCam();
+			if(app->getInput().keys[SDL_SCANCODE_A])
+			{
+				mover->moveLocalX(-dist);
+			}
+			if(app->getInput().keys[SDL_SCANCODE_D])
+			{
+				mover->moveLocalX(dist);
+			}
+			if(app->getInput().keys[SDL_SCANCODE_LSHIFT])
+			{
+				mover->moveLocalY(dist);
+			}
+			if(app->getInput().keys[SDL_SCANCODE_SPACE])
+			{
+				mover->moveLocalY(-dist);
+			}
+			if(app->getInput().keys[SDL_SCANCODE_W])
+			{
+				mover->moveLocalZ(-dist);
+			}
+			if(app->getInput().keys[SDL_SCANCODE_S])
+			{
+				mover->moveLocalZ(dist);
+			}
+			if(app->getInput().keys[SDL_SCANCODE_Q])
+			{
+				mover->rotateLocalZ(ang);
+			}
+			if(app->getInput().keys[SDL_SCANCODE_E])
+			{
+				mover->rotateLocalZ(-ang);
+			}
+			if(app->getInput().keys[SDL_SCANCODE_UP])
+			{
+				mover->rotateLocalX(ang);
+			}
+			if(app->getInput().keys[SDL_SCANCODE_DOWN])
+			{
+				mover->rotateLocalX(-ang);
+			}
+			if(app->getInput().keys[SDL_SCANCODE_LEFT])
+			{
+				mover->rotateLocalY(ang);
+			}
+			if(app->getInput().keys[SDL_SCANCODE_RIGHT])
+			{
+				mover->rotateLocalY(-ang);
+			}
+
+			mover->getLocalTransform().rotation.reorthogonalize();
+
+			// Render
+			app->getMainRenderer().render(*app->getActiveCam());
+
 			glClear(GL_COLOR_BUFFER_BIT);
 
 			glColor3fv(&Vec3(1.0)[0]);
 
 			// Draw
+			glMatrixMode(GL_PROJECTION_MATRIX);
+			Mat4 projMat = app->getActiveCam()->getProjectionMatrix().getTransposed();
+			glLoadMatrixf(&projMat[0]);
+			glMatrixMode(GL_MODELVIEW_MATRIX);
+			Mat4 viewMat = app->getActiveCam()->getViewMatrix().getTransposed();
+			glLoadMatrixf(&viewMat[0]);
+
 			glEnableClientState(GL_VERTEX_ARRAY);
 			glVertexPointer(3, GL_FLOAT, 0, &(shredder.getOriginalMesh().getVertCoords()[0]));
-			glDrawElements(GL_QUADS, shredder.getOriginalMesh().getVertIndeces().size(), GL_UNSIGNED_BYTE, &shredder.getOriginalMesh().getVertIndeces()[0]);
+			glDrawElements(GL_QUADS, shredder.getOriginalMesh().getVertIndeces().size(), GL_UNSIGNED_BYTE,
+			               &shredder.getOriginalMesh().getVertIndeces()[0]);
 			glDisableClientState(GL_VERTEX_ARRAY);
 
 			app->swapBuffers();