Изменять ландшафт в игре можно, но доступа к этому коду у нас нет. Хотя есть некоторые функции, которые могли бы это сделать:
|
Код
|
1
2
3
|
ITerrain::SetTerrainElevation(int x1, int y1, int nSizeX, int nSizeY,
float *pTerrainBlock, unsigned char *pSurfaceData, uint32 *pResolMap,
int nResolMapSizeX, int nResolMapSizeY)
|
Получить ландшафт:
|
Код
|
1
|
gEnv->p3DEngine->GetITerrain()
|
поищи коментв коде, не знаю где именно, но есть ещё это:
|
Код
|
1
2
3
4
5
6
7
|
// let 3D engine know about explosion (will create holes and remove vegetation)
if (explosionInfo.hole_size > 1.0f && gEnv->p3DEngine->GetIVoxTerrain())
{
gEnv->p3DEngine->OnExplosion(explosionInfo.pos, explosionInfo.hole_size, true);
}
TExplosionAffectedEntities affectedEntities;
|
должно работать с вокселами.
А ещё в Crysis 1 был такой мод, точнее нужно было раскомментировать пару строчек кода, чтобы включить консольное значение e_terrain_deformations:
Найди следующий код в GameRulesClientServer.cpp, функция CGameRules::ClientExplosion()
|
Код
|
1
2
3
4
5
6
7
8
9
|
// let 3D engine know about explosion (will create holes and remove vegetation)
//if (explosionInfo.hole_size > 0.0f)
//{
// gEnv->p3DEngine->OnExplosion(explosionInfo.pos, explosionInfo.hole_size, true);
//}
|
раскомментируй 4 строчки:
|
Код
|
1
2
3
4
5
6
7
8
9
|
// let 3D engine know about explosion (will create holes and remove vegetation)
if (explosionInfo.hole_size > 0.0f)
{
gEnv->p3DEngine->OnExplosion(explosionInfo.pos, explosionInfo.hole_size, true);
}
|
и скомпилируй.