Index: osgVisual/trunk/bin/osgVisualConfig.xml
===================================================================
--- osgVisual/trunk/bin/osgVisualConfig.xml	(revision 207)
+++ osgVisual/trunk/bin/osgVisualConfig.xml	(revision 208)
@@ -58,5 +58,5 @@
         <updater>
           <position lat="" lon="" alt=""></position>
-          <attitude rot_x="0.0" rot_y="0.0" rot_z="0.0"></attitude>
+          <attitude rot_x="" rot_y="" rot_z=""></attitude>
           <label text=""></label>
         </updater>
Index: osgVisual/trunk/src/object/visual_object.cpp
===================================================================
--- osgVisual/trunk/src/object/visual_object.cpp	(revision 207)
+++ osgVisual/trunk/src/object/visual_object.cpp	(revision 208)
@@ -81,4 +81,5 @@
 	double geometry_scale_x=1.0, geometry_scale_y=1.0, geometry_scale_z=1.0;
 	osg::ref_ptr<osgVisual::object_updater> updater = NULL;
+	std::string updater_lat="", updater_lon="", updater_alt="", updater_rot_x="", updater_rot_y="", updater_rot_z="", updater_label="";
 
 	// extract model properties
@@ -155,23 +156,55 @@
 		}
 
-		//if(cur_node->type == XML_ELEMENT_NODE && node_name == "updater")
-		//{
-		//	for (xmlNode *sub_cur_node = cur_node->children; sub_cur_node; sub_cur_node = sub_cur_node->next)
-		//	{
-		//		std::string sub_node_name=reinterpret_cast<const char*>(cur_node->children->name);
-		//		if(sub_cur_node->type == XML_ELEMENT_NODE && sub_node_name == "position")
-		//		{
-		//			<position lat="" lon="" alt=""></position>
-		//		}
-		//		if(sub_cur_node->type == XML_ELEMENT_NODE && sub_node_name == "attitude")
-		//		{
-		//			<attitude rot_x="0.0" rot_y="0.0" rot_z="0.0"></attitude>
-		//		}
-		//		if(sub_cur_node->type == XML_ELEMENT_NODE && sub_node_name == "label")
-		//		{
-		//			<label text=""></label>
-		//		}
-		//	}
-		//}
+		if(cur_node->type == XML_ELEMENT_NODE && node_name == "updater")
+		{
+			for (xmlNode *sub_cur_node = cur_node->children; sub_cur_node; sub_cur_node = sub_cur_node->next)
+			{
+				std::string sub_node_name=reinterpret_cast<const char*>(cur_node->children->name);
+				if(sub_cur_node->type == XML_ELEMENT_NODE && sub_node_name == "position")
+				{
+					xmlAttr  *attr = sub_cur_node->properties;
+					while ( attr ) 
+					{ 
+						std::string attr_name=reinterpret_cast<const char*>(attr->name);
+						std::string attr_value=reinterpret_cast<const char*>(attr->children->content);
+						if( attr_name == "lat" )
+							updater_lat = attr_value;
+						if( attr_name == "lon" )
+							updater_lon = attr_value;
+						if( attr_name == "alt" ) 
+							updater_alt = attr_value;
+						attr = attr->next; 
+					}
+				}
+				if(sub_cur_node->type == XML_ELEMENT_NODE && sub_node_name == "attitude")
+				{
+					xmlAttr  *attr = sub_cur_node->properties;
+					while ( attr ) 
+					{ 
+						std::string attr_name=reinterpret_cast<const char*>(attr->name);
+						std::string attr_value=reinterpret_cast<const char*>(attr->children->content);
+						if( attr_name == "rot_x" )
+							updater_rot_x = attr_value;
+						if( attr_name == "rot_y" )
+							updater_rot_y = attr_value;
+						if( attr_name == "rot_z" ) 
+							updater_rot_z = attr_value;
+						attr = attr->next; 
+					}
+				}
+				if(sub_cur_node->type == XML_ELEMENT_NODE && sub_node_name == "label")
+				{
+					xmlAttr  *attr = sub_cur_node->properties;
+					while ( attr ) 
+					{ 
+						std::string attr_name=reinterpret_cast<const char*>(attr->name);
+						std::string attr_value=reinterpret_cast<const char*>(attr->children->content);
+						if( attr_name == "text" )
+							updater_label = attr_value;
+						attr = attr->next; 
+					}
+				}
+			}
+		}
 
 		if(cur_node->type == XML_ELEMENT_NODE && node_name == "cameraoffset")
@@ -319,4 +352,5 @@
 	{
 		updater = new osgVisual::object_updater(object);
+		object->addUpdater( updater );
 	}
 	object->setCameraOffset( cam_trans_x, cam_trans_y, cam_trans_z, cam_rot_x, cam_rot_y, cam_rot_z);
@@ -328,15 +362,12 @@
 	}
 
-	if(updater.valid())
- 		object->addUpdater( updater );	
-
-	/*
-        - updater [optional]: Channels to use for position and attitude update
-
-        <updater>
-          <translation-slots>todo</translation-slots>
-        </updater>
-    */
-
+	//if(updater.valid())
+	//{
+ //		object->addUpdater( updater );	
+	//	std::string updater_lat="", updater_lon="", updater_alt="", updater_rot_x="", updater_rot_y="", updater_rot_z="", updater_label="";
+	//}
+
+
+	
 	OSG_NOTIFY( osg::ALWAYS ) << "Done." << std::endl;
 	return object;
