| @@ -12,6 +12,19 @@ | |||
| # include "config.h" | |||
| #endif | |||
| #if defined _XBOX | |||
| # define _USE_MATH_DEFINES /* for M_PI */ | |||
| # include <xtl.h> | |||
| # undef near /* Fuck Microsoft */ | |||
| # undef far /* Fuck Microsoft again */ | |||
| #elif defined _WIN32 | |||
| # define _USE_MATH_DEFINES /* for M_PI */ | |||
| # define WIN32_LEAN_AND_MEAN | |||
| # include <windows.h> | |||
| # undef near /* Fuck Microsoft */ | |||
| # undef far /* Fuck Microsoft again */ | |||
| #endif | |||
| #include "core.h" | |||
| #include "loldebug.h" | |||
| @@ -48,6 +61,7 @@ public: | |||
| m_ready = false; | |||
| m_cur_fbo = 0; | |||
| m_timer = -1.0f; | |||
| mode = 0; | |||
| } | |||
| virtual void TickGame(float seconds) | |||
| @@ -136,19 +150,6 @@ public: | |||
| /* FIXME: this object never cleans up */ | |||
| //SRC SETUP | |||
| int i = 4; | |||
| while (i-- > 0) | |||
| { | |||
| voronoi_points.Push(vec3(rand<float>(512.f), rand<float>(512.f), .0f), | |||
| vec2(64.f + rand<float>(64.f), 64.f + rand<float>(64.f))); | |||
| } | |||
| //voronoi_points.Push(vec3(511.f, 511.f, .0f), vec2(-128.f)); | |||
| //voronoi_points.Push(vec3(256.f, 256.f, .0f), vec2( 128.f)); | |||
| //voronoi_points.Push(vec3(128.f, 128.f, .0f), vec2(-128.f)); | |||
| //voronoi_points.Push(vec3(128.f, 400.f, .0f), vec2( 128.f)); | |||
| //voronoi_points.Push(vec3(400.f, 24.f, .0f), vec2(-128.f)); | |||
| m_cur_fbo = VoronoiFbo; | |||
| } | |||
| @@ -163,8 +164,37 @@ public: | |||
| m_cur_fbo = SrcVoronoiFbo; | |||
| else if (Input::WasReleased(Key::F2)) | |||
| m_cur_fbo = VoronoiFbo; | |||
| else if (Input::WasReleased(Key::F3)) | |||
| { | |||
| voronoi_points.Empty(); | |||
| if (mode == 0) | |||
| { | |||
| int i = 4; | |||
| while (i-- > 0) | |||
| voronoi_points.Push(vec3(rand<float>(512.f), rand<float>(512.f), .0f), | |||
| vec2(64.f + rand<float>(64.f), 64.f + rand<float>(64.f))); | |||
| mode = 1; | |||
| } | |||
| else | |||
| { | |||
| mode = 0; | |||
| } | |||
| } | |||
| } | |||
| if (mode == 0) | |||
| { | |||
| voronoi_points.Empty(); | |||
| int maxi = 6; | |||
| for (int i = 0; i < maxi; ++i) | |||
| { | |||
| voronoi_points.Push(vec3(256.f) + 196.f * vec3((float)lol::cos(m_time + (double)i * 2.0 * M_PI / (double)maxi), (float)lol::sin(m_time + (double)i * 2.0 * M_PI / (double)maxi), .0f), vec2(.0f)); | |||
| voronoi_points.Push(vec3(256.f) + 128.f * vec3((float)lol::cos(-m_time + (double)i * 2.0 * M_PI / (double)maxi), (float)lol::sin(-m_time + (double)i * 2.0 * M_PI / (double)maxi), .0f), vec2(.0f)); | |||
| voronoi_points.Push(vec3(256.f) + 64.f * vec3((float)lol::cos(m_time + (double)i * 2.0 * M_PI / (double)maxi), (float)lol::sin(m_time + (double)i * 2.0 * M_PI / (double)maxi), .0f), vec2(.0f)); | |||
| voronoi_points.Push(vec3(256.f) + 32.f * vec3((float)lol::cos(-m_time + (double)i * 2.0 * M_PI / (double)maxi), (float)lol::sin(-m_time + (double)i * 2.0 * M_PI / (double)maxi), .0f), vec2(.0f)); | |||
| } | |||
| voronoi_points.Push(vec3(256.f), vec2(.0f)); | |||
| } | |||
| temp_buffer->Bind(); | |||
| Video::SetClearColor(vec4(0.f, 0.f, 0.f, 1.f)); | |||
| @@ -347,6 +377,7 @@ private: | |||
| Array<FrameBuffer *, Shader *, Array<ShaderUniform>, Array<ShaderAttrib> > m_fbos; | |||
| FrameBuffer *temp_buffer; | |||
| int mode; | |||
| int m_cur_fbo; | |||
| double m_time; | |||
| vec3 m_hotspot, m_color; | |||