コード例 #1
0
 void defineTerrain( long x, long y, bool flat = false )
 {
   // if a file is available, use it
   // if not, generate file from import
   // Usually in a real project you'll know whether the compact terrain data is
   // available or not; I'm doing it this way to save distribution size
   if( flat )
   {
     mTerrainGroup->defineTerrain( x, y, 0.0f );
   }
   else
   {
     String filename = mTerrainGroup->generateFilename( x, y );
     if( ResourceGroupManager::getSingleton().resourceExists( mTerrainGroup->getResourceGroup(), filename ) )
     {
       mTerrainGroup->defineTerrain( x, y );
     }
     else
     {
       Image img;
       getTerrainImage( x % 2 != 0, y % 2 != 0, img );
       mTerrainGroup->defineTerrain( x, y, &img );
       mTerrainsImported = true;
     }
   }
 }
コード例 #2
0
	/**
	 *
	 * \param nPageX 
	 * \param nPageY 
	 * \param vPos 
	 * \param nMinBatchSize 
	 * \param nMaxBatchSize 
	 * \param nLayerCount 
	 * \param tpl 
	 * \param bAtOnceLoad 
	 * \return 
	 */
	bool		EditorTerrainPage::configure(int nPageX, int nPageY, const Vector3& vPos, uint16 nMinBatchSize, uint16 nMaxBatchSize, uint16 nLayerCount,
		const STerrainPageLayer& tpl, bool bAtOnceLoad)
	{
		EditorTerrain* pPlugin = static_cast<EditorTerrain*>(
			EditorPluginManager::getSingletonPtr()->findPlugin(EDITOR_TERRAIN)
			);
		if (pPlugin)
		{
			TerrainGroup* pTerrainGroup = pPlugin->getTerrainGroup();
			if (pTerrainGroup)
			{
				Terrain::ImportData dmp;
				dmp.terrainSize		= pTerrainGroup->getTerrainSize();
				dmp.worldSize		= pTerrainGroup->getTerrainWorldSize();

				dmp.pos				= vPos;
				dmp.inputImage		= 0;
				dmp.inputFloat		= 0;
				dmp.constantHeight	= 0;
				dmp.inputScale		= 0.0f;
				
				dmp.minBatchSize	= nMinBatchSize;
				dmp.maxBatchSize	= nMaxBatchSize;

				dmp.layerList.resize(nLayerCount);
				for (int i=0; i<nLayerCount; i++)
				{
					dmp.layerList[i].worldSize = tpl.fLayerWorldSize[i];
					dmp.layerList[i].textureNames.push_back(tpl.layerDiffuseTexture[i]);
					dmp.layerList[i].textureNames.push_back(tpl.layerNormalTexture[i]);
				}
			
				pTerrainGroup->defineTerrain(nPageX, nPageY, &dmp);

				if (bAtOnceLoad)
				{
					pTerrainGroup->loadTerrain(nPageX, nPageY, true);
				}

				if (!m_pTerrain)
				{
					m_pTerrain = pTerrainGroup->getTerrain(nPageX, nPageY);
				}
				
				return true;
			}
		}
		else
		{
			TKLogEvent("Can't find terrain plugin : " + EDITOR_TERRAIN, LML_CRITICAL);
		}

		return 0;
	}