当前位置: 首页>>代码示例>>C++>>正文


C++ LIST::GetFreeBlockList方法代码示例

本文整理汇总了C++中LIST::GetFreeBlockList方法的典型用法代码示例。如果您正苦于以下问题:C++ LIST::GetFreeBlockList方法的具体用法?C++ LIST::GetFreeBlockList怎么用?C++ LIST::GetFreeBlockList使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在LIST的用法示例。


在下文中一共展示了LIST::GetFreeBlockList方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。

示例1: openCloseBoundaryList

	/*!
	\brief 递归逐维分组碰撞算法

	当分组到达最小组数量的时候,将最小组作为参数调用
	SBC::SimpleColl
	\param group 参与碰撞检测的BOX组
	\param fData 帧数据指针
	\param minGroupSize 最小分组
	\param freeBlockList 空闲块链表
	\param axis1 当前检测的坐标轴
	\param axis2 下个递归检测的坐标轴
	*/
	void 
		RDCColl(LIST<BOX*> &group, const FRAMEDATA *fData, size_t minGroupSize, BUFFER *freeBlockList, AXIS axis1, AXIS axis2)
	{
		if(axis1 == AXIS_INVALID || group.SizeIfLessThan(minGroupSize))
		{
			SimpleColl(group, fData);
		}
		else
		{
			LIST<OPENCLOSEBOUNDARY> openCloseBoundaryList(&freeBlockList->m_collInfoBuffer);
			_FindOpenCloseBoundaryList(axis1, 
				group, openCloseBoundaryList);

			LIST<BOX*> subGroup(group.GetFreeBlockList());
			unsigned int count = 0;
			AXIS newAxis1 = axis2;
			AXIS newAxis2 = AXIS_INVALID;
			bool groupSubdivided = false;
			OPENCLOSEBOUNDARY *thisBoundaryPtr;
			for(LIST<OPENCLOSEBOUNDARY>::NOTE 
				*thisNote = openCloseBoundaryList.QSort();
				thisNote; thisNote = thisNote->GetNext())
			{
				thisBoundaryPtr = &thisNote->Get();
				if(thisBoundaryPtr->type == TYPE_OPEN)
				{
					++count;
					subGroup.Create(thisBoundaryPtr->pBox);
				}
				else
				{
					--count;
					if(count == 0)
					{
						if(thisNote != openCloseBoundaryList.GetLast())
						{
							groupSubdivided = true;
						}
						if(groupSubdivided)
						{
							if(newAxis1 == AXIS_X)
							{
								newAxis1 = AXIS_Y;
								newAxis2 = AXIS_X;
							}
							if(newAxis1 == AXIS_Y)
							{
								newAxis1 = AXIS_X;
								newAxis2 = AXIS_Y;
							}
						}
						RDCColl(subGroup,
							fData,
							minGroupSize,
							freeBlockList,
							newAxis1, 
							newAxis2);
						subGroup.Clear();
					}
				}
			} // for loop - end
		} // if - end
	} // RDCColl - end
开发者ID:Sumxx,项目名称:XPrintUI,代码行数:75,代码来源:SBCCollision.cpp


注:本文中的LIST::GetFreeBlockList方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。