• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

C++ TileVector类代码示例

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

本文整理汇总了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;未经允许,请勿转载。


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
C++ TiledLayerComposer类代码示例发布时间:2022-05-31
下一篇:
C++ TileSource类代码示例发布时间:2022-05-31
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap