/**
 * @class kModeStateComponent
 * @brief Handles an objects state by using defined mode tables created by calling ::DefineMode and then assigning with kModeStateComponent::AssignModeTable
 */
class kModeStateComponent
{
public:

	void ForgetAnimState();
	
	/**
	 * @brief Previous ModeID
	 */
	int32& PrevMode();
	
	/**
	 * @brief Current ModeID
	 */
	const int32 Mode();
	
	/**
	 * @brief Time this mode has been ticking since the current mode was setup. (15.0f = 1 second)
	 */
	float& ModeTime();
	
	/**
	 * @brief Set the ModeID for the current Mode Table
	 * @param restart If true will restart the mode and call the setup callback for the mode
	 */
	bool SetMode(const int modeID, const bool restart = false);
	
	/**
	 * @brief Assign a Mode Table that was created with ::DefineMode
	 */
	void AssignModeTable(const kStr&in modeTableName);
};
