#ifndef _NEWCLOUD_HXX
#define _NEWCLOUD_HXX
-#include <plib/sg.h>
#include <simgear/compiler.h>
#include <string>
#include <vector>
#include <osg/Fog>
-#include "bbcache.hxx"
+#include <simgear/scene/material/Effect.hxx>
+#include <simgear/scene/material/EffectGeode.hxx>
using std::string;
using std::vector;
class SGNewCloud {
public:
- SGNewCloud(const SGPath &tex_path,
- string tex,
- double min_w,
- double max_w,
- double min_h,
- double max_h,
- double min_sprite_w,
- double max_sprite_w,
- double min_sprite_h,
- double max_sprite_h,
- double b,
- int n,
- int nt_x,
- int nt_y);
-
- ~SGNewCloud();
+ SGNewCloud(const SGPath &texture_root, const SGPropertyNode *cld_def);
+
+ ~SGNewCloud();
// Generate a Cloud
- osg::ref_ptr<osg::LOD> genCloud ();
+ osg::ref_ptr<simgear::EffectGeode> genCloud ();
+
+ static double getDensity(void)
+ {
+ return sprite_density;
+ }
+
+ // Set the sprite density
+ static void setDensity(double d)
+ {
+ sprite_density = d;
+ }
+
private:
double min_sprite_height;
double max_sprite_height;
double bottom_shade;
+ double zscale;
+ bool height_map_texture;
int num_sprites;
int num_textures_x;
int num_textures_y;
- const string texture;
-
- osg::ref_ptr<osg::StateSet> stateSet;
+ string texture;
+ osg::Geometry* quad;
+ osg::ref_ptr<simgear::Effect> effect;
+ static double sprite_density;
-public:
+ osg::Geometry* createOrthQuad(float w, float h, int varieties_x, int varieties_y);
};
+
#endif // _NEWCLOUD_HXX