/*********************************************************************//**
*	\brief System ulomku.
*	System pro vypocet pohybu, animaci a vykreslovani ulomku. Kazdy ulomek
*	je model, ktery ma nejakou pcoatecni rychlost a jakmile do neceho narazi,
*	tak se zastavi a postupne zmizi.
*
*	\author Michal Jirous
*	\date 09.04.2009
*	\file gibs_system.h
**********************************************************************/

#ifndef __GIBS_SYSTEM_H__
#define __GIBS_SYSTEM_H__

#include <list>

#include "modelslib.h"
#include "algebraic.h"
#include <SDL/SDL.h>
#include <SDL/SDL_opengl.h>
struct Gib_elem
{
	float alpha;
	Uint32 m_uiFadeStartTime;
	Point m_Store_Position;
	Point m_Position;
	Color m_Color;
	Vector m_Velocity;
	Vector m_Store_StartVelocity;
	float m_fAngleZ;
	std::string m_sModelName;
	modelLib::ModelElement *m_pModel;
	void restart();
	Gib_elem();
	void draw();
	bool m_bOnGround;
	void create( modelLib::ModelElement *pModel, Point position, Vector startVelocity );
	~Gib_elem();
};


const float GIB_FADE_TIME = 4000;//	ms
const float MINIMUM_UPDATE_TIME = 0.01f;	//s

class GibsSystem
{
	std::list<Gib_elem*> m_Gibs;
	float m_fTimeCount;
	void processGibs();
public:
	GibsSystem();
	void render( float elapset_seconds );
	void restart();
	void addGib( Gib_elem *gib );
};










extern GibsSystem gibsSystem;

#endif
