Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019 #ifndef __CS_IMESH_SPRITE2D_H__
00020 #define __CS_IMESH_SPRITE2D_H__
00021
00026 #include "iutil/array.h"
00027 #include "csutil/scf.h"
00028 #include "csutil/dirtyaccessarray.h"
00029 #include "csutil/cscolor.h"
00030 #include "csgeom/vector2.h"
00031
00035 struct iMaterialWrapper;
00036
00038 struct csSprite2DVertex
00039 {
00040 csVector2 pos;
00041 csColor color_init;
00042 csColor color;
00043 float u, v;
00044 bool operator== (const csSprite2DVertex& other)
00045 {
00046 return (pos == other.pos) && (color_init == other.color_init)
00047 && (color == other.color) && (u == other.u) && (v == other.v);
00048 }
00049 };
00050
00051 struct iColoredVertices : public iArrayChangeAll<csSprite2DVertex>
00052 {
00053 SCF_IARRAYCHANGEALL_INTERFACE(iColoredVertices);
00054 };
00055
00060 struct iSprite2DUVAnimationFrame : public virtual iBase
00061 {
00062 SCF_INTERFACE (iSprite2DUVAnimationFrame, 1, 0, 0);
00063
00067 virtual void SetName (const char *name) = 0;
00068
00072 virtual const char *GetName () const = 0;
00073
00077 virtual csVector2 &GetUVCoo (int idx) = 0;
00078
00082 virtual const csVector2 *GetUVCoo () = 0;
00083
00087 virtual int GetUVCount () = 0;
00088
00092 virtual void SetUV (int idx, float u, float v) = 0;
00093
00097 virtual void SetFrameData (const char *name, int duration, int num,
00098 float *uv) = 0;
00099
00103 virtual void RemoveUV (int idx) = 0;
00104
00108 virtual int GetDuration () = 0;
00109
00113 virtual void SetDuration (int duration) = 0;
00114 };
00115
00122 struct iSprite2DUVAnimation : public virtual iBase
00123 {
00124 SCF_INTERFACE (iSprite2DUVAnimation, 1, 0, 0);
00125
00129 virtual void SetName (const char *name) = 0;
00130
00134 virtual const char *GetName () const = 0;
00135
00139 virtual int GetFrameCount () = 0;
00140
00145 virtual iSprite2DUVAnimationFrame *GetFrame (int idx) = 0;
00146
00150 virtual iSprite2DUVAnimationFrame *GetFrame (const char *name) = 0;
00151
00156 virtual iSprite2DUVAnimationFrame *CreateFrame (int idx) = 0;
00157
00162 virtual void MoveFrame (int frame, int idx) = 0;
00163
00167 virtual void RemoveFrame (int idx) = 0;
00168
00169 };
00170
00174 struct iSprite2DFactoryState : public virtual iBase
00175 {
00176 SCF_INTERFACE (iSprite2DFactoryState, 1, 0, 0);
00177
00179 virtual iColoredVertices* GetVertices () = 0;
00180
00187 virtual void SetLighting (bool l) = 0;
00188
00190 virtual bool HasLighting () const = 0;
00191
00195 virtual int GetUVAnimationCount () const = 0;
00196
00200 virtual iSprite2DUVAnimation *CreateUVAnimation () = 0;
00201
00205 virtual void RemoveUVAnimation (iSprite2DUVAnimation *anim) = 0;
00206
00210 virtual iSprite2DUVAnimation *GetUVAnimation (const char *name) const = 0;
00211
00215 virtual iSprite2DUVAnimation *GetUVAnimation (int idx) const = 0;
00216
00217 };
00218
00223 struct iSprite2DState : public iSprite2DFactoryState
00224 {
00225 SCF_INTERFACE (iSprite2DState, 1, 1, 1);
00226
00232 virtual iColoredVertices* GetVertices () = 0;
00233
00239 virtual void CreateRegularVertices (int n, bool setuv) = 0;
00240
00252 virtual void SetUVAnimation (const char *name, int style, bool loop) = 0;
00253
00257 virtual iSprite2DUVAnimation *GetUVAnimation (const char *name) const = 0;
00258
00262 virtual iSprite2DUVAnimation *GetUVAnimation (int idx) const = 0;
00263
00267 virtual iSprite2DUVAnimation *GetUVAnimation (int idx, int &style,
00268 bool &loop) const = 0;
00269
00274 virtual void StopUVAnimation (int idx) = 0;
00275
00287 virtual void PlayUVAnimation (int idx, int style, bool loop) = 0;
00288
00295 virtual void EnsureVertexCopy () = 0;
00296 };
00297
00300 #endif // __CS_IMESH_SPRITE2D_H__
00301