aboutsummaryrefslogtreecommitdiff
path: root/visualization/extrasmeltutils.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'visualization/extrasmeltutils.hpp')
-rw-r--r--visualization/extrasmeltutils.hpp234
1 files changed, 126 insertions, 108 deletions
diff --git a/visualization/extrasmeltutils.hpp b/visualization/extrasmeltutils.hpp
index 3cea3fc..ca36415 100644
--- a/visualization/extrasmeltutils.hpp
+++ b/visualization/extrasmeltutils.hpp
@@ -13,134 +13,152 @@
#define EPSF 1e-6f
class smEntity3D
{
- friend class smEntity3DBuffer;
- private:
- std::vector<smVertex> vertices;
- std::vector<WORD> indices;
- public:
- smEntity3D(){vertices.clear();indices.clear();}
- void addVertices(size_t n,...);
- void addIndices(size_t n,...);
- smVertex vertex(size_t idx)const;
- WORD index(size_t idx)const;
- void setVertex(size_t idx,smVertex v);
- void setIndex(size_t idx,WORD i);
- static smEntity3D cube(smvec3d tl,smvec3d br,DWORD color,int faces=63);
+ friend class smEntity3DBuffer;
+private:
+ std::vector<smVertex> vertices;
+ std::vector<WORD> indices;
+public:
+ smEntity3D()
+ {
+ vertices.clear();
+ indices.clear();
+ }
+ void addVertices(size_t n, ...);
+ void addIndices(size_t n, ...);
+ smVertex vertex(size_t idx)const;
+ WORD index(size_t idx)const;
+ void setVertex(size_t idx, smVertex v);
+ void setIndex(size_t idx, WORD i);
+ static smEntity3D cube(smvec3d tl, smvec3d br, DWORD color, int faces = 63);
};
class smEntity3DBuffer
{
- private:
- std::vector<smVertex> vertices;
- std::vector<WORD> indices;
- static SMELT* sm;
- public:
- smEntity3DBuffer();
- ~smEntity3DBuffer(){sm->smRelease();}
- void addTransformedEntity(smEntity3D *entity,smMatrix t,smvec3d p);
- void drawBatch();
+private:
+ std::vector<smVertex> vertices;
+ std::vector<WORD> indices;
+ static SMELT *sm;
+public:
+ smEntity3DBuffer();
+ ~smEntity3DBuffer()
+ {
+ sm->smRelease();
+ }
+ void addTransformedEntity(smEntity3D *entity, smMatrix t, smvec3d p);
+ void drawBatch();
};
class smColor
{
- private:
- float r,g,b,h,s,v,a;
- void update_rgb();
- void update_hsv();
- public:
- smColor();
- void clamp(bool hsv);
- float alpha()const;
- float red()const;
- float green()const;
- float blue()const;
- float hue()const;
- float saturation()const;
- float hslSaturation()const;
- float value()const;
- float lightness()const;
- void setAlpha(float alpha);
- void setRed(float red);
- void setGreen(float green);
- void setBlue(float blue);
- void setHue(float hue);
- void setSaturation(float saturation);
- void setHSLSaturation(float saturation);
- void setValue(float value);
- void setLightness(float lightness);
- smColor lighter(int factor);
- smColor darker(int factor);
- uint32_t toHWColor();
- static smColor fromHWColor(uint32_t color);
+private:
+ float r, g, b, h, s, v, a;
+ void update_rgb();
+ void update_hsv();
+public:
+ smColor();
+ void clamp(bool hsv);
+ float alpha()const;
+ float red()const;
+ float green()const;
+ float blue()const;
+ float hue()const;
+ float saturation()const;
+ float hslSaturation()const;
+ float value()const;
+ float lightness()const;
+ void setAlpha(float alpha);
+ void setRed(float red);
+ void setGreen(float green);
+ void setBlue(float blue);
+ void setHue(float hue);
+ void setSaturation(float saturation);
+ void setHSLSaturation(float saturation);
+ void setValue(float value);
+ void setLightness(float lightness);
+ smColor lighter(int factor);
+ smColor darker(int factor);
+ uint32_t toHWColor();
+ static smColor fromHWColor(uint32_t color);
};
class smPSEmissionPositionGenerator
{
- public:
- virtual smvec3d genPos(){return smvec3d(0,0,0);}
+public:
+ virtual smvec3d genPos()
+ {
+ return smvec3d(0, 0, 0);
+ }
};
-class smXLinePSGenerator:public smPSEmissionPositionGenerator
+class smXLinePSGenerator: public smPSEmissionPositionGenerator
{
- private:
- smRandomEngine re;
- double var;
- public:
- smXLinePSGenerator(double _var){re.setSeed(time(nullptr));var=_var;}
- smvec3d genPos(){return smvec3d(re.nextDouble(-var,var),0,0);}
+private:
+ smRandomEngine re;
+ double var;
+public:
+ smXLinePSGenerator(double _var)
+ {
+ re.setSeed(time(nullptr));
+ var = _var;
+ }
+ smvec3d genPos()
+ {
+ return smvec3d(re.nextDouble(-var, var), 0, 0);
+ }
};
class smParticleSystemInfo
{
- public:
- smvec3d vel,velvar,acc,accvar;
- smvec3d rotv,rotvvar,rota,rotavar;
- double lifespan,lifespanvar;
- int maxcount,emissioncount,ecvar;
- double emissiondelay,edvar;
- double initsize,initsizevar;
- double finalsize,finalsizevar;
- DWORD initcolor,initcolorvar;
- DWORD finalcolor,finalcolorvar;
- SMTEX texture;int blend;
+public:
+ smvec3d vel, velvar, acc, accvar;
+ smvec3d rotv, rotvvar, rota, rotavar;
+ double lifespan, lifespanvar;
+ int maxcount, emissioncount, ecvar;
+ double emissiondelay, edvar;
+ double initsize, initsizevar;
+ double finalsize, finalsizevar;
+ DWORD initcolor, initcolorvar;
+ DWORD finalcolor, finalcolorvar;
+ SMTEX texture;
+ int blend;
};
class smParticle
{
- friend class smParticleSystem;
- private:
- static SMELT* sm;
- smvec3d pos,rot,lookatpos;
- smvec3d vel,accel,rotv,rota;
- double lifespan,clifespan;
- double initsize,finalsize,size;
- DWORD color,initcolor,finalcolor;
- smQuad q;
- bool dead,lookat;
- public:
- smParticle();
- ~smParticle();
- void render();
- void update();
+ friend class smParticleSystem;
+private:
+ static SMELT *sm;
+ smvec3d pos, rot, lookatpos;
+ smvec3d vel, accel, rotv, rota;
+ double lifespan, clifespan;
+ double initsize, finalsize, size;
+ DWORD color, initcolor, finalcolor;
+ smQuad q;
+ bool dead, lookat;
+public:
+ smParticle();
+ ~smParticle();
+ void render();
+ void update();
};
class smParticleSystem
{
- private:
- static SMELT* sm;
- std::vector<smParticle*> particles;
- smParticleSystemInfo psinfo;
- smvec3d pos,lookatpos;
- smRandomEngine re;
- smPSEmissionPositionGenerator* posGenerator;
- bool active,lookat;
- double cemdelay,nemdelay;
- public:
- smParticleSystem();
- ~smParticleSystem();
- void setParticleSystemInfo(smParticleSystemInfo _psinfo);
- void setPos(smvec3d _pos);
- void setPSEmissionPosGen(smPSEmissionPositionGenerator* _gen);
- void setPSLookAt(smvec3d at);
- void unsetPSLookAt();
- void startPS();
- void stopPS();
- void updatePS();
- void renderPS();
+private:
+ static SMELT *sm;
+ std::vector<smParticle *> particles;
+ smParticleSystemInfo psinfo;
+ smvec3d pos, lookatpos;
+ smRandomEngine re;
+ smPSEmissionPositionGenerator *posGenerator;
+ bool active, lookat;
+ double cemdelay, nemdelay;
+public:
+ smParticleSystem();
+ ~smParticleSystem();
+ void setParticleSystemInfo(smParticleSystemInfo _psinfo);
+ void setPos(smvec3d _pos);
+ void setPSEmissionPosGen(smPSEmissionPositionGenerator *_gen);
+ void setPSLookAt(smvec3d at);
+ void unsetPSLookAt();
+ void startPS();
+ void stopPS();
+ void updatePS();
+ void renderPS();
};
-extern smVertex makeVertex(float x,float y,float z,DWORD color,float tx,float ty);
+extern smVertex makeVertex(float x, float y, float z, DWORD color, float tx, float ty);
#endif // EXTRASMELTUTILS_H