/**
* Path System
* @version: 01-29-2005
* @author Joseph 'Pcjoe' Florencio
*/
#ifndef FXPATHSYSTEM_H
#define FXPATHSYSTEM_H

#include "fxpathmanager.h"

class CPathSystem
{
public:
	// Constructor
	CPathSystem();
	CPathSystem(CFXEvent *pEvent);

	// Get Next ID
	int getNextID( void );

	// Add Manager
	CPathManager *addManager( void );
	CPathManager *addManager( int iID );
	CPathManager *addManager( TiXmlElement *pElement );

	// Get Manager by ID
	CPathManager *getManager( int id );

	// Remove Manager
	void removeManager( int id );

	// Render Paths
	void RenderPaths( void );

	// Write XML
	virtual TiXmlElement *writeXML( void );

	// read XML
	virtual void readXML( TiXmlElement *pElement );

	// Accessors
	// FX Event
	void setFXEvent( CFXEvent *pEvent ) { m_pEvent = pEvent; }
	CFXEvent *getFXEvent( void ) { return m_pEvent; }

	// Paths
	std::list<CPathManager> *getPaths( void ) { return &m_Paths; }
private:
	std::list<CPathManager>	m_Paths;
	CFXEvent	*m_pEvent;
};

#endif