Index: code/branches/FICN/bin/levels/sample.oxw
===================================================================
--- code/branches/FICN/bin/levels/sample.oxw	(revision 575)
+++ code/branches/FICN/bin/levels/sample.oxw	(revision 576)
@@ -1,31 +1,25 @@
 <?xml version="1.0"?>
 <orxonoxworld name="Orxonox sample level" image="textures/menu/moonstation_512x512.jpg">
-	<description>
-		This is an orxonox sample level.
-	</description>
+  <description>
+    This is an orxonox sample level.
+  </description>
 
-	<loading>
-		<background color="000000" image="textures/load_screens/ambush.png" />
-		<bar top="200" left="50" width="300" height="20" image="textures/load_screens/ambush-loadbar.png" />
-	</loading>
+  <loading>
+    <background color="000000" image="textures/load_screens/ambush.png" />
+    <bar top="200" left="50" width="300" height="20" image="textures/load_screens/ambush-loadbar.png" />
+  </loading>
 
-	<audio>
+  <audio>
+  </audio>
 
-	</audio>
+  <!-- Keep a minimum distance of >100 to the object, otherwise the camara thinks it's in the object -->
+  <!-- the value has to negative, as we want the camara behind the object -->
+  <world>
+    <SceneNode name="OgreHeadNode" pos="0,0,0" />
+    <Camera name="Camera" pos="0,0,-150" lookat="0,0,0" node="OgreHeadNode" />
+    <Ambient colourvalue="1,1,1" />
+    <Skybox src="Orxonox/BlueStarSkyBox" />
 
-    <!-- Keep a minimum distance of >100 to the object, otherwise the camara thinks it's in the object -->
-    <!-- the value has to negative, as we want the camara behind the object -->
-	<world>
-
-		<SceneNode name="OgreHeadNode" pos="0,0,0" />
-
-		<Camera name="Camera" pos="0,0,-150" lookat="0,0,0" node="OgreHeadNode" />
-
-		<Ambient colourvalue="1,1,1" />
-
-		<Skybox src="Orxonox/BlueStarSkyBox" />
-
-		<BaseEntity name="ASSF" src="assf2.mesh" node="OgreHeadNode" />
-
+    <BaseEntity name="ASSF" src="assf2.mesh" node="OgreHeadNode" />
 
     <SceneNode name="node1" pos="0,200,0" />
@@ -46,13 +40,11 @@
     <SceneNode name="node6" pos="0,0,-200" />
     <Entity name="asteroid6" src="ast6.mesh" node="node6" />
-	</world>
+  </world>
 
 <!-- Unused at the moment -->
-		<SpaceshipSteeringObject node="OgreHeadNode" forward="500" rotateupdown="200" rotaterightleft="200" looprightleft="200" />
+  <SpaceshipSteeringObject node="OgreHeadNode" forward="500" rotateupdown="200" rotaterightleft="200" looprightleft="200" />
 
-
-
-	<scripts>
-		<script file="intro.lua" />
-	</scripts>
+  <scripts>
+    <script file="intro.lua" />
+  </scripts>
 </orxonoxworld>
Index: code/branches/FICN/src/orxonox/CMakeLists.txt
===================================================================
--- code/branches/FICN/src/orxonox/CMakeLists.txt	(revision 575)
+++ code/branches/FICN/src/orxonox/CMakeLists.txt	(revision 576)
@@ -35,4 +35,6 @@
     objects/SpaceshipSteeringObject.cc
     objects/Model.cc
+    objects/Mesh.cc
+    objects/BaseEntity.cc
   )
 ELSE(WIN32)
@@ -41,5 +43,5 @@
 
 IF(WIN32)
-  ADD_LIBRARY(orxonox ${ORXONOX_SRC_FILES})
+#  ADD_LIBRARY(orxonox ${ORXONOX_SRC_FILES})
 ELSE(WIN32)
   ADD_LIBRARY(orxonox SHARED ${ORXONOX_SRC_FILES})
Index: code/branches/FICN/src/orxonox/objects/CMakeLists.txt
===================================================================
--- code/branches/FICN/src/orxonox/objects/CMakeLists.txt	(revision 575)
+++ code/branches/FICN/src/orxonox/objects/CMakeLists.txt	(revision 576)
@@ -15,4 +15,5 @@
   SpaceshipSteeringObject.cc
   Model.cc
+  Mesh.cc
 )
 
Index: code/branches/FICN/src/orxonox/objects/Mesh.cc
===================================================================
--- code/branches/FICN/src/orxonox/objects/Mesh.cc	(revision 576)
+++ code/branches/FICN/src/orxonox/objects/Mesh.cc	(revision 576)
@@ -0,0 +1,32 @@
+#include <sstream>
+
+#include "Mesh.h"
+#include "../orxonox.h"
+
+namespace orxonox
+{
+    unsigned int Mesh::meshCounter_s = 0;
+
+    Mesh::Mesh()
+    {
+        this->entity_ = 0;
+    }
+
+    Mesh::Mesh(const std::string& file)
+    {
+        std::cout << "blu_1\n";
+        std::ostringstream name;
+        std::cout << "blu_2\n";
+        name << (Mesh::meshCounter_s++);
+        std::cout << "blu_3\n";
+        std::cout << ("Mesh" + name.str()) << std::endl;
+        this->entity_ = Orxonox::getSingleton()->getSceneManager()->createEntity("Mesh" + name.str(), file);
+        std::cout << "blu_4\n";
+    }
+
+    Mesh::~Mesh()
+    {
+        if (this->entity_)
+            Orxonox::getSingleton()->getSceneManager()->destroyEntity(this->entity_);
+    }
+}
Index: code/branches/FICN/src/orxonox/objects/Mesh.h
===================================================================
--- code/branches/FICN/src/orxonox/objects/Mesh.h	(revision 576)
+++ code/branches/FICN/src/orxonox/objects/Mesh.h	(revision 576)
@@ -0,0 +1,25 @@
+#include <string>
+
+#include "OgreEntity.h"
+
+#ifndef _Mesh_H__
+#define _Mesh_H__
+
+namespace orxonox
+{
+    class Mesh
+    {
+        public:
+            Mesh();
+            Mesh(const std::string& file);
+            ~Mesh();
+            inline Ogre::Entity* getEntity()
+                { return this->entity_; }
+
+        private:
+            static unsigned int meshCounter_s;
+            Ogre::Entity* entity_;
+    };
+}
+
+#endif
Index: code/branches/FICN/src/orxonox/objects/Model.cc
===================================================================
--- code/branches/FICN/src/orxonox/objects/Model.cc	(revision 575)
+++ code/branches/FICN/src/orxonox/objects/Model.cc	(revision 576)
@@ -0,0 +1,76 @@
+#include <string>
+
+#include "Model.h"
+#include "../core/CoreIncludes.h"
+#include "../orxonox.h"
+#include "../../tinyxml/tinyxml.h"
+#include "../../misc/Tokenizer.h"
+#include "../../misc/String2Number.h"
+
+namespace orxonox
+{
+    CreateFactory(Model);
+
+    Model::Model()
+    {
+        RegisterObject(Model);
+    }
+
+    Model::~Model()
+    {
+    }
+
+    void Model::loadParams(TiXmlElement* xmlElem)
+    {
+        std::cout << "1\n";
+    	if (xmlElem->Attribute("position"))
+    	{
+        std::cout << "2\n";
+	    	std::vector<std::string> pos = tokenize(xmlElem->Attribute("position"),",");
+	    	float x, y, z;
+    	 	String2Number<float>(x, pos[0]);
+	    	String2Number<float>(y, pos[1]);
+	    	String2Number<float>(z, pos[2]);
+	    	this->setPosition(x, y, z);
+    	}
+
+        std::cout << "3\n";
+    	if (xmlElem->Attribute("direction"))
+    	{
+        std::cout << "4\n";
+	    	std::vector<std::string> pos = tokenize(xmlElem->Attribute("direction"),",");
+	    	float x, y, z;
+    	 	String2Number<float>(x, pos[0]);
+	    	String2Number<float>(y, pos[1]);
+	    	String2Number<float>(z, pos[2]);
+	    	this->setDirection(x, y, z);
+    	}
+
+        std::cout << "5\n";
+    	if (xmlElem->Attribute("mesh"))
+    	{
+        std::cout << "6_1\n";
+    		std::string src = xmlElem->Attribute("mesh");
+        std::cout << "6_2\n";
+        std::cout << this->mesh_.getEntity() << std::endl;
+    		this->mesh_ = Mesh(src);
+        std::cout << "6_3\n";
+        std::cout << this->mesh_.getEntity() << std::endl;
+		    this->attachObject(this->mesh_.getEntity());
+        std::cout << "6_4\n";
+    	}
+
+        std::cout << "7\n";
+    	if (xmlElem->Attribute("scale"))
+    	{
+        std::cout << "8\n";
+		    std::string scaleStr = xmlElem->Attribute("scale");
+		    float scale;
+		    String2Number<float>(scale, scaleStr);
+		    this->setScale(scale);
+    	}
+        std::cout << "9\n";
+
+        COUT(4) << "Loader: Created model" << std::endl;
+    }
+}
Index: code/branches/FICN/src/orxonox/objects/Model.h
===================================================================
--- code/branches/FICN/src/orxonox/objects/Model.h	(revision 575)
+++ code/branches/FICN/src/orxonox/objects/Model.h	(revision 576)
@@ -0,0 +1,22 @@
+#ifndef _Model_H__
+#define _Model_H__
+
+#include "WorldEntity.h"
+#include "Mesh.h"
+#include "../../tinyxml/tinyxml.h"
+
+namespace orxonox
+{
+    class Model : public WorldEntity
+    {
+        public:
+            Model();
+            ~Model();
+            virtual void loadParams(TiXmlElement* xmlElem);
+
+        private:
+            Mesh mesh_;
+    };
+}
+
+#endif
Index: code/branches/FICN/src/orxonox/objects/WorldEntity.cc
===================================================================
--- code/branches/FICN/src/orxonox/objects/WorldEntity.cc	(revision 575)
+++ code/branches/FICN/src/orxonox/objects/WorldEntity.cc	(revision 576)
@@ -43,11 +43,15 @@
         RegisterObject(WorldEntity);
 
+        std::cout << "10_1\n";
         if (Orxonox::getSingleton()->getSceneManager())
         {
+        std::cout << "10_2\n";
             std::ostringstream name;
             name << (WorldEntity::worldEntityCounter_s++);
             this->setName("WorldEntity" + name.str());
             node_ = Orxonox::getSingleton()->getSceneManager()->getRootSceneNode()->createChildSceneNode(this->getName());
+            std::cout << "blubbbi: " << this->getName() << " .. " << this->node_ << std::endl;
         }
+        std::cout << "10_3\n";
 
         this->bStatic_ = true;
Index: code/branches/FICN/src/orxonox/objects/WorldEntity.h
===================================================================
--- code/branches/FICN/src/orxonox/objects/WorldEntity.h	(revision 575)
+++ code/branches/FICN/src/orxonox/objects/WorldEntity.h	(revision 576)
@@ -7,4 +7,5 @@
 #include "OgreSceneManager.h"
 #include "OgreSceneNode.h"
+#include "Mesh.h"
 #include "network/Synchronisable.h"
 
@@ -45,22 +46,38 @@
           { this->node_->roll(angle, relativeTo); }
 
+      inline void rotate(const Vector3 &axis, const Radian &angle, Ogre::Node::TransformSpace relativeTo=Ogre::Node::TS_LOCAL)
+        { this->node_->rotate(axis, angle, relativeTo); }
+      inline void setDirection(Real x, Real y, Real z, Ogre::Node::TransformSpace relativeTo=Ogre::Node::TS_LOCAL, const Vector3 &localDirectionVector=Vector3::NEGATIVE_UNIT_Z)
+        { this->node_->setDirection(x, y, z, relativeTo, localDirectionVector); }
+      inline void setDirection(const Vector3 &vec, Ogre::Node::TransformSpace relativeTo=Ogre::Node::TS_LOCAL, const Vector3 &localDirectionVector=Vector3::NEGATIVE_UNIT_Z)
+        { this->node_->setDirection(vec, relativeTo, localDirectionVector); }
+      inline void setOrientation(const Ogre::Quaternion quat)
+        { this->node_->setOrientation(quat); }
+      inline void lookAt(const Vector3 &targetPoint, Ogre::Node::TransformSpace relativeTo, const Vector3 &localDirectionVector=Vector3::NEGATIVE_UNIT_Z)
+        { this->node_->lookAt(targetPoint, relativeTo, localDirectionVector); }
 
-      inline void rotate(const Vector3 &axis, const Radian &angle, Ogre::Node::TransformSpace relativeTo=Ogre::Node::TS_LOCAL)
-          { this->node_->rotate(axis, angle, relativeTo); }
-      inline void setDirection(Real x, Real y, Real z, Ogre::Node::TransformSpace relativeTo=Ogre::Node::TS_LOCAL, const Vector3 &localDirectionVector=Vector3::NEGATIVE_UNIT_Z)
-          { this->node_->setDirection(x, y, z, relativeTo, localDirectionVector); }
-      inline void setDirection(const Vector3 &vec, Ogre::Node::TransformSpace relativeTo=Ogre::Node::TS_LOCAL, const Vector3 &localDirectionVector=Vector3::NEGATIVE_UNIT_Z)
-          { this->node_->setDirection(vec, relativeTo, localDirectionVector); }
-      inline void setOrientation(const Ogre::Quaternion quat)
-          { this->node_->setOrientation(quat); }
-      inline void lookAt(const Vector3 &targetPoint, Ogre::Node::TransformSpace relativeTo, const Vector3 &localDirectionVector=Vector3::NEGATIVE_UNIT_Z)
-          { this->node_->lookAt(targetPoint, relativeTo, localDirectionVector); }
+      inline void setScale(const Vector3 &scale)
+        { this->node_->setScale(scale); }
+      inline void setScale(Real x, Real y, Real z)
+        { this->node_->setScale(x, y, z); }
+      inline void setScale(Real scale)
+        { this->node_->setScale(scale, scale, scale); }
+      inline const Vector3& getScale(void) const
+        { return this->node_->getScale(); }
+      inline void scale(const Vector3 &scale)
+        { this->node_->scale(scale); }
+      inline void scale(Real x, Real y, Real z)
+        { this->node_->scale(x, y, z); }
+      inline void scale(Real scale)
+        { this->node_->scale(scale, scale, scale); }
 
       inline void attachObject(Ogre::MovableObject *obj)
-          { this->node_->attachObject(obj); }
+        { std::cout << "gux_1" << this->node_ << "\n"; this->node_->attachObject(obj); std::cout << "gux_2\n"; }
+      inline void attachObject(Mesh &mesh)
+        { std::cout << "gux_3" << this->node_ << "\n"; this->node_->attachObject((Ogre::MovableObject*)(mesh.getEntity())); std::cout << "gux_4\n"; }
       inline void detachObject(Ogre::MovableObject *obj)
-          { this->node_->detachObject(obj); }
+        { this->node_->detachObject(obj); }
       inline void detachAllObjects()
-          { this->node_->detachAllObjects(); }
+        { this->node_->detachAllObjects(); }
 
       inline void setVelocity(const Vector3& velocity)
@@ -100,8 +117,8 @@
       inline const Ogre::Quaternion& getOrientation()
           { return this->node_->getOrientation(); }
-      
+
     protected:
       void registerAllVariables();
-      
+
     private:
       Ogre::SceneNode* node_;
Index: code/branches/FICN/src/orxonox/orxonox.cc
===================================================================
--- code/branches/FICN/src/orxonox/orxonox.cc	(revision 575)
+++ code/branches/FICN/src/orxonox/orxonox.cc	(revision 576)
@@ -70,4 +70,10 @@
 #include "../network/NetworkFrameListener.h"
 
+#ifdef WIN32
+#include <windows.h>
+#define usleep(x) Sleep((x)/1000)
+#else
+#include <unistd.h>
+#endif
 
 namespace orxonox
@@ -339,9 +345,9 @@
     startRenderLoop();
   }
-  
+
   void Orxonox::standalone(){
-    
-    
-    
+
+
+
   }
 
