You guys may be running intot he fact that Ineisis as given only gives 256 height levels because it is stored as type byte for each point, I changed mine to Ushort to give more "levels" and smooth the terrain.
For example at the top of Shared/Heightmap:
Code:
//byte height[33][33],
// mtrl [33][33];
UShort height[33][33];
Byte mtrl [33][33];
In addition I use a HeightMapImportOffset of 32767 when I load the editor world:
Code:
for(int x=-areas; x<areas; x++)
for(int y=-areas; y<areas; y++)
{
VecI2 a(x,y);
Memc<Game.WorldManager.AreaState> areastates;
areastates.New().set(a, Game.AREA_INACTIVE);
Game.World.areaSetState(areastates, true); // setting true will unload all other areas, no wasted memory.
Game.Area* the_area = Game.World.areaLoaded(a);
Area *data=GetArea(world, a);
Image &temp_image = the_area.getData().height;
RectI ah = RectI(VecI2(0, 0), VecI2(HmRes+1, HmRes+1)); // area heightmap
for(int hy=ah.min.y; hy<=ah.max.y; hy++) // iterate area heightmap
for(int hx=ah.min.x; hx<=ah.max.x; hx++)
{
data.heightmap.setHeight(hx, hy, (the_area.data().height.pixelF(hx, hy)*(1/HeightmapScale)+HeightMapImportOffset));
data.heightmap.setMaterial(hx, hy, the_area.hmMaterial(AreaToWorld(the_area.xz()) + VecI2(hx * (AreaSize/HmRes), hy * (AreaSize/HmRes)))); // looking up world pos, areasize is larger than hmres hx/hy are hmres
}
Because I want the terrain to be by default int he middle of the Ushort range.
Doing this smooths the terrain out a lot.
You must remember that the EE editor uses a HeightmapScale = 1.0 and Ineisis uses a Heightmapscale = 1.0/8, that might be the root cause of the steps issue as well.