本文整理汇总了C++中WaypointList::push_back方法的典型用法代码示例。如果您正苦于以下问题:C++ WaypointList::push_back方法的具体用法?C++ WaypointList::push_back怎么用?C++ WaypointList::push_back使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类WaypointList
的用法示例。
在下文中一共展示了WaypointList::push_back方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: visibleWaypoints
WaypointList WaypointManager::visibleWaypoints(D3DXVECTOR3 target)
{
WaypointList wps;
for(int i=0; i<waypoints.size(); i++)
{
Ray r(waypoints[i]->_position,target -waypoints[i]->_position);
if(!kdTree.doesRayIntersect(r))
wps.push_back(i);
}
return wps;
}
示例2:
static void
FillLastUsedList(WaypointList &list,
const WaypointIDList &last_used_ids,
const Waypoints &waypoints)
{
for (auto it = last_used_ids.rbegin(); it != last_used_ids.rend(); it++) {
const Waypoint* waypoint = waypoints.LookupId(*it);
if (waypoint == NULL)
continue;
list.push_back(WaypointListItem(*waypoint));
}
}
示例3: Visit
void Visit(const Waypoint &waypoint) {
if (CompareType(waypoint, type_index) &&
(filter_data.distance_index == 0 || CompareName(waypoint, name)) &&
CompareDirection(waypoint, direction_index, location, heading))
waypoint_list.push_back(WaypointListItem(waypoint));
}
示例4: CatmullRom
WaypointList*
PathFinder::SmoothWaypointList( WaypointList* pWaypointList )
{
if (!pWaypointList)
return NULL;
if( pWaypointList->size() > 2 )
{
WORLD_POSITION newPoint0( 0.0f, 0.0f, 0.0f );
WORLD_POSITION newPoint1( 0.0f, 0.0f, 0.0f );
WaypointList oldList;
for( WaypointList::iterator i = pWaypointList->begin(); i != pWaypointList->end(); i++ )
{
oldList.push_back( *i );
}
pWaypointList->clear();
WORLD_POSITION p0, p1, p2, p3;
//First
WaypointList::iterator iter = oldList.begin();
p0 = p1 = p2 = *iter;
iter++;
p3 = *iter;
iter++;
const int divisions = 5;
while( iter != oldList.end() )
{
p0 = p1;
p1 = p2;
p2 = p3;
p3 = *iter;
for( int count=1; count<divisions+1; count++)
{
vec3 newPoint = CatmullRom( p0, p1, p2, p3, (float)count/(float)divisions );
if( pWaypointList->size() > 1 )
{
vec3 lastDir = newPoint1 - newPoint0;
vec3 curDir = newPoint - newPoint1;
lastDir.Normalize();
curDir.Normalize();
float dot = lastDir.Dot( curDir );
if( dot > 0.99f )
{
pWaypointList->pop_back();
}
}
newPoint0 = newPoint1;
newPoint1 = newPoint;
pWaypointList->push_back( newPoint );
}
iter++;
}
//Last
p0 = p1;
p1 = p2;
p2 = p3;
p3 = p3; //Redundant, but put here to make it clear what is intended
for( int count=1; count<divisions+1; count++)
{
WORLD_POSITION newPoint = CatmullRom( p0, p1, p2, p3, (float)count/(float)divisions );
if( pWaypointList->size() > 1 )
{
vec3 lastDir = newPoint1 - newPoint0;
vec3 curDir = newPoint - newPoint1;
lastDir.Normalize();
curDir.Normalize();
float dot = lastDir.Dot( curDir );
if( dot > 0.99f )
{
pWaypointList->pop_back();
}
}
newPoint0 = newPoint1;
newPoint1 = newPoint;
pWaypointList->push_back( newPoint );
}
}
return pWaypointList;
}