📄 terrdatarpg.cc
字号:
//-----------------------------------------------------------------------------
// Torque Game Engine
// Copyright (C) GarageGames.com, Inc.
//-----------------------------------------------------------------------------
#include "terrain/terrData.h"
#include "dgl/dgl.h"
#include "dgl/gBitmap.h"
#include "dgl/gTexManager.h"
#include "dgl/materialList.h"
#include "dgl/materialPropertyMap.h"
#include "math/mMath.h"
#include "math/mathIO.h"
#include "core/fileStream.h"
#include "core/bitStream.h"
#include "console/consoleTypes.h"
#include "sceneGraph/sceneGraph.h"
#include "sceneGraph/sceneState.h"
#include "sim/netConnection.h"
#include "terrain/terrRender.h"
#include "terrain/blender.h"
#ifdef TGE_RPG /// TGE_Map
//--------------------------------------
bool TerrainFile::save(const char *filename,U32 width, U32 height)
{
FileStream writeFile;
if (!ResourceManager->openFileForWrite(writeFile, filename))
return false;
S32 nAmount = width*height;
// write the VERSION and HeightField
writeFile.write((U8)FILE_VERSION);
for (S32 i=0; i < nAmount; i++)
writeFile.write(mHeightMap[i]);
// write the material group map, after merging the flags...
TerrainBlock::Material * materialMap = (TerrainBlock::Material*)mMaterialMap;
for (S32 j=0; j < nAmount; j++)
{
U8 val = mBaseMaterialMap[j];
val |= materialMap[j].flags & TerrainBlock::Material::PersistMask;
writeFile.write(val);
}
// write the MaterialList Info
S32 k;
for(k=0; k < TerrainBlock::MaterialGroups; k++)
{
// ok, only write out the material string if there is a non-zero
// alpha material:
if(mMaterialFileName[k] && mMaterialFileName[k][0])
{
S32 n;
for(n = 0; n < nAmount; n++)
if(mMaterialAlphaMap[k][n])
break;
if(n == nAmount)
mMaterialFileName[k] = 0;
}
writeFile.writeString(mMaterialFileName[k]);
}
for(k=0; k < TerrainBlock::MaterialGroups; k++) {
if(mMaterialFileName[k] && mMaterialFileName[k][0]) {
AssertFatal(mMaterialAlphaMap[k] != NULL, "Error, must have a material map here!");
writeFile.write(nAmount, mMaterialAlphaMap[k]);
}
}
if(mTextureScript)
{
U32 len = dStrlen(mTextureScript);
writeFile.write(len);
writeFile.write(len, mTextureScript);
}
else
writeFile.write(U32(0));
if(mHeightfieldScript)
{
U32 len = dStrlen(mHeightfieldScript);
writeFile.write(len);
writeFile.write(len, mHeightfieldScript);
}
else
writeFile.write(U32(0));
return (writeFile.getStatus() == FileStream::Ok);
}
#endif //#ifdef TGE_RPG /// TGE_Map
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -