@@ -9,13 +9,14 @@ libcommon_a_SOURCES = \ | |||
joystick.cpp joystick.h asset.cpp asset.h ticker.cpp ticker.h \ | |||
forge.cpp forge.h video.cpp video.h timer.cpp timer.h \ | |||
profiler.cpp profiler.h \ | |||
debugfps.cpp debugfps.h debugsprite.cpp debugsprite.h | |||
debugfps.cpp debugfps.h debugsprite.cpp debugsprite.h \ | |||
debugrecord.cpp debugrecord.h | |||
libcommon_a_CXXFLAGS = `pkg-config --cflags sdl gl SDL_image` | |||
test_map_SOURCES = test-map.cpp sdlinput.cpp sdlinput.h | |||
test_map_CXXFLAGS = `pkg-config --cflags sdl gl SDL_image` | |||
test_map_LDADD = libcommon.a | |||
test_map_LDFLAGS = `pkg-config --libs sdl gl SDL_image` | |||
test_map_LDFLAGS = `pkg-config --libs sdl gl SDL_image` -lpipi | |||
editor_SOURCES = gtk/editor.cpp | |||
editor_CXXFLAGS = `pkg-config --cflags sdl gl SDL_image gtk+-2.0 gtkgl-2.0` | |||
@@ -0,0 +1,86 @@ | |||
// | |||
// Deus Hax (working title) | |||
// Copyright (c) 2010 Sam Hocevar <sam@hocevar.net> | |||
// | |||
#if defined HAVE_CONFIG_H | |||
# include "config.h" | |||
#endif | |||
#include <cstdio> | |||
#include <cstring> | |||
#include <pipi.h> | |||
#include "debugrecord.h" | |||
#include "video.h" | |||
/* | |||
* DebugRecord implementation class | |||
*/ | |||
class DebugRecordData | |||
{ | |||
friend class DebugRecord; | |||
private: | |||
char const *path; | |||
int width, height; | |||
pipi_sequence_t *sequence; | |||
}; | |||
/* | |||
* Public DebugRecord class | |||
*/ | |||
DebugRecord::DebugRecord(char const *path) | |||
{ | |||
data = new DebugRecordData(); | |||
data->path = strdup(path); | |||
data->width = 0; | |||
data->height = 0; | |||
data->sequence = NULL; | |||
} | |||
Asset::Group DebugRecord::GetGroup() | |||
{ | |||
return GROUP_RENDER_CAPTURE; | |||
} | |||
void DebugRecord::TickGame(float delta_time) | |||
{ | |||
Asset::TickGame(delta_time); | |||
} | |||
void DebugRecord::TickRender(float delta_time) | |||
{ | |||
Asset::TickRender(delta_time); | |||
int width = Video::GetWidth(); | |||
int height = Video::GetHeight(); | |||
if (data->width != width || data->height != height) | |||
{ | |||
data->width = width; | |||
data->height = height; | |||
if (data->sequence) | |||
pipi_close_sequence(data->sequence); | |||
data->sequence = pipi_open_sequence(data->path, width, height, 30); | |||
} | |||
if (data->sequence) | |||
{ | |||
uint32_t *buffer = new uint32_t[width * height]; | |||
Video::Capture(buffer); | |||
pipi_feed_sequence(data->sequence, (uint8_t *)buffer, width, height); | |||
delete[] buffer; | |||
} | |||
} | |||
DebugRecord::~DebugRecord() | |||
{ | |||
delete data; | |||
} | |||
@@ -0,0 +1,34 @@ | |||
// | |||
// Deus Hax (working title) | |||
// Copyright (c) 2010 Sam Hocevar <sam@hocevar.net> | |||
// | |||
// | |||
// The DebugRecord class | |||
// --------------------- | |||
// | |||
#if !defined __DH_DEBUGRECORD_H__ | |||
#define __DH_DEBUGRECORD_H__ | |||
#include "asset.h" | |||
class DebugRecordData; | |||
class DebugRecord : public Asset | |||
{ | |||
public: | |||
DebugRecord(char const *path); | |||
virtual ~DebugRecord(); | |||
protected: | |||
virtual Group GetGroup(); | |||
virtual void TickGame(float delta_time); | |||
virtual void TickRender(float delta_time); | |||
private: | |||
DebugRecordData *data; | |||
}; | |||
#endif // __DH_DEBUGRECORD_H__ | |||
@@ -90,8 +90,8 @@ void Scene::Render() // XXX: rename to Blit() | |||
static float f = 0.0f; | |||
f += 0.05f; | |||
glTranslatef(320.0f, 240.0f, 0.0f); | |||
glRotatef(45.0f, 1.0f, 0.0f, 0.0f); | |||
glRotatef(30.0f * sinf(f), 0.0f, 0.0f, 1.0f); | |||
glRotatef(50.0f + 3.0f * sinf(f), 1.0f, 0.0f, 0.0f); | |||
glRotatef(20.0f * cosf(f), 0.0f, 0.0f, 1.0f); | |||
//glRotatef(30.0f, 0.0f, 0.0f, 1.0f); | |||
glTranslatef(-320.0f, -240.0f, 0.0f); | |||
@@ -15,6 +15,7 @@ | |||
#include "sdlinput.h" | |||
#include "debugfps.h" | |||
#include "debugsprite.h" | |||
#include "debugrecord.h" | |||
#include "game.h" | |||
#include "ticker.h" | |||
#include "profiler.h" | |||
@@ -39,7 +40,7 @@ int main(int argc, char **argv) | |||
return EXIT_FAILURE; | |||
} | |||
SDL_WM_SetCaption("Deus Hax (SDL)", NULL); | |||
SDL_WM_SetCaption("Map Test (SDL)", NULL); | |||
SDL_ShowCursor(0); | |||
SDL_WM_GrabInput(SDL_GRAB_ON); | |||
@@ -53,6 +54,7 @@ int main(int argc, char **argv) | |||
new SdlInput(game); | |||
new DebugFps(); | |||
new DebugSprite(game); | |||
//new DebugRecord("movie.ogg"); | |||
while (!game->Finished()) | |||
{ | |||