3,880
社区成员




//TrackLineDataStructure接收到的数据结构体
void MyClass::ReceivedTrackData(TrackLineDataStructure* TrackLine)
{
//批次号
this->mBatch=TrackLine->nBatch;
if (mBatch>0)
{
bool Isexit=false;
Isexit=mAircraftList.contains(mBatch);
if(!Isexit)
{
//把批次号加入到集合中
this->mAircraftList.push_back(this->mBatch);
//AircraftMgr为飞机管理器继承自 CThread类,再此类中可以更新飞机位置,计算姿态,绘制轨迹线
//两个批次的飞机公用这些
mAircraftMgr=new AircraftMgr(this->mBatch, mpUCtrl->getUControl());
//mAircraft_Map为存储不同批次的对象的列表
mAircraft_Map.insert(hash_map<ushort,AircraftMgr*>::value_type(this->mBatch,mAircraftMgr));
}
hash_map<ushort,AircraftMgr*>::iterator it;
//从列表中查找接收新接收到的批次号
it=mAircraft_Map.find(mBatch);
if (it==mAircraft_Map.end()/*this->mBatch==3040*/)
{
return;
}
else
{
AircraftMgr* temAir=NULL;
temAir=dynamic_cast<AircraftMgr*>(it->second);
if (temAir!=NULL)
{
temAir->setTraBatch(mBatch);
//用来进行插值
temAir->setTraDataList(traPntToList(TrackLine));
if (!(temAir->isRunning()))
{
temAir->start();
}
}
}
}
}