#pragma once #include "EnumDirection.h" #include "GlobalDefine.h" #include "SmartPtr.h" #include "ObjBase.h" //对象排序管理 class CObjSortMgr { public: CObjSortMgr(void); ~CObjSortMgr(void); void SortObjByDir(DIRECTION dir); private: void SeparateSelObj(vector> &ObjVec,vector> &SelObjVec,vector> &NotSelObjVec); void SortObjVec(vector> &SelObjVec); void PushToObjVec(vector> &ObjVec1,vector> &ObjVec2); void CreatBucketVec(vector>> &BucketVec,vector> &ObjVec); void CreatBucketBaseCoordVec(vector &BucketBaseCoordVec,vector> &ObjVec); bool IsHorizontalScan(); bool IsForwardDirection(); void CollectBucketObj(vector>> &BucketVec,vector> &ObjVec); void BucketToObjVec(vector>> &BucketVec,vector> &ObjVec); void BucketSort(vector>> &BucketVec); private: DIRECTION m_ScanDir;//扫描的方向 };