本文整理汇总了C++中TileVector类的典型用法代码示例。如果您正苦于以下问题:C++ TileVector类的具体用法?C++ TileVector怎么用?C++ TileVector使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了TileVector类的7个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。
示例1: refresh
void
OSGTerrainEngineNode::addElevationLayer( ElevationLayer* layer )
{
if ( !layer )
return;
layer->addCallback( _elevationCallback.get() );
if (!_isStreaming)
{
refresh();
}
else
{
TileVector tiles;
_terrain->getTiles( tiles );
OE_DEBUG << LC << "Found " << tiles.size() << std::endl;
for (TileVector::iterator itr = tiles.begin(); itr != tiles.end(); ++itr)
{
updateElevation( itr->get() );
}
}
}
开发者ID:JohnDr,项目名称:osgearth,代码行数:26,代码来源:OSGTerrainEngineNode.cpp
示例2: lock
void
TerrainNode::getTiles( TileVector& out )
{
Threading::ScopedReadLock lock( _tilesMutex );
out.clear();
out.reserve( _tiles.size() );
for( TileTable::const_iterator i = _tiles.begin(); i != _tiles.end(); ++i )
out.push_back( i->second.get() );
}
开发者ID:2php,项目名称:osgearth,代码行数:9,代码来源:TerrainNode.cpp
示例3: updateElevation
void
OSGTerrainEngineNode::removeElevationLayer( ElevationLayer* layerRemoved )
{
TileVector tiles;
_terrain->getTiles( tiles );
for (TileVector::iterator itr = tiles.begin(); itr != tiles.end(); ++itr)
{
updateElevation( itr->get() );
}
}
开发者ID:spencerg,项目名称:osgearth,代码行数:11,代码来源:OSGTerrainEngineNode.cpp
示例4: updateTextureCombining
void
OSGTerrainEngineNode::moveImageLayer( unsigned int oldIndex, unsigned int newIndex )
{
// take a thread-safe copy of the tile table
TileVector tiles;
_terrain->getTiles( tiles );
for (TileVector::iterator itr = tiles.begin(); itr != tiles.end(); ++itr)
{
Tile* tile = itr->get();
tile->applyImmediateTileUpdate( TileUpdate::MOVE_IMAGE_LAYER );
}
updateTextureCombining();
}
开发者ID:JohnDr,项目名称:osgearth,代码行数:15,代码来源:OSGTerrainEngineNode.cpp
示例5: updateTextureCombining
void
OSGTerrainEngineNode::removeImageLayer( ImageLayer* layerRemoved )
{
// make a thread-safe copy of the tile table
TileVector tiles;
_terrain->getTiles( tiles );
for (TileVector::iterator itr = tiles.begin(); itr != tiles.end(); ++itr)
{
Tile* tile = itr->get();
// critical section
tile->removeCustomColorLayer( layerRemoved->getUID() );
}
updateTextureCombining();
}
开发者ID:spencerg,项目名称:osgearth,代码行数:17,代码来源:OSGTerrainEngineNode.cpp
示例6: refresh
void
QuadTreeTerrainEngineNode::moveElevationLayer( unsigned int oldIndex, unsigned int newIndex )
{
if (!_isStreaming)
{
refresh();
}
else
{
TileVector tiles;
_terrain->getTiles( tiles );
OE_DEBUG << "Found " << tiles.size() << std::endl;
for (TileVector::iterator itr = tiles.begin(); itr != tiles.end(); ++itr)
{
updateElevation( itr->get() );
}
}
}
开发者ID:ender35,项目名称:osgearth,代码行数:20,代码来源:QuadTreeEngineNode.cpp
示例7: avoid
inline
void SchoolFish::applyAvoidance(Vector &accumulator)
{
// only avoid the player if not in the background
if (this->layer < LR_ELEMENTS10)
{
if ((dsq->game->avatar->position - this->position).isLength2DIn(128))
{
avoid(accumulator, dsq->game->avatar->position);
}
}
//return;
if (avoidTime>0) return;
VectorSet closestObs;
VectorSet obsPos;
//Vector closestObs;
int range = 10;
int radius = range*TILE_SIZE;
Vector p;
TileVector t0(position);
TileVector t;
for (int x = -range; x <= range; x++)
{
for (int y = -range; y <= range; y++)
{
TileVector t = t0;
t.x+=x;
t.y+=y;
if (dsq->game->isObstructed(t))
{
p = t.worldVector();
closestObs.push_back(this->position - p);
obsPos.push_back(p);
/*
std::ostringstream os;
os << "tile(" << t.x << ", " << t.y << ") p(" << p.x << ", " << p.y << ")";
debugLog(os.str());
*/
/*
int len = (p - this->position).getSquaredLength2D();
if (len < sqr(radius))
{
closestObs.push_back(this->position - p);
obsPos.push_back(p);
}
*/
}
}
}
if (!closestObs.empty())
{
//avoid (accumulator, this->averageVectors(closestObs));
//accumulator = Vector(0,0,0);
Vector change;
change = averageVectors(closestObs);
//change |= 200;
float dist = (this->position - averageVectors(obsPos)).getLength2D();
float ratio = dist / radius;
if (ratio < minUrgency) ratio = minUrgency;
else if (ratio > maxUrgency) ratio = maxUrgency;
change.setLength2D(ratio + lastVel.getLength2D()/10);
accumulator += change;
}
if (this->range!=0)
{
if (!((position - startPos).isLength2DIn(this->range)))
{
Vector diff = startPos - position;
diff.setLength2D(lastVel.getLength2D());
accumulator += diff;
}
}
}
开发者ID:fucyomo,项目名称:Aquaria,代码行数:85,代码来源:SchoolFish.cpp
注:本文中的TileVector类示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论