]> git.mxchange.org Git - simgear.git/commitdiff
Change cloudfield::addCloud interface,
authorThorstenB <brehmt@gmail.com>
Mon, 7 Mar 2011 18:26:37 +0000 (19:26 +0100)
committerThorstenB <brehmt@gmail.com>
Mon, 7 Mar 2011 18:26:37 +0000 (19:26 +0100)
so it's more obvious that "addCloud" won't keep a reference to SGNewCloud.

simgear/scene/sky/cloudfield.cxx
simgear/scene/sky/cloudfield.hxx

index 7d738563f5ac936e2ccdf5e160033c0dd7e464fc..202311e71d70526b13c0b611199f6e265089d53c 100644 (file)
@@ -253,10 +253,9 @@ void SGCloudField::applyCoverage(void) {
         last_coverage = coverage;
 }
 
-void SGCloudField::addCloud( SGVec3f& pos, SGNewCloud *cloud) {
+void SGCloudField::addCloud( SGVec3f& pos, osg::ref_ptr<EffectGeode> geode) {
         defined3D = true;
-        osg::ref_ptr<osg::Geode> geode = cloud->genCloud();
-        
+
         // Determine which quadtree to put it in.
         int x = (int) floor((pos.x() + fieldSize/2.0) * QUADTREE_SIZE / fieldSize);
         if (x >= QUADTREE_SIZE) x = (QUADTREE_SIZE - 1);
index 38fa9e95a3bc73b125efbd8e746990d154042ea2..f09f698b31afd085fcb4765e63f16bb18458b79e 100644 (file)
@@ -49,6 +49,11 @@ using std::vector;
 
 class SGNewCloud;
 
+namespace simgear
+{
+    class EffectGeode;
+}
+
 /**
  * A layer of 3D clouds.
  */
@@ -99,7 +104,7 @@ public:
        void clear(void);
 
        // add one cloud, data is not copied, ownership given
-       void addCloud( SGVec3f& pos, SGNewCloud *cloud);
+       void addCloud( SGVec3f& pos, osg::ref_ptr<simgear::EffectGeode> cloud);
 
         /**
         * reposition the cloud layer at the specified origin and