]> git.mxchange.org Git - simgear.git/commitdiff
Fix two bugs in random object placement
authorStuart Buchanan <stuart_d_buchanan@yahoo.co.uk>
Fri, 21 Nov 2014 22:14:03 +0000 (22:14 +0000)
committerStuart Buchanan <stuart_d_buchanan@yahoo.co.uk>
Fri, 21 Nov 2014 22:14:03 +0000 (22:14 +0000)
simgear/scene/tgdb/obj.cxx

index b8e02f51fad1f5bb2c2989627cd65563be2402f5..097de74c690b965089de514411574e6068056dbe 100644 (file)
@@ -628,6 +628,8 @@ public:
 
               // place an object each unit of area
               while ( n > 1.0 ) {
+               n -= 1.0;
+
                 float a = mt_rand(&seed);
                 float b = mt_rand(&seed);
                 if ( a + b > 1 ) {
@@ -650,7 +652,6 @@ public:
                 float edge_dist = *std::min_element(edges, edges + 3);
 
                 if (edge_dist < spacing) {
-                  n -= 1.0;
                   continue;
                 }
 
@@ -665,7 +666,6 @@ public:
 
                   if (mt_rand(&seed) > img->getColor(x, y).b()) {
                     // Failed object mask check
-                    n -= 1.0;
                     continue;
                   }
 
@@ -680,7 +680,7 @@ public:
                   float min_dist2 = (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;
                     continue;
                   }