Random Chitchat 2012-2016
Why don't you try running your code? You'd see that it's got problems:
- if (biSwampland) -> biSwampland is a nonzero constant, so this "condition" is always met. (Same as writing "if (18)" )
- still having that old part of code with an x-, z- for loop covering the entire chunk's body of water with lily pads.
This should suffice (not tested, may not even compile):
Code:
void cFinishGenLilypad::GenFinish( int a_ChunkX, int a_ChunkZ, cChunkDef::BlockTypes & a_BlockTypes, // Block types to read and change cChunkDef::BlockNibbles & a_BlockMeta, // Block meta to read and change cChunkDef::HeightMap & a_HeightMap, // Height map to read and change by the current data const cChunkDef::BiomeMap & a_BiomeMap, // Biomes to adhere to cEntityList & a_Entities, // Entities may be added or deleted cBlockEntityList & a_BlockEntities // Block entities may be added or deleted ) { // Turn surface water into Lilypads in Swampland int NumLilyPads = GetNumLilyPads(a_BiomeMap); for (int i = 0; i < NumLilyPads; i++) { int x = m_Noise.IntNoise3DInt(a_ChunkX + a_ChunkZ, a_ChunkZ, i) % cChunkDef::Width; int z = m_Noise.IntNoise3DInt(a_ChunkX - a_ChunkZ, i, a_ChunkZ) % cChunkDef::Width; // Place a lily pad at {x, z} if possible (swampland, empty block, water below): if (cChunkDef::GetBiome(a_BiomeMap, x, z) != biSwampland) { // not swampland continue; } int Height = cChunkDef::GetHeight(a_HeightMap, x, z); if (cChunkDef::GetBlock(a_BlockTypes, x, Height + 1, z) != E_BLOCK_AIR) { // not empty block continue; } switch (cChunkDef::GetBlock(a_BlockTypes, x, Height, z)) { case E_BLOCK_WATER: case E_BLOCK_STATIONARY_WATER: { cChunkDef::SetBlock(a_BlockTypes, x, Height + 1, z, E_BLOCK_LILY_PAD); cChunkDef::SetHeight(a_HeightMap, x, z, Height + 1); break; } } // switch (GetBlock) } // for i }
Thanks given by:
when i see the code visual express says there are 4 errors in the code but i don't know how to fix them Sad


Attached Files Thumbnail(s)
   
Thanks given by:
You are missing a curly brace at the start of the function. That should fix 3 of those. And for m_Noise, you probably need to put it into the class declaration and initialize it with a_Seed in the constructor (same as tree structgen)
Thanks given by:
can you do that Smile i realy need to learn more about c++
Thanks given by:
Done in Rev 647. Also added it into the defaults.
Thanks given by:
cool Smile
i have 2 bugs to note :S
1 sometimes leaves overide logs
2 every type of leaves drops the same sapling
Thanks given by:
Leaves shouldn't override logs, ever. If you find such a case, I want a seed, world.ini settings and coords.

I'm now looking into why VS won't optimize out hottest code, the cNoise object.
Thanks given by:
Seed=1631635336
coords are:
x=-249.058
y=73
z=-330.570
also some jungle trees in the jungle where you spawn next to are some leaves that override.
Thanks given by:
and are you working on something now? Smile
Thanks given by:
I'm in Vienna, enjoying a short holiday with my wife. Returning tomorrow, so I might have some something cooked up on sunday.

Before I left, I started working on ravines, since they are kinda like the wormnest caves, just they are a bit easier Smile
Thanks given by:




Users browsing this thread: 20 Guest(s)