2c8aad12ba
Change fgcommand to take an optional property tree root element. This fixes the animation bindings to use the defined property tree root - to support multiplayer (or other) model that can bind to the correct part of the property tree. Requires a corresponding fix in sg to allow the command methods to take an optional root parameter. What this means is that when inside someone else's multiplayer model (e.g. backseat, or co-pilot), the multipalyer (AI) model will correctly modify properties inside the correct part of the property tree inside (/ai), rather than modifying the properties inside the same part of the tree as the non-ai model. This means that a properly setup model will operate within it's own space in the property tree; and permit more generic multiplayer code to be written. This is probably responsible for some of the pollution of the root property tree with MP aircraft properties.
63 lines
1.8 KiB
C++
63 lines
1.8 KiB
C++
// Build a cloud layer based on metar
|
|
//
|
|
// Written by Harald JOHNSEN, started April 2005.
|
|
//
|
|
// Copyright (C) 2005 Harald JOHNSEN - hjohnsen@evc.net
|
|
//
|
|
// This program is free software; you can redistribute it and/or
|
|
// modify it under the terms of the GNU General Public License as
|
|
// published by the Free Software Foundation; either version 2 of the
|
|
// License, or (at your option) any later version.
|
|
//
|
|
// This program is distributed in the hope that it will be useful, but
|
|
// WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
// General Public License for more details.
|
|
//
|
|
// You should have received a copy of the GNU General Public License
|
|
// along with this program; if not, write to the Free Software
|
|
// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
|
//
|
|
//
|
|
#ifndef _FGCLOUDS_HXX
|
|
#define _FGCLOUDS_HXX
|
|
|
|
#include <string>
|
|
|
|
// forward decls
|
|
class SGPropertyNode;
|
|
class SGCloudField;
|
|
|
|
class FGClouds {
|
|
|
|
private:
|
|
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;
|
|
|
|
bool clouds_3d_enabled;
|
|
int index;
|
|
|
|
bool add3DCloud(const SGPropertyNode *arg, SGPropertyNode * root);
|
|
bool delete3DCloud(const SGPropertyNode *arg, SGPropertyNode * root);
|
|
bool move3DCloud(const SGPropertyNode *arg, SGPropertyNode * root);
|
|
|
|
public:
|
|
FGClouds();
|
|
~FGClouds();
|
|
|
|
void Init(void);
|
|
|
|
int get_update_event(void) const;
|
|
void set_update_event(int count);
|
|
bool get_3dClouds() const;
|
|
void set_3dClouds(bool enable);
|
|
|
|
};
|
|
|
|
#endif // _FGCLOUDS_HXX
|
|
|