+
+ ~EModel()
+ {
+ m_resource.detach(*this);
+ }
+
+ void realise()
+ {
+ m_resource.get()->load();
+ m_node = m_resource.get()->getNode();
+ if (m_node != 0) {
+ m_traverse.insert(*m_node);
+ }
+ }
+
+ void unrealise()
+ {
+ if (m_node != 0) {
+ m_traverse.erase(*m_node);
+ }
+ }
+
+ void modelChanged(const char *value)
+ {
+ StringOutputStream cleaned(string_length(value));
+ cleaned << PathCleaned(value);
+ m_resource.detach(*this);
+ m_resource.setName(cleaned.c_str());
+ m_resource.attach(*this);
+ m_modelChanged();
+ }
+
+ typedef MemberCaller<EModel, void(const char *), &EModel::modelChanged> ModelChangedCaller;
+
+ const char *getName() const