1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78
|
/*!
@file
@author Albert Semenov
@date 06/2008
*/
#ifndef MYGUI_LAYER_NODE_ANIMATION_H_
#define MYGUI_LAYER_NODE_ANIMATION_H_
#include "MyGUI_Prerequest.h"
#include "MyGUI_IVertexBuffer.h"
#include "MyGUI_ITexture.h"
#include "MyGUI_RenderTargetInfo.h"
#include "MyGUI_ISerializable.h"
#include "MyGUI_VertexData.h"
namespace MyGUI
{
struct QuadData
{
enum Enum
{
CornerLT = 0,
CornerRT = 1,
CornerLB = 2,
CornerRB = 3,
VertexCount = 4
};
void set(float _l, float _t, float _r, float _b, float _z, float _u1, float _v1, float _u2, float _v2, uint32 _colour)
{
vertex[CornerLT].set(_l, _t, _z, _u1, _v1, _colour);
vertex[CornerRT].set(_r, _t, _z, _u2, _v1, _colour);
vertex[CornerLB].set(_l, _b, _z, _u1, _v2, _colour);
vertex[CornerRB].set(_r, _b, _z, _u2, _v2, _colour);
}
Vertex vertex[VertexCount];
};
typedef std::vector<QuadData> VectorQuadData;
class ILayerNode;
class /*MYGUI_EXPORT */LayerNodeAnimation :
public ISerializable
{
MYGUI_RTTI_DERIVED( LayerNodeAnimation )
public:
LayerNodeAnimation() { }
virtual ~LayerNodeAnimation() { }
virtual void attach(ILayerNode* _node) = 0;
//
virtual void create() = 0;
//
virtual void destroy() = 0;
//
virtual size_t animate(
bool _update,
size_t _quad_count,
VectorQuadData& _data,
float _time,
IVertexBuffer* _buffer,
ITexture* _texture,
const RenderTargetInfo& _info,
const IntCoord& _coord,
bool& _isAnimate) = 0;
};
} // namespace MyGUI
#endif // MYGUI_LAYER_NODE_ANIMATION_H_
|