FGModelMgr::FGModelMgr ()
: _models(fgGetNode("/models", true)),
_listener(new Listener(this))
-
{
_models->addChangeListener(_listener);
}
globals->get_sim_time_sec(), /*cache_object=*/false);
model->init( object );
- if (shadows)
- shadows->addOccluder((ssgBranch *)object, SGShadowVolume::occluderTypeTileObject);
// Set position and orientation either
// indirectly through property refs
model->setHeadingDeg(instance->heading_deg_node->getDoubleValue());
instance->model->update();
+
+ if (shadows && !instance->shadow) {
+ ssgBranch *branch = (ssgBranch *)instance->model->getSceneGraph();
+ shadows->addOccluder(branch, SGShadowVolume::occluderTypeTileObject);
+ instance->shadow = true;
+ }
}
}
elev_ft_node(0),
roll_deg_node(0),
pitch_deg_node(0),
- heading_deg_node(0)
+ heading_deg_node(0),
+ shadow(false)
{
}
_mgr->_instances.erase(it);
ssgBranch *branch = (ssgBranch *)instance->model->getSceneGraph();
- if (shadows)
+ if (shadows && instance->shadow)
shadows->deleteOccluder(branch);
globals->get_scenery()->get_scene_graph()->removeKid(branch);