15#include <simgear/canvas/Canvas.hxx>
16#include <simgear/scene/model/placement.hxx>
20namespace sc = simgear::canvas;
27 int module_id = placement->getIntValue(
"module-id", -1);
29 return sc::Placements();
35 return sc::Placements();
38 return sc::Placements();
55 const std::string dyn_model_path = placement->getStringValue(
"model-path");
56 if (dyn_model_path.empty())
64 if (!model_instance || !model_instance->
model || !model_instance->
model->getSceneGraph())
68 model_instance->
model->getSceneGraph(),
82 fgGetNode(
"/sim/signals/model-reinit", true)
91 sc::Canvas::addPlacementFactory
93 "object", [](SGPropertyNode* placement, sc::CanvasPtr
canvas) {
102 simgear::canvas::CanvasMgr::init();
108 simgear::canvas::CanvasMgr::shutdown();
110 sc::Canvas::removePlacementFactory(
"object");
111 sc::Canvas::removePlacementFactory(
"scenery-object");
112 sc::Canvas::removePlacementFactory(
"dynamic-model");
122 osg::Texture2D* tex =
canvas->getTexture();
136 osg::State* state = guiCamera->getGraphicsContext()->getState();
140 osg::Texture::TextureObject* tobj =
141 tex->getTextureObject( state->getContextID() );
151 for (
size_t i = 0;
i < _elements.size(); ++
i)
153 sc::Canvas* element =
static_cast<sc::Canvas*
>(_elements[
i].get());
155 element->reloadPlacements(
"object");
162 SGSubsystemMgr::DISPLAY);
static sc::Placements addSceneObjectPlacement(SGPropertyNode *placement, sc::CanvasPtr canvas)
SGSubsystemMgr::Registrant< CanvasMgr > registrantCanvasMgr(SGSubsystemMgr::DISPLAY)
static sc::Placements addDynamicModelPlacement(SGPropertyNode *placement, sc::CanvasPtr canvas)
void handleModelReinit(SGPropertyNode *)
unsigned int getCanvasTexId(const simgear::canvas::CanvasPtr &canvas) const
Get OpenGL texture name for given canvas.
SGPropertyChangeCallback< CanvasMgr > _cb_model_reinit
Manage a list of user-specified models.
Nasal model data container.
static FGNasalModelData * getByModuleId(unsigned int id)
Get FGNasalModelData for model with the given module id.
osg::Node * getNode()
Get osg scenegraph node of model.
static CameraGroup * getDefault()
Get the default CameraGroup.
simgear::canvas::Placements set_texture(osg::Node *branch, const char *name, osg::Texture2D *new_texture)
Replace an opengl texture name inside a given branch of the scene graph.
simgear::canvas::Placements set_aircraft_texture(const char *name, osg::Texture2D *new_texture)
Replace an opengl texture name inside the aircraft scene graph.
osg::Camera * getGUICamera(CameraGroup *cgroup)
Get the osg::Camera that draws the GUI, if any, from a camera group.
SGPropertyNode * fgGetNode(const char *path, bool create)
Get a property node.
A dynamically-placed model using properties.