Fix two bugs in random object placement

This commit is contained in:
Stuart Buchanan 2014-11-21 22:14:03 +00:00
parent 023b5a09f7
commit 958ae9bdf0

View File

@ -628,6 +628,8 @@ public:
// place an object each unit of area // place an object each unit of area
while ( n > 1.0 ) { while ( n > 1.0 ) {
n -= 1.0;
float a = mt_rand(&seed); float a = mt_rand(&seed);
float b = mt_rand(&seed); float b = mt_rand(&seed);
if ( a + b > 1 ) { if ( a + b > 1 ) {
@ -650,7 +652,6 @@ public:
float edge_dist = *std::min_element(edges, edges + 3); float edge_dist = *std::min_element(edges, edges + 3);
if (edge_dist < spacing) { if (edge_dist < spacing) {
n -= 1.0;
continue; continue;
} }
@ -665,7 +666,6 @@ public:
if (mt_rand(&seed) > img->getColor(x, y).b()) { if (mt_rand(&seed) > img->getColor(x, y).b()) {
// Failed object mask check // Failed object mask check
n -= 1.0;
continue; continue;
} }
@ -680,7 +680,7 @@ public:
float min_dist2 = (l->second + object->get_spacing_m()) * float min_dist2 = (l->second + object->get_spacing_m()) *
(l->second + object->get_spacing_m()); (l->second + object->get_spacing_m());
if (distSqr(l->first, randomPoint) > min_dist2) { if (distSqr(l->first, randomPoint) < min_dist2) {
close = true; close = true;
continue; continue;
} }