プライオリティ描画管理

以前まではスプライト描画用の構造体を作って、その構造体を保存しておき
ソートをかけて描画するという手法をとっていたわけだが、結構メモリを消費するのと
数を増やしづらいというのがあったので、新しい手法として関数単位のソートを書くようにしてみた。

class DrawList
{
public :
	typedef void (*DrawFunc)(void* arg1, void* arg2);

	DrawList(int n) : data_(n){}
	void Clear() {
		for (unsigned int i = 0; i < data_.size(); ++i) {
			data_[i].clear();
		}
	}
	void Set(DrawFunc func, void* arg1, void* arg2, int prt) {
		Data data;
		data.func = func;
		data.arg1 = arg1;
		data.arg2 = arg2;
		data_[prt].push_back(data);
	}
	void Draw() {
		for (unsigned int i = 0; i < data_.size(); ++i) {
			std::list<Data>::iterator it = data_[i].begin();
			for (; it != data_[i].end(); ++it) {
				(it->func)(it->arg1, it->arg2);
			}
		}
	}

private :
	struct Data {
		DrawFunc func;
		void* arg1;
		void* arg2;
	};
	std::vector<std::list<Data> > data_;
};