summaryrefslogtreecommitdiffstats
path: root/matchblox/main.cpp
diff options
context:
space:
mode:
authorWilrik de Loose <wilrik@wilrik.nl>2008-05-20 17:15:44 (GMT)
committerWilrik de Loose <wilrik@wilrik.nl>2008-05-20 17:15:44 (GMT)
commite58a5c5e7bf915703556013a8323953866f0adb8 (patch)
tree10a9a50217ec92a3270c74c7bf3d917c8d62ac93 /matchblox/main.cpp
parentc7c995631d14d5c65d538422159b782752e9357c (diff)
download2iv55-e58a5c5e7bf915703556013a8323953866f0adb8.zip
2iv55-e58a5c5e7bf915703556013a8323953866f0adb8.tar.gz
2iv55-e58a5c5e7bf915703556013a8323953866f0adb8.tar.bz2
+ wiimote init
Diffstat (limited to 'matchblox/main.cpp')
-rw-r--r--matchblox/main.cpp112
1 files changed, 108 insertions, 4 deletions
diff --git a/matchblox/main.cpp b/matchblox/main.cpp
index d6cc0b4..6d89b6a 100644
--- a/matchblox/main.cpp
+++ b/matchblox/main.cpp
@@ -6,6 +6,10 @@
#define TRUE !FALSE
#endif
+
+#include <wiimote.h>
+#include <GL/glew.h>
+#include <GL/glut.h>
#include <iostream>
#include <math.h>
@@ -13,7 +17,9 @@
#include "message_queue.h"
#include "message_input.h"
+#include "typedefs.h"
#include "menu.h"
+#include "textfile.h"
#include "C_MatchBloxEngine.h"
@@ -22,9 +28,102 @@
#define KEY_ESCAPE 27
-
+GameState_t g_GameState;
C_MatchBloxEngine *g_pEngine;
+bool InitWiiMotes()
+{
+ g_GameState.m_pTrackingWiimote = new wiimote();
+
+ g_GameState.m_pTrackingWiimote->ChangedCallback = NULL; //no callbacks, we just poll...
+ g_GameState.m_pTrackingWiimote->CallbackTriggerFlags = NO_CHANGE;
+
+ printf("connecting:\n");
+ int retries = 10;
+ while(!g_GameState.m_pTrackingWiimote->Connect(wiimote::FIRST_AVAILABLE) && retries > 10)
+ {
+ Sleep(100);
+ printf(".");
+ retries--;
+ }
+
+ if (g_GameState.m_pTrackingWiimote->IsConnected())
+ {
+ printf("connected\n");
+
+ g_GameState.m_pTrackingWiimote->SetLEDs(0x0f);
+
+ g_GameState.m_pTrackingWiimote->SetReportType(wiimote::IN_BUTTONS_ACCEL_IR_EXT); // IR dots
+ g_GameState.m_pTrackingWiimote->SetRumble(true);
+ Sleep(500);
+ g_GameState.m_pTrackingWiimote->SetRumble(false);
+
+ return true;
+ }
+ else
+ {
+ return false;
+ }
+}
+
+bool LoadGreyScaleShader()
+{
+ GLint l_bStatus;
+ char *vs_text = NULL,*fs_text = NULL;
+ GLuint vs = glCreateShader(GL_VERTEX_SHADER),
+ fs = glCreateShader(GL_FRAGMENT_SHADER);
+
+ vs_text = textFileRead("shaders\\greyscale.vert");
+ if (vs_text == NULL)
+ {
+ return false;
+ }
+ fs_text = textFileRead("shaders\\greyscale.frag");
+ if (fs_text == NULL)
+ {
+ free(vs_text);
+ return false;
+ }
+
+ glShaderSource(vs, 1, (const char**)&vs_text,NULL);
+ glShaderSource(fs, 1, (const char**)&fs_text,NULL);
+
+ free(vs_text);
+ free(fs_text);
+
+ glCompileShader(vs);
+// printShaderInfoLog(vs);
+ glGetShaderiv(vs, GL_COMPILE_STATUS, &l_bStatus);
+ if (l_bStatus == GL_FALSE)
+ {
+ return false;
+ }
+
+ glCompileShader(fs);
+// printShaderInfoLog(fs);
+ glGetShaderiv(fs, GL_COMPILE_STATUS, &l_bStatus);
+ if (l_bStatus == GL_FALSE)
+ {
+ return false;
+ }
+
+ g_GameState.m_GreyScaleShaderProgram = glCreateProgram();
+ glAttachShader(g_GameState.m_GreyScaleShaderProgram,fs);
+ glAttachShader(g_GameState.m_GreyScaleShaderProgram,vs);
+
+ glLinkProgram(g_GameState.m_GreyScaleShaderProgram);
+// printProgramInfoLog(g_GameState.m_GreyScaleShaderProgram);
+ glGetProgramiv(g_GameState.m_GreyScaleShaderProgram, GL_LINK_STATUS, &l_bStatus);
+ if (l_bStatus == GL_FALSE)
+ {
+ return false;
+ }
+
+ g_GameState.m_GSConvScaleLoc = glGetUniformLocation(g_GameState.m_GreyScaleShaderProgram, "g_ConversionWeights");
+
+ return true;
+}
+
void init_gl(void)
{
GLfloat l_fLightpos[4] = {0.0, 1.0, 1.0, 0.0};
@@ -46,6 +145,8 @@ void idle_func(void)
//call engine idle func
MenuRun();
+ g_GameState.m_pTrackingWiimote->RefreshState();
+
glutPostRedisplay();
}
@@ -54,10 +155,10 @@ void render_scene(void)
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
g_pEngine->Render(glutGet(GLUT_ELAPSED_TIME));
-
+
glDisable(GL_LIGHTING);
MenuRender();
- glEnable(GL_LIGHTING);
+ glEnable(GL_LIGHTING);
glutSwapBuffers();
@@ -112,6 +213,9 @@ void process_special_keys(int key, int x, int y)
switch (key)
{
// do sumting
+ case 0:
+ default:
+ break;
}
@@ -153,7 +257,7 @@ int main(int argc, char **argv)
init_gl();
MenuInit(SCREEN_WIDTH, SCREEN_HEIGHT);
-
+ InitWiiMotes();
GameSettings l_set = {10, 2, 2};
g_pEngine = new C_MatchBloxEngine("models", "", l_set);