* Add "less" target to view make output through less.
[matthijs/ABM2.git] / ABM2 / Amaltheia / myApp.cpp
1 #include <amaltheia/Graphics.h>
2 #include <amaltheia/Input.h>
3 #include <amaltheia/Sprite.h>
4 #include <amaltheia/System.h>
5
6 Graphics *g;
7 Input *inp;
8 Texture *t;
9 vertex v[24];
10
11 bool init(void)
12 {
13         g = new Graphics(1024, 768, 16, true);
14         g->setBackground(COLOUR_RGBA(127, 127, 127, 255));
15         g->setCullingMode( AM_CULL_NONE);
16         g->createDisplay();
17
18         t = new Texture("amaltheia.png", g);    
19         inp = new Input(true, true);
20
21         /*1st quad*/
22         v[0].x = -5.0;  v[0].y = 5.0; v[0].z = -5.0;
23         v[0].u = 0;     v[0].v = 0; v[0].col = COLOUR_RGBA(55, 55, 255, 255);
24         v[1].x = 5.0;   v[1].y = 5.0; v[1].z = -5.0;
25         v[1].u = 1;     v[1].v = 0; v[1].col = COLOUR_RGBA(50, 100, 200, 255);
26         v[2].x = -5.0;  v[2].y = -5.0; v[2].z = -5.0;
27         v[2].u = 0;     v[2].v = 1; v[2].col = COLOUR_RGBA(255, 255, 255, 255);
28         v[3].x = 5.0;   v[3].y = -5.0; v[3].z = -5.0;
29         v[3].u = 1;     v[3].v = 1; v[3].col = COLOUR_RGBA(50, 100, 200, 255);
30
31         /*2nd quad*/
32         v[4] = v[0]; v[4].z = 5.0;
33         v[4].u = 1 - v[4].u;
34         v[5] = v[1]; v[5].z = 5.0;
35         v[5].u = 1 - v[5].u;
36         v[6] = v[2]; v[6].z = 5.0;
37         v[6].u = 1 - v[6].u;
38         v[7] = v[3]; v[7].z = 5.0;
39         v[7].u = 1 - v[7].u;
40         //3rd
41         v[8] = v[4];
42         v[8].u = 1 - v[8].u;
43         v[9] = v[0];
44         v[9].u = 1 - v[9].u;
45         v[10] = v[6];
46         v[10].u = 1 - v[10].u;
47         v[11] = v[2];
48         v[11].u = 1 - v[11].u;
49
50         //4th
51         v[12] = v[1];
52         v[12].u = 1 - v[12].u;
53         v[13] = v[5];
54         v[13].u = 1 - v[13].u;
55         v[14] =v[3];
56         v[14].u = 1 - v[14].u;
57         v[15] =v[7];
58         v[15].u = 1 - v[15].u;
59
60         //5th
61         v[16] = v[2];
62         v[17] = v[3];
63         v[18] = v[6];
64         v[19] = v[7];
65
66         //6th
67         v[20] = v[0];
68         v[21] = v[1];
69         v[22] = v[4];
70         v[23] = v[5];
71
72         g->setTexture(t);
73
74         return true;
75 }
76
77
78 bool renderFrame()
79 {
80         static float rx = 0.0;
81         static long tm = getTime();
82         
83         if(inp->keyboardGetKeyState(KEY_ESC))
84                 return false;
85
86         while(getTime()  - tm <= 19)
87                 return true;
88         
89         tm = getTime();
90
91         rx += 0.5;
92         
93         g->beginScene();
94                 g->setCamera(0,0, -30, 0, 0, 0,  0, 1,0);
95                 g->setWorld(0,0,0, rx, 0 ,rx, 1,1,1);
96                 g->renderVertexArray(v, 4, AM_TRIANGLE_STRIP);
97                 g->renderVertexArray(&v[4], 4, AM_TRIANGLE_STRIP);
98                 g->renderVertexArray(&v[8], 4, AM_TRIANGLE_STRIP);
99                 g->renderVertexArray(&v[12], 4, AM_TRIANGLE_STRIP);
100                 g->renderVertexArray(&v[16], 4, AM_TRIANGLE_STRIP);
101                 g->renderVertexArray(&v[20], 4, AM_TRIANGLE_STRIP);
102         
103                 g->setWorld(10, 10, 10, 5*rx, 5*rx ,rx, 0.5, .5, .5);
104                 g->renderVertexArray(v, 4, AM_TRIANGLE_STRIP);
105                 g->renderVertexArray(&v[4], 4, AM_TRIANGLE_STRIP);
106                 g->renderVertexArray(&v[8], 4, AM_TRIANGLE_STRIP);
107                 g->renderVertexArray(&v[12], 4, AM_TRIANGLE_STRIP);
108                 g->renderVertexArray(&v[16], 4, AM_TRIANGLE_STRIP);
109                 g->renderVertexArray(&v[20], 4, AM_TRIANGLE_STRIP);
110
111                 g->endScene();
112         
113         return true;
114 }
115
116
117 bool cleanup()
118 {
119         delete inp;
120         delete t;
121         delete g;
122         
123         return true;
124 }