123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448 |
- #ifndef _MILKDROP_STATE_
- #define _MILKDROP_STATE_ 1
- #include <memory.h>
- #include <stdlib.h>
- #include <stdio.h>
- #include "gstring.h"
- #include "texmgr.h"
- #include <d3dx9math.h> // for D3DXVECTOR3
- #include "ns-eel2/ns-eel.h"
- #include "md_defines.h"
- #define RECOMPILE_PRESET_CODE 1
- #define RECOMPILE_WAVE_CODE 2
- #define RECOMPILE_SHAPE_CODE 4
- #define NUM_Q_VAR 32
- #define NUM_T_VAR 8
- #define MAX_BIGSTRING_LEN 32768
- class CBlendableFloat
- {
- public:
- CBlendableFloat();
- ~CBlendableFloat();
- float operator = (float f) {
- val = f;
- m_bBlending = false;
- return val;
- };
- float operator *= (float f) {
- val *= f;
- m_bBlending = false;
- return val;
- };
- float operator /= (float f) {
- val /= f;
- m_bBlending = false;
- return val;
- };
- float operator -= (float f) {
- val -= f;
- m_bBlending = false;
- return val;
- };
- float operator += (float f) {
- val += f;
- m_bBlending = false;
- return val;
- };
- float eval(float fTime);
- void StartBlendFrom(CBlendableFloat *f_from, float fAnimTime, float fDuration);
- protected:
- float val;
- bool m_bBlending;
- float m_fBlendStartTime;
- float m_fBlendDuration;
- float m_fBlendFrom;
- };
- class CShape
- {
- public:
- int Import(FILE* f, const wchar_t* szFile, int i);
- int Export(FILE* f, const wchar_t* szFile, int i);
- int enabled;
- int sides;
- int additive;
- int thickOutline;
- int textured;
- int instances;
- float x,y,rad,ang;
- float r,g,b,a;
- float r2,g2,b2,a2;
- float border_r,border_g,border_b,border_a;
- float tex_ang, tex_zoom;
- char m_szInit[MAX_BIGSTRING_LEN];
- char m_szPerFrame[MAX_BIGSTRING_LEN];
-
- NSEEL_CODEHANDLE m_pf_codehandle;
-
-
-
- NSEEL_VMCTX m_pf_eel;
- double *var_pf_time, *var_pf_fps;
- double *var_pf_frame;
- double *var_pf_progress;
-
-
- double* var_pf_q[NUM_Q_VAR];
- double* var_pf_t[NUM_T_VAR];
- double *var_pf_bass, *var_pf_mid, *var_pf_treb, *var_pf_bass_att, *var_pf_mid_att, *var_pf_treb_att;
- double *var_pf_r, *var_pf_g, *var_pf_b, *var_pf_a;
- double *var_pf_r2, *var_pf_g2, *var_pf_b2, *var_pf_a2;
- double *var_pf_border_r, *var_pf_border_g, *var_pf_border_b, *var_pf_border_a;
- double *var_pf_x, *var_pf_y, *var_pf_rad, *var_pf_ang;
- double *var_pf_sides, *var_pf_textured, *var_pf_additive, *var_pf_thick, *var_pf_instances, *var_pf_instance;
- double *var_pf_tex_zoom, *var_pf_tex_ang;
-
-
- double t_values_after_init_code[NUM_T_VAR];
- };
- class CWave
- {
- public:
- int Import(FILE* f, const wchar_t *szFile, int i);
- int Export(FILE* f, const wchar_t* szFile, int i);
- int enabled;
- int samples;
- int sep;
- float scaling;
- float smoothing;
- float x,y,r,g,b,a;
- int bSpectrum;
- int bUseDots;
- int bDrawThick;
- int bAdditive;
- char m_szInit[MAX_BIGSTRING_LEN];
- char m_szPerFrame[MAX_BIGSTRING_LEN];
- char m_szPerPoint[MAX_BIGSTRING_LEN];
- NSEEL_CODEHANDLE m_pf_codehandle;
- NSEEL_CODEHANDLE m_pp_codehandle;
-
- NSEEL_VMCTX m_pf_eel;
- double *var_pf_time, *var_pf_fps;
- double *var_pf_frame;
- double *var_pf_progress;
-
-
- double* var_pf_q[NUM_Q_VAR];
- double* var_pf_t[NUM_T_VAR];
- double *var_pf_bass, *var_pf_mid, *var_pf_treb, *var_pf_bass_att, *var_pf_mid_att, *var_pf_treb_att;
- double *var_pf_r, *var_pf_g, *var_pf_b, *var_pf_a;
- double *var_pf_samples;
-
- NSEEL_VMCTX m_pp_eel;
- double *var_pp_time, *var_pp_fps;
- double *var_pp_frame;
- double *var_pp_progress;
-
-
- double* var_pp_q[NUM_Q_VAR];
- double* var_pp_t[NUM_T_VAR];
- double *var_pp_bass, *var_pp_mid, *var_pp_treb, *var_pp_bass_att, *var_pp_mid_att, *var_pp_treb_att;
- double *var_pp_sample, *var_pp_value1, *var_pp_value2;
- double *var_pp_x, *var_pp_y, *var_pp_r, *var_pp_g, *var_pp_b, *var_pp_a;
- double t_values_after_init_code[NUM_T_VAR];
- };
- typedef struct
- {
- int type;
- int in_var;
- int out_var;
- float constant;
- float min;
- float max;
- float in_scale;
- float amp;
- float freq;
- float freq2;
- float phase;
- float phase2;
- } td_modifier;
- #define INVALID_PRESET_DESC L"<no description>"
- #define STATE_GENERAL 1
- #define STATE_MOTION 2
- #define STATE_WAVE 4
- #define STATE_WARP 8
- #define STATE_COMP 16
- #define STATE_ALL (32-1)
- #define CUR_MILKDROP_PRESET_VERSION 201
- class CState
- {
- public:
- CState();
- ~CState();
- void Default(DWORD ApplyFlags=STATE_ALL);
- void Randomize(int nMode);
- void StartBlendFrom(CState *s_from, float fAnimTime, float fTimespan);
- bool Import(const wchar_t *szIniFile, float fTime, CState* pOldState, DWORD ApplyFlags=STATE_ALL);
- bool Export(const wchar_t *szIniFile);
- void RecompileExpressions(int flags=0xFFFFFFFF, int bReInit=1);
- void GenDefaultWarpShader();
- void GenDefaultCompShader();
- wchar_t m_szDesc[512];
-
- int m_nMinPSVersion;
- int m_nMaxPSVersion;
- int m_nWarpPSVersion;
- int m_nCompPSVersion;
- float m_fRating;
-
- CBlendableFloat m_fGammaAdj;
- CBlendableFloat m_fVideoEchoZoom;
- CBlendableFloat m_fVideoEchoAlpha;
- float m_fVideoEchoAlphaOld;
- int m_nVideoEchoOrientation;
- int m_nVideoEchoOrientationOld;
-
- CBlendableFloat m_fDecay;
-
- int m_nWaveMode;
- int m_nOldWaveMode;
- bool m_bAdditiveWaves;
- CBlendableFloat m_fWaveAlpha;
- CBlendableFloat m_fWaveScale;
- CBlendableFloat m_fWaveSmoothing;
- bool m_bWaveDots;
- bool m_bWaveThick;
- CBlendableFloat m_fWaveParam;
- bool m_bModWaveAlphaByVolume;
- CBlendableFloat m_fModWaveAlphaStart;
- CBlendableFloat m_fModWaveAlphaEnd;
- float m_fWarpAnimSpeed;
- CBlendableFloat m_fWarpScale;
- CBlendableFloat m_fZoomExponent;
- CBlendableFloat m_fShader;
- bool m_bMaximizeWaveColor;
- bool m_bTexWrap;
- bool m_bDarkenCenter;
- bool m_bRedBlueStereo;
- bool m_bBrighten;
- bool m_bDarken;
- bool m_bSolarize;
- bool m_bInvert;
-
-
- CBlendableFloat m_fZoom;
- CBlendableFloat m_fRot;
- CBlendableFloat m_fRotCX;
- CBlendableFloat m_fRotCY;
- CBlendableFloat m_fXPush;
- CBlendableFloat m_fYPush;
- CBlendableFloat m_fWarpAmount;
- CBlendableFloat m_fStretchX;
- CBlendableFloat m_fStretchY;
- CBlendableFloat m_fWaveR;
- CBlendableFloat m_fWaveG;
- CBlendableFloat m_fWaveB;
- CBlendableFloat m_fWaveX;
- CBlendableFloat m_fWaveY;
- CBlendableFloat m_fOuterBorderSize;
- CBlendableFloat m_fOuterBorderR;
- CBlendableFloat m_fOuterBorderG;
- CBlendableFloat m_fOuterBorderB;
- CBlendableFloat m_fOuterBorderA;
- CBlendableFloat m_fInnerBorderSize;
- CBlendableFloat m_fInnerBorderR;
- CBlendableFloat m_fInnerBorderG;
- CBlendableFloat m_fInnerBorderB;
- CBlendableFloat m_fInnerBorderA;
- CBlendableFloat m_fMvX;
- CBlendableFloat m_fMvY;
- CBlendableFloat m_fMvDX;
- CBlendableFloat m_fMvDY;
- CBlendableFloat m_fMvL;
- CBlendableFloat m_fMvR;
- CBlendableFloat m_fMvG;
- CBlendableFloat m_fMvB;
- CBlendableFloat m_fMvA;
- CBlendableFloat m_fBlur1Min;
- CBlendableFloat m_fBlur2Min;
- CBlendableFloat m_fBlur3Min;
- CBlendableFloat m_fBlur1Max;
- CBlendableFloat m_fBlur2Max;
- CBlendableFloat m_fBlur3Max;
- CBlendableFloat m_fBlur1EdgeDarken;
- CShape m_shape[MAX_CUSTOM_SHAPES];
- CWave m_wave[MAX_CUSTOM_WAVES];
-
-
- void RandomizePresetVars();
- D3DXVECTOR4 m_rand_preset;
- D3DXVECTOR3 m_xlate[20];
- D3DXVECTOR3 m_rot_base[20];
- D3DXVECTOR3 m_rot_speed[20];
-
-
-
-
-
-
- NSEEL_CODEHANDLE m_pf_codehandle;
- NSEEL_CODEHANDLE m_pp_codehandle;
- char m_szPerFrameInit[MAX_BIGSTRING_LEN];
- char m_szPerFrameExpr[MAX_BIGSTRING_LEN];
- char m_szPerPixelExpr[MAX_BIGSTRING_LEN];
- char m_szWarpShadersText[MAX_BIGSTRING_LEN];
- char m_szCompShadersText[MAX_BIGSTRING_LEN];
- void FreeVarsAndCode(bool bFree = true);
- void RegisterBuiltInVariables(int flags);
- void StripLinefeedCharsAndComments(char *src, char *dest);
- bool m_bBlending;
- float m_fBlendStartTime;
- float m_fBlendDuration;
- float m_fBlendProgress;
-
- NSEEL_VMCTX m_pf_eel;
- double *var_pf_zoom, *var_pf_zoomexp, *var_pf_rot, *var_pf_warp, *var_pf_cx, *var_pf_cy, *var_pf_dx, *var_pf_dy, *var_pf_sx, *var_pf_sy;
- double *var_pf_time, *var_pf_fps;
- double *var_pf_bass, *var_pf_mid, *var_pf_treb, *var_pf_bass_att, *var_pf_mid_att, *var_pf_treb_att;
- double *var_pf_wave_a, *var_pf_wave_r, *var_pf_wave_g, *var_pf_wave_b, *var_pf_wave_x, *var_pf_wave_y, *var_pf_wave_mystery, *var_pf_wave_mode;
- double *var_pf_decay;
- double *var_pf_frame;
-
- double* var_pf_q[NUM_Q_VAR];
- double *var_pf_progress;
- double *var_pf_ob_size, *var_pf_ob_r, *var_pf_ob_g, *var_pf_ob_b, *var_pf_ob_a;
- double *var_pf_ib_size, *var_pf_ib_r, *var_pf_ib_g, *var_pf_ib_b, *var_pf_ib_a;
- double *var_pf_mv_x;
- double *var_pf_mv_y;
- double *var_pf_mv_dx;
- double *var_pf_mv_dy;
- double *var_pf_mv_l;
- double *var_pf_mv_r;
- double *var_pf_mv_g;
- double *var_pf_mv_b;
- double *var_pf_mv_a;
- double *var_pf_monitor;
- double *var_pf_echo_zoom, *var_pf_echo_alpha, *var_pf_echo_orient;
-
- double *var_pf_wave_usedots, *var_pf_wave_thick, *var_pf_wave_additive, *var_pf_wave_brighten;
- double *var_pf_darken_center, *var_pf_gamma, *var_pf_wrap;
- double *var_pf_invert, *var_pf_brighten, *var_pf_darken, *var_pf_solarize;
- double *var_pf_meshx, *var_pf_meshy;
- double *var_pf_pixelsx, *var_pf_pixelsy;
- double *var_pf_aspectx, *var_pf_aspecty;
- double *var_pf_blur1min;
- double *var_pf_blur2min;
- double *var_pf_blur3min;
- double *var_pf_blur1max;
- double *var_pf_blur2max;
- double *var_pf_blur3max;
- double *var_pf_blur1_edge_darken;
-
-
- NSEEL_VMCTX m_pv_eel;
- double *var_pv_zoom, *var_pv_zoomexp, *var_pv_rot, *var_pv_warp, *var_pv_cx, *var_pv_cy, *var_pv_dx, *var_pv_dy, *var_pv_sx, *var_pv_sy;
- double *var_pv_time, *var_pv_fps;
- double *var_pv_bass, *var_pv_mid, *var_pv_treb, *var_pv_bass_att, *var_pv_mid_att, *var_pv_treb_att;
- double *var_pv_x, *var_pv_y, *var_pv_rad, *var_pv_ang;
- double *var_pv_frame;
-
- double* var_pv_q[NUM_Q_VAR];
- double *var_pv_progress;
- double *var_pv_meshx, *var_pv_meshy;
- double *var_pv_pixelsx, *var_pv_pixelsy;
- double *var_pv_aspectx, *var_pv_aspecty;
- double q_values_after_init_code[NUM_Q_VAR];
- double monitor_after_init_code;
- float GetPresetStartTime() { return m_fPresetStartTime; }
- float m_fPresetStartTime;
- };
- #endif
|