From 1a4993f08b1bfa0dd66274a3eb3be8b6a8ab5b32 Mon Sep 17 00:00:00 2001
From: James Turner <zakalawe@mac.com>
Date: Wed, 27 Mar 2013 22:48:43 +0000
Subject: [PATCH] Minor cleanup of cloud commands.

---
 src/Environment/fgclouds.cxx | 44 +++++++++++-------------------------
 src/Environment/fgclouds.hxx | 28 +++++++++--------------
 2 files changed, 24 insertions(+), 48 deletions(-)

diff --git a/src/Environment/fgclouds.cxx b/src/Environment/fgclouds.cxx
index f19d9d6fc..f83a72767 100644
--- a/src/Environment/fgclouds.cxx
+++ b/src/Environment/fgclouds.cxx
@@ -24,6 +24,8 @@
 #  include "config.h"
 #endif
 
+#include "fgclouds.hxx"
+
 #include <cstring>
 #include <cstdio>
 #include <Main/fg_props.hxx>
@@ -42,20 +44,11 @@
 #include <Viewer/renderer.hxx>
 #include <Airports/airport.hxx>
 
-#include "fgclouds.hxx"
-
-static bool do_delete_3Dcloud (const SGPropertyNode *arg);
-static bool do_move_3Dcloud (const SGPropertyNode *arg);
-static bool do_add_3Dcloud (const SGPropertyNode *arg);
-
 // RNG seed to ensure cloud synchronization across multi-process
 // deployments
 static mt seed;
 
 FGClouds::FGClouds() :
-#if 0
-    snd_lightning(0),
-#endif
     clouds_3d_enabled(false),
     index(0)
 {
@@ -75,27 +68,19 @@ void FGClouds::set_update_event(int count) {
 	buildCloudLayers();
 }
 
-void FGClouds::Init(void) {
-#if 0
-	if( snd_lightning == NULL ) {
-		snd_lightning = new SGSoundSample("Sounds/thunder.wav", SGPath());
-		snd_lightning->set_max_dist(7000.0f);
-		snd_lightning->set_reference_dist(3000.0f);
-		SGSoundMgr *smgr = globals->get_soundmgr();
-		SGSampleGroup *sgr = smgr->find("weather", true);
-		sgr->add( snd_lightning, "thunder" );
-	}
-#endif
-
+void FGClouds::Init(void)
+{
 	mt_init_time_10(&seed);
 
-	globals->get_commands()->addCommand("add-cloud", do_add_3Dcloud);
-	globals->get_commands()->addCommand("del-cloud", do_delete_3Dcloud);
-	globals->get_commands()->addCommand("move-cloud", do_move_3Dcloud);
+	globals->get_commands()->addCommand("add-cloud", this, &FGClouds::add3DCloud);
+	globals->get_commands()->addCommand("del-cloud", this, &FGClouds::delete3DCloud);
+	globals->get_commands()->addCommand("move-cloud", this, &FGClouds::move3DCloud);
 }
 
 // Build an invidual cloud. Returns the extents of the cloud for coverage calculations
-double FGClouds::buildCloud(SGPropertyNode *cloud_def_root, SGPropertyNode *box_def_root, const string& name, double grid_z_rand, SGCloudField *layer) {
+double FGClouds::buildCloud(SGPropertyNode *cloud_def_root, SGPropertyNode *box_def_root,
+                            const std::string& name, double grid_z_rand, SGCloudField *layer)
+{
 	SGPropertyNode *box_def=NULL;
 	SGPropertyNode *cld_def=NULL;
 	double extent = 0.0;
@@ -358,8 +343,7 @@ bool FGClouds::get_3dClouds() const
  * (Various) - cloud definition properties. See README.3DClouds
  *
  */
- static bool
- do_add_3Dcloud (const SGPropertyNode *arg)
+ bool FGClouds::add3DCloud(const SGPropertyNode *arg)
  {
    int l = arg->getIntValue("layer", 0);
    int index = arg->getIntValue("index", 0);
@@ -394,8 +378,7 @@ bool FGClouds::get_3dClouds() const
   * index - the cloud index
   *
   */
- static bool
- do_delete_3Dcloud (const SGPropertyNode *arg)
+ bool FGClouds::delete3DCloud(const SGPropertyNode *arg)
  {
    int l = arg->getIntValue("layer", 0);
    int i = arg->getIntValue("index", 0);
@@ -414,8 +397,7 @@ bool FGClouds::get_3dClouds() const
  * lon/lat/alt - the position for the cloud
  *
  */
- static bool
- do_move_3Dcloud (const SGPropertyNode *arg)
+bool FGClouds::move3DCloud(const SGPropertyNode *arg)
  {
    int l = arg->getIntValue("layer", 0);
    int i = arg->getIntValue("index", 0);
diff --git a/src/Environment/fgclouds.hxx b/src/Environment/fgclouds.hxx
index cf3e8a4f9..cd6df0c3b 100644
--- a/src/Environment/fgclouds.hxx
+++ b/src/Environment/fgclouds.hxx
@@ -22,36 +22,30 @@
 #ifndef _FGCLOUDS_HXX
 #define _FGCLOUDS_HXX
 
-#ifdef HAVE_CONFIG
-#  include <config.h>
-#endif
-
-#include <simgear/compiler.h>
-#include <simgear/math/sg_random.h>
-#include <simgear/sound/soundmgr_openal.hxx>
-#include <Main/fg_props.hxx>
-
 #include <string>
 
-using std::string;
-
+// forward decls
+class SGPropertyNode;
 class SGCloudField;
 
 class FGClouds {
 
 private:
-	double buildCloud(SGPropertyNode *cloud_def_root, SGPropertyNode *box_def_root, const string& name, double grid_z_rand, SGCloudField *layer);
-	void buildLayer(int iLayer, const string& name, double coverage);
+	double buildCloud(SGPropertyNode *cloud_def_root, SGPropertyNode *box_def_root,
+                      const std::string& name, double grid_z_rand, SGCloudField *layer);
+	void buildLayer(int iLayer, const std::string& name, double coverage);
 
 	void buildCloudLayers(void);
 
 	int update_event;
-#if 0
-	SGSoundSample *snd_lightning;
-#endif
+
 	bool clouds_3d_enabled;
-  int index;
+    int index;
   
+    bool add3DCloud(const SGPropertyNode *arg);
+    bool delete3DCloud(const SGPropertyNode *arg);
+    bool move3DCloud(const SGPropertyNode *arg);
+    
 public:
 	FGClouds();
 	~FGClouds();