SG_LOG(SG_GENERAL, SG_INFO,
"Adding model " << node->getStringValue("name", "[unnamed]"));
Instance * instance = new Instance;
- FG3DModel * model = new FG3DModel;
+ FGModelPlacement * model = new FGModelPlacement;
instance->model = model;
model->init(node->getStringValue("path", "Models/Geometry/glider.ac"));
globals->get_scenery()->get_scene_graph()->addKid(model->getSceneGraph());
// Save this instance for updating
- _instances.push_back(instance);
+ add_instance(instance);
}
}
{
for (unsigned int i = 0; i < _instances.size(); i++) {
Instance * instance = _instances[i];
- FG3DModel * model = instance->model;
+ FGModelPlacement * model = instance->model;
// Optionally set position from properties
if (instance->lon_deg_node != 0)
if (instance->heading_deg_node != 0)
model->setHeadingDeg(instance->heading_deg_node->getDoubleValue());
- instance->model->update(dt);
+ instance->model->update();
}
}
+void
+FGModelMgr::add_instance (Instance * instance)
+{
+ _instances.push_back(instance);
+}
+
+void
+FGModelMgr::remove_instance (Instance * instance)
+{
+ vector<Instance *>::iterator it;
+ for (it = _instances.begin(); it != _instances.end(); it++) {
+ if (*it == instance) {
+ _instances.erase(it);
+ delete instance;
+ return;
+ }
+ }
+}
+
void
FGModelMgr::draw ()
{