Fix access to uninitialized space (#5576)
* Fix access to uninitialized space Signed-off-by: Mike Jagdis <mjagdis@eris-associates.co.uk> * Same fix to other noise generate functions Signed-off-by: Mike Jagdis <mjagdis@eris-associates.co.uk> * Skip the last Cell.Move Signed-off-by: Mike Jagdis <mjagdis@eris-associates.co.uk> * Add comments Signed-off-by: Mike Jagdis <mjagdis@eris-associates.co.uk> --------- Signed-off-by: Mike Jagdis <mjagdis@eris-associates.co.uk>
This commit is contained in:
parent
65b7040c5e
commit
2bafab7233
@ -427,28 +427,37 @@ public:
|
|||||||
|
|
||||||
// Calculate query values using Cell:
|
// Calculate query values using Cell:
|
||||||
int FromZ = 0;
|
int FromZ = 0;
|
||||||
for (int z = 0; z < NumSameZ; z++)
|
for (int z = 0; z < NumSameZ;)
|
||||||
{
|
{
|
||||||
int ToZ = FromZ + SameZ[z];
|
int ToZ = FromZ + SameZ[z];
|
||||||
int CurFloorZ = FloorZ[FromZ];
|
int CurFloorZ = FloorZ[FromZ];
|
||||||
int FromY = 0;
|
int FromY = 0;
|
||||||
for (int y = 0; y < NumSameY; y++)
|
for (int y = 0; y < NumSameY;)
|
||||||
{
|
{
|
||||||
int ToY = FromY + SameY[y];
|
int ToY = FromY + SameY[y];
|
||||||
int CurFloorY = FloorY[FromY];
|
int CurFloorY = FloorY[FromY];
|
||||||
int FromX = 0;
|
int FromX = 0;
|
||||||
for (int x = 0; x < NumSameX; x++)
|
for (int x = 0; x < NumSameX;)
|
||||||
{
|
{
|
||||||
int ToX = FromX + SameX[x];
|
int ToX = FromX + SameX[x];
|
||||||
Cell.Generate(FromX, ToX, FromY, ToY, FromZ, ToZ);
|
Cell.Generate(FromX, ToX, FromY, ToY, FromZ, ToZ);
|
||||||
Cell.Move(FloorX[ToX], CurFloorY, CurFloorZ);
|
if (++x < NumSameX) // Call Move() every time except for the last loop iteration
|
||||||
FromX = ToX;
|
{
|
||||||
|
Cell.Move(FloorX[ToX], CurFloorY, CurFloorZ);
|
||||||
|
FromX = ToX;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (++y < NumSameY) // Call Move() every time except for the last loop iteration
|
||||||
|
{
|
||||||
|
Cell.Move(FloorX[0], FloorY[ToY], CurFloorZ);
|
||||||
|
FromY = ToY;
|
||||||
}
|
}
|
||||||
Cell.Move(FloorX[0], FloorY[ToY], CurFloorZ);
|
|
||||||
FromY = ToY;
|
|
||||||
} // for y
|
} // for y
|
||||||
Cell.Move(FloorX[0], FloorY[0], FloorZ[ToZ]);
|
if (++z < NumSameZ) // Call Move() every time except for the last loop iteration
|
||||||
FromZ = ToZ;
|
{
|
||||||
|
Cell.Move(FloorX[0], FloorY[0], FloorZ[ToZ]);
|
||||||
|
FromZ = ToZ;
|
||||||
|
}
|
||||||
} // for z
|
} // for z
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -734,20 +734,26 @@ void cCubicNoise::Generate2D(
|
|||||||
|
|
||||||
// Calculate query values using Cell:
|
// Calculate query values using Cell:
|
||||||
int FromY = 0;
|
int FromY = 0;
|
||||||
for (int y = 0; y < NumSameY; y++)
|
for (int y = 0; y < NumSameY;)
|
||||||
{
|
{
|
||||||
int ToY = FromY + SameY[y];
|
int ToY = FromY + SameY[y];
|
||||||
int FromX = 0;
|
int FromX = 0;
|
||||||
int CurFloorY = FloorY[FromY];
|
int CurFloorY = FloorY[FromY];
|
||||||
for (int x = 0; x < NumSameX; x++)
|
for (int x = 0; x < NumSameX;)
|
||||||
{
|
{
|
||||||
int ToX = FromX + SameX[x];
|
int ToX = FromX + SameX[x];
|
||||||
Cell.Generate(FromX, ToX, FromY, ToY);
|
Cell.Generate(FromX, ToX, FromY, ToY);
|
||||||
Cell.Move(FloorX[ToX], CurFloorY);
|
if (++x < NumSameX) // Call Move() every time except for the last loop iteration
|
||||||
FromX = ToX;
|
{
|
||||||
|
Cell.Move(FloorX[ToX], CurFloorY);
|
||||||
|
FromX = ToX;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (++y < NumSameY) // Call Move() every time except for the last loop iteration
|
||||||
|
{
|
||||||
|
Cell.Move(FloorX[0], FloorY[ToY]);
|
||||||
|
FromY = ToY;
|
||||||
}
|
}
|
||||||
Cell.Move(FloorX[0], FloorY[ToY]);
|
|
||||||
FromY = ToY;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -795,28 +801,37 @@ void cCubicNoise::Generate3D(
|
|||||||
|
|
||||||
// Calculate query values using Cell:
|
// Calculate query values using Cell:
|
||||||
int FromZ = 0;
|
int FromZ = 0;
|
||||||
for (int z = 0; z < NumSameZ; z++)
|
for (int z = 0; z < NumSameZ;)
|
||||||
{
|
{
|
||||||
int ToZ = FromZ + SameZ[z];
|
int ToZ = FromZ + SameZ[z];
|
||||||
int CurFloorZ = FloorZ[FromZ];
|
int CurFloorZ = FloorZ[FromZ];
|
||||||
int FromY = 0;
|
int FromY = 0;
|
||||||
for (int y = 0; y < NumSameY; y++)
|
for (int y = 0; y < NumSameY;)
|
||||||
{
|
{
|
||||||
int ToY = FromY + SameY[y];
|
int ToY = FromY + SameY[y];
|
||||||
int CurFloorY = FloorY[FromY];
|
int CurFloorY = FloorY[FromY];
|
||||||
int FromX = 0;
|
int FromX = 0;
|
||||||
for (int x = 0; x < NumSameX; x++)
|
for (int x = 0; x < NumSameX;)
|
||||||
{
|
{
|
||||||
int ToX = FromX + SameX[x];
|
int ToX = FromX + SameX[x];
|
||||||
Cell.Generate(FromX, ToX, FromY, ToY, FromZ, ToZ);
|
Cell.Generate(FromX, ToX, FromY, ToY, FromZ, ToZ);
|
||||||
Cell.Move(FloorX[ToX], CurFloorY, CurFloorZ);
|
if (++x < NumSameX) // Call Move() every time except for the last loop iteration
|
||||||
FromX = ToX;
|
{
|
||||||
|
Cell.Move(FloorX[ToX], CurFloorY, CurFloorZ);
|
||||||
|
FromX = ToX;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (++y < NumSameY) // Call Move() every time except for the last loop iteration
|
||||||
|
{
|
||||||
|
Cell.Move(FloorX[0], FloorY[ToY], CurFloorZ);
|
||||||
|
FromY = ToY;
|
||||||
}
|
}
|
||||||
Cell.Move(FloorX[0], FloorY[ToY], CurFloorZ);
|
|
||||||
FromY = ToY;
|
|
||||||
} // for y
|
} // for y
|
||||||
Cell.Move(FloorX[0], FloorY[0], FloorZ[ToZ]);
|
if (++z < NumSameZ) // Call Move() every time except for the last loop iteration
|
||||||
FromZ = ToZ;
|
{
|
||||||
|
Cell.Move(FloorX[0], FloorY[0], FloorZ[ToZ]);
|
||||||
|
FromZ = ToZ;
|
||||||
|
}
|
||||||
} // for z
|
} // for z
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user