mirror of
https://github.com/projectM-visualizer/projectm.git
synced 2026-02-11 04:45:33 +00:00
git-svn-id: https://projectm.svn.sourceforge.net/svnroot/projectm/trunk@1383 6778bc44-b910-0410-a7a0-be141de4315d
101 lines
2.2 KiB
C++
101 lines
2.2 KiB
C++
/*
|
|
* RovastarFractopiaFrantic.hpp
|
|
*
|
|
* Created on: Jun 18, 2008
|
|
* Author: pete
|
|
*/
|
|
|
|
#include "Pipeline.hpp"
|
|
#include "Transformation.hpp"
|
|
#include "NativePreset.hpp"
|
|
|
|
class RovastarFractopiaFrantic : public Pipeline
|
|
{
|
|
public:
|
|
|
|
Border border;
|
|
MotionVectors vectors;
|
|
|
|
float dx, dy;
|
|
float q4, q5, q6;
|
|
|
|
float movement;
|
|
|
|
RovastarFractopiaFrantic() : Pipeline()
|
|
{
|
|
drawables.push_back(&vectors);
|
|
drawables.push_back(&border);
|
|
|
|
screenDecay = 1.0;
|
|
|
|
vectors.x_num = 64;
|
|
vectors.y_num = 48;
|
|
vectors.r = 0.0;
|
|
vectors.g = 0.0;
|
|
vectors.b = 0.0;
|
|
vectors.a = 1.0;
|
|
vectors.x_offset = -0.002;
|
|
vectors.length = 2.0;
|
|
|
|
border.outer_size = 0.05;
|
|
border.outer_a = 1.0;
|
|
|
|
border.inner_size = 0.04;
|
|
border.inner_r = 0.0;
|
|
border.inner_g = 0.0;
|
|
border.inner_g = 0.0;
|
|
border.inner_a = 1.0;
|
|
|
|
q4 = 0.249+0.5*(rand()%100*0.01);
|
|
q5 = 0.249+0.5*(rand()%100*0.01);
|
|
q6 = 0.249+0.5*(rand()%100*0.01);
|
|
|
|
movement = 0.0;
|
|
}
|
|
|
|
virtual void Render(const BeatDetect &music, const PipelineContext &context)
|
|
{
|
|
movement += 0.5*(((music.bass+music.bass_att + 0.075*pow((music.bass+0.6*music.bass_att+0.2*music.treb_att),3)))/(float)context.fps);
|
|
if (movement > 10000.0)
|
|
movement = 0.0;
|
|
|
|
border.outer_r = q4+0.25*sin(movement*3.816);
|
|
border.outer_g = q4+0.25*sin(movement*0.744);
|
|
border.outer_b = q4+0.25*sin(movement*0.707);
|
|
|
|
if(music.bass+music.bass_att > 3.0) textureWrap = 1;
|
|
else textureWrap = 0;
|
|
|
|
vectors.y_offset = 0.03*sin(movement*0.34);
|
|
vectors.x_offset = 0.035*(sin(movement*0.217)+cos(movement*0.413)+sin(movement*0.311));
|
|
|
|
dx =0.01*sin(movement*5);
|
|
dy =0.0005*(music.bass+music.bass_att);
|
|
|
|
}
|
|
|
|
virtual PixelPoint PerPixel(PixelPoint p, const PerPixelContext context)
|
|
{
|
|
float myy = context.y-(0.250025);
|
|
float myx = context.x-0.5;
|
|
|
|
Transforms::Zoom(p,context,0.98,1.503744);
|
|
|
|
p.x = p.x - (dx + 2*(2*myx*myy));
|
|
p.y = p.y - (dy + 2*((myy*myy) - (myx*myx)));
|
|
return p;
|
|
}
|
|
|
|
};
|
|
|
|
|
|
typedef NativePreset<RovastarFractopiaFrantic> RovastarFractopiaFranticPreset;
|
|
|
|
extern "C" RovastarFractopiaFranticPreset * create(const char * url) {
|
|
return new RovastarFractopiaFranticPreset(std::string(url));
|
|
}
|
|
|
|
extern "C" void destroy(RovastarFractopiaFranticPreset * preset) {
|
|
delete preset;
|
|
}
|