diff --git a/src/Makefile.am b/src/Makefile.am index d0fcc6bc..9311bb4b 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -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` diff --git a/src/debugrecord.cpp b/src/debugrecord.cpp new file mode 100644 index 00000000..7e5265c0 --- /dev/null +++ b/src/debugrecord.cpp @@ -0,0 +1,86 @@ +// +// Deus Hax (working title) +// Copyright (c) 2010 Sam Hocevar +// + +#if defined HAVE_CONFIG_H +# include "config.h" +#endif + +#include +#include + +#include + +#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; +} + diff --git a/src/debugrecord.h b/src/debugrecord.h new file mode 100644 index 00000000..cf1404bf --- /dev/null +++ b/src/debugrecord.h @@ -0,0 +1,34 @@ +// +// Deus Hax (working title) +// Copyright (c) 2010 Sam Hocevar +// + +// +// 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__ + diff --git a/src/scene.cpp b/src/scene.cpp index 405b1f39..9859ae96 100644 --- a/src/scene.cpp +++ b/src/scene.cpp @@ -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); diff --git a/src/test-map.cpp b/src/test-map.cpp index 43782666..e4d086e3 100644 --- a/src/test-map.cpp +++ b/src/test-map.cpp @@ -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()) {