// -*- C++ -*-
/*
* Simple MultimEdia LiTerator(SMELT)
* by Chris Xiong 2015
* Entity header
*
* WARNING: This library is in development and interfaces would be very
* unstable.
*
*/
#ifndef SMENTITY_H
#define SMENTITY_H
#include "smelt.hpp"
class smEntity2D
{
private:
smEntity2D();
static SMELT *sm;
smQuad quad;
float tx,ty,w,h,texw,texh;
float ctrx,ctry;
public:
smEntity2D(SMTEX tex,float _x,float _y,float _w,float _h);
smEntity2D(SMTEX tex,smTexRect rect);
smEntity2D(const smEntity2D ©);
~smEntity2D(){sm->smRelease();}
void render(float x,float y,float rot=0,float wsc=1.,float hsc=0.);
void setTexture(SMTEX tex);
void setTextureRect4f(float _x,float _y,float _w,float _h);
void setTextureRectv(smTexRect rect);
void setColor(DWORD col,int v=-1);
void setZ(float z,int v=-1);
void setBlend(int blend);
void setCentre(float x,float y);
float _w(){return w;}
float _h(){return h;}
};
class smEntity3D
{
private:
smEntity3D();
static SMELT *sm;
smQuad quad;
float tx,ty,w,h,texw,texh;
float ctrx,ctry;
public:
smEntity3D(SMTEX tex,float _x,float _y,float _w,float _h);
smEntity3D(SMTEX tex,smTexRect rect);
smEntity3D(const smEntity3D ©);
~smEntity3D(){sm->smRelease();}
void render9f(float x,float y,float z,float ra=.0,float rx=.0,float ry=.0,float rz=.0,float wsc=1.,float hsc=0.);
void renderfv(float* pos,float* rot,float* scale);
void setTexture(SMTEX tex);
void setTextureRect4f(float _x,float _y,float _w,float _h);
void setTextureRectv(smTexRect rect);
void setColor(DWORD col,int v=-1);
void setBlend(int blend);
void setCentre(float x,float y);
float _w(){return w;}
float _h(){return h;}
};
#endif