* Add "less" target to view make output through less.
[matthijs/ABM2.git] / ABM2 / Amaltheia / myApp.cpp
diff --git a/ABM2/Amaltheia/myApp.cpp b/ABM2/Amaltheia/myApp.cpp
new file mode 100644 (file)
index 0000000..4887fd4
--- /dev/null
@@ -0,0 +1,124 @@
+#include <amaltheia/Graphics.h>
+#include <amaltheia/Input.h>
+#include <amaltheia/Sprite.h>
+#include <amaltheia/System.h>
+
+Graphics *g;
+Input *inp;
+Texture *t;
+vertex v[24];
+
+bool init(void)
+{
+       g = new Graphics(1024, 768, 16, true);
+       g->setBackground(COLOUR_RGBA(127, 127, 127, 255));
+       g->setCullingMode( AM_CULL_NONE);
+       g->createDisplay();
+
+       t = new Texture("amaltheia.png", g);    
+       inp = new Input(true, true);
+
+       /*1st quad*/
+       v[0].x = -5.0;  v[0].y = 5.0; v[0].z = -5.0;
+       v[0].u = 0;     v[0].v = 0; v[0].col = COLOUR_RGBA(55, 55, 255, 255);
+       v[1].x = 5.0;   v[1].y = 5.0; v[1].z = -5.0;
+       v[1].u = 1;     v[1].v = 0; v[1].col = COLOUR_RGBA(50, 100, 200, 255);
+       v[2].x = -5.0;  v[2].y = -5.0; v[2].z = -5.0;
+       v[2].u = 0;     v[2].v = 1; v[2].col = COLOUR_RGBA(255, 255, 255, 255);
+       v[3].x = 5.0;   v[3].y = -5.0; v[3].z = -5.0;
+       v[3].u = 1;     v[3].v = 1; v[3].col = COLOUR_RGBA(50, 100, 200, 255);
+
+       /*2nd quad*/
+       v[4] = v[0]; v[4].z = 5.0;
+       v[4].u = 1 - v[4].u;
+       v[5] = v[1]; v[5].z = 5.0;
+       v[5].u = 1 - v[5].u;
+       v[6] = v[2]; v[6].z = 5.0;
+       v[6].u = 1 - v[6].u;
+       v[7] = v[3]; v[7].z = 5.0;
+       v[7].u = 1 - v[7].u;
+       //3rd
+       v[8] = v[4];
+       v[8].u = 1 - v[8].u;
+       v[9] = v[0];
+       v[9].u = 1 - v[9].u;
+       v[10] = v[6];
+       v[10].u = 1 - v[10].u;
+       v[11] = v[2];
+       v[11].u = 1 - v[11].u;
+
+       //4th
+       v[12] = v[1];
+       v[12].u = 1 - v[12].u;
+       v[13] = v[5];
+       v[13].u = 1 - v[13].u;
+       v[14] =v[3];
+       v[14].u = 1 - v[14].u;
+       v[15] =v[7];
+       v[15].u = 1 - v[15].u;
+
+       //5th
+       v[16] = v[2];
+       v[17] = v[3];
+       v[18] = v[6];
+       v[19] = v[7];
+
+       //6th
+       v[20] = v[0];
+       v[21] = v[1];
+       v[22] = v[4];
+       v[23] = v[5];
+
+       g->setTexture(t);
+
+       return true;
+}
+
+
+bool renderFrame()
+{
+       static float rx = 0.0;
+       static long tm = getTime();
+       
+       if(inp->keyboardGetKeyState(KEY_ESC))
+               return false;
+
+       while(getTime()  - tm <= 19)
+               return true;
+       
+       tm = getTime();
+
+       rx += 0.5;
+       
+       g->beginScene();
+               g->setCamera(0,0, -30, 0, 0, 0,  0, 1,0);
+               g->setWorld(0,0,0, rx, 0 ,rx, 1,1,1);
+               g->renderVertexArray(v, 4, AM_TRIANGLE_STRIP);
+               g->renderVertexArray(&v[4], 4, AM_TRIANGLE_STRIP);
+               g->renderVertexArray(&v[8], 4, AM_TRIANGLE_STRIP);
+               g->renderVertexArray(&v[12], 4, AM_TRIANGLE_STRIP);
+               g->renderVertexArray(&v[16], 4, AM_TRIANGLE_STRIP);
+               g->renderVertexArray(&v[20], 4, AM_TRIANGLE_STRIP);
+       
+               g->setWorld(10, 10, 10, 5*rx, 5*rx ,rx, 0.5, .5, .5);
+               g->renderVertexArray(v, 4, AM_TRIANGLE_STRIP);
+               g->renderVertexArray(&v[4], 4, AM_TRIANGLE_STRIP);
+               g->renderVertexArray(&v[8], 4, AM_TRIANGLE_STRIP);
+               g->renderVertexArray(&v[12], 4, AM_TRIANGLE_STRIP);
+               g->renderVertexArray(&v[16], 4, AM_TRIANGLE_STRIP);
+               g->renderVertexArray(&v[20], 4, AM_TRIANGLE_STRIP);
+
+               g->endScene();
+       
+       return true;
+}
+
+
+bool cleanup()
+{
+       delete inp;
+       delete t;
+       delete g;
+       
+       return true;
+}