#include "NasalModelData.hxx"
#include "NasalSys.hxx"
+#include <Main/fg_props.hxx>
#include <Main/globals.hxx>
+#include <osg/Transform>
+#include <osg/observer_ptr>
+
#include <simgear/math/SGMath.hxx>
#include <simgear/nasal/cppbind/Ghost.hxx>
+#include <simgear/scene/util/OsgDebug.hxx>
#include <simgear/scene/util/OsgMath.hxx>
#include <simgear/debug/logstream.hxx>
-#include <osg/Transform>
-
#include <boost/bind.hpp>
#include <algorithm>
* model.
*/
static naRef f_node_getPose( const osg::Node& node,
- const nasal::CallContext& ctx )
+ const nasal::CallContext& ctx )
{
osg::NodePathList parent_paths = node.getParentalNodePaths();
for( osg::NodePathList::const_iterator path = parent_paths.begin();
_module_id( _max_module_id++ )
{
_loaded_models.push_back(this);
+
+ SG_LOG
+ (
+ SG_NASAL,
+ SG_INFO,
+ "New model with attached script(s) "
+ "(branch = " << branch << ","
+ " path = " << simgear::getNodePathString(branch) << ")"
+ );
}
//------------------------------------------------------------------------------
FGNasalModelData::~FGNasalModelData()
{
_loaded_models.remove(this);
+
+ SG_LOG
+ (
+ SG_NASAL,
+ SG_INFO,
+ "Removed model with script(s) (branch = " << _branch.get() << ")"
+ );
}
//------------------------------------------------------------------------------
nasal::Hash module = nasalSys->getGlobals().createHash(_module);
module.set("_module_id", _module_id);
- if( !NasalNode::isInit() )
- {
- NasalNode::init("osg.Node")
+ NasalNode::init("osg.Node")
.method("getPose", &f_node_getPose);
- }
-
- module.set("_model", NodeRef(_branch));
+ module.set("_model", _branch);
naRef arg[2];
arg[0] = nasalSys->propNodeGhost(_root);
//------------------------------------------------------------------------------
osg::Node* FGNasalModelData::getNode()
{
- return _branch;
+ return _branch.get();
}
//------------------------------------------------------------------------------
SGPropertyNode *prop,
osg::Node *branch )
{
- FGNasalSys* nasalSys = (FGNasalSys*) globals->get_subsystem("nasal");
- if(!nasalSys) {
- SG_LOG(SG_NASAL, SG_WARN, "Trying to run a <load> script "
- "without Nasal subsystem present.");
+ if( fgGetBool("/sim/disable-embedded-nasal") )
return;
- }
-
+
if(!prop)
return;
if(!nasal)
return;
+ FGNasalSys* nasalSys = (FGNasalSys*) globals->get_subsystem("nasal");
+ if(!nasalSys)
+ {
+ SG_LOG
+ (
+ SG_NASAL,
+ SG_WARN,
+ "Can not load model script(s) (Nasal subsystem not available)."
+ );
+ return;
+ }
+
SGPropertyNode* load = nasal->getNode("load");
SGPropertyNode* unload = nasal->getNode("unload");