#include <vector>
#include <simgear/compiler.h> // for SG_USING_STD
-
-#include <Main/fgfs.hxx> // for FGSubsystem
+#include <simgear/structure/subsystem_mgr.hxx>
SG_USING_STD(vector);
// Don't pull in headers, since we don't need them here.
class ssgSelector;
class SGPropertyNode;
-class FGModelPlacement;
+class SGModelPlacement;
/**
* Manage a list of user-specified models.
*/
-class FGModelMgr : public FGSubsystem
+class FGModelMgr : public SGSubsystem
{
public:
* The model manager uses the property nodes to update the model's
* position and orientation; any of the property node pointers may
* be set to zero to avoid update. Normally, a caller should
- * load the model by instantiating FGModelPlacement with the path
+ * load the model by instantiating SGModelPlacement with the path
* to the model or its XML wrapper, then assign any relevant
* property node pointers.
*
- * @see FGModelPlacement
+ * @see SGModelPlacement
* @see FGModelMgr#add_instance
*/
struct Instance
{
Instance ();
virtual ~Instance ();
- FGModelPlacement * model;
- SGPropertyNode * lon_deg_node;
- SGPropertyNode * lat_deg_node;
- SGPropertyNode * elev_ft_node;
- SGPropertyNode * roll_deg_node;
- SGPropertyNode * pitch_deg_node;
- SGPropertyNode * heading_deg_node;
+ SGModelPlacement * model;
+ SGPropertyNode_ptr lon_deg_node;
+ SGPropertyNode_ptr lat_deg_node;
+ SGPropertyNode_ptr elev_ft_node;
+ SGPropertyNode_ptr roll_deg_node;
+ SGPropertyNode_ptr pitch_deg_node;
+ SGPropertyNode_ptr heading_deg_node;
};
FGModelMgr ();
virtual void unbind ();
virtual void update (double dt);
+ virtual void add_model (SGPropertyNode * node);
+
/**
* Add an instance of a dynamic model to the manager.
*
vector<Instance *> _instances;
- ssgSelector * _selector;
+ ssgSharedPtr<ssgSelector> _selector;
};