]> git.mxchange.org Git - flightgear.git/blobdiff - src/Objects/obj.cxx
Added Durk's first stab at clouds.
[flightgear.git] / src / Objects / obj.cxx
index 4d3cdfb17dbc634d8a63b34c62a30a4a54e2b4ed..a7fc342e8152a8729dd21082097e64015f005e07 100644 (file)
@@ -55,6 +55,7 @@
 #include <Math/polar3d.hxx>
 #include <Misc/stopwatch.hxx>
 #include <Scenery/tileentry.hxx>
+#include <Clouds/cloudobj.hxx>
 
 #include "materialmgr.hxx"
 #include "obj.hxx"
@@ -248,6 +249,9 @@ ssgBranch *fgGenTile( const string& path, FGTileEntry *t) {
     leaf->setState( state );
 
     tile->addKid( leaf );
+    if ( current_options.get_clouds() ) {
+       fgGenCloudTile(path, t, tile);
+    }
 
     return tile;
 }
@@ -700,15 +704,21 @@ ssgBranch *fgObjLoad( const string& path, FGTileEntry *t) {
                    // xglTexCoord2f(pp.x(), pp.y());
                    // xglVertex3dv(nodes[n3].get_n());
 
-                   if ( odd ) {
+                   if ( token == "tf" ) {
+                       // triangle fan
                        fragment.add_face(n1, n2, n3);
+                       n2 = n3;
                    } else {
-                       fragment.add_face(n2, n1, n3);
+                       // triangle strip
+                       if ( odd ) {
+                           fragment.add_face(n1, n2, n3);
+                       } else {
+                           fragment.add_face(n2, n1, n3);
+                       }
+                       odd = !odd;
+                       n1 = n2;
+                       n2 = n3;
                    }
-
-                   odd = !odd;
-                   n1 = n2;
-                   n2 = n3;
                }
 
                // xglEnd();
@@ -912,7 +922,11 @@ ssgBranch *fgObjLoad( const string& path, FGTileEntry *t) {
     FG_LOG( FG_TERRAIN, FG_DEBUG, 
            "Loaded " << path << " in " 
            << stopwatch.elapsedSeconds() << " seconds" );
-    
+
+    // Generate a cloud layer above the tiles
+    if ( current_options.get_clouds() ) {
+       fgGenCloudTile(path, t, tile);
+    }
     return tile;
 }