Index: branches/new_class_id/src/lib/graphics/importer/Makefile.am
===================================================================
--- branches/new_class_id/src/lib/graphics/importer/Makefile.am	(revision 9830)
+++ branches/new_class_id/src/lib/graphics/importer/Makefile.am	(revision 9831)
@@ -13,4 +13,5 @@
 		static_model_data.cc \
 		objModel.cc \
+		resource_obj.cc \
 		primitive_model.cc \
 		height_map.cc \
@@ -60,4 +61,5 @@
 		static_model_data.h \
 		objModel.h \
+		resource_obj.h \
 		primitive_model.h \
 		anorms.h \
Index: branches/new_class_id/src/lib/graphics/importer/objModel.cc
===================================================================
--- branches/new_class_id/src/lib/graphics/importer/objModel.cc	(revision 9830)
+++ branches/new_class_id/src/lib/graphics/importer/objModel.cc	(revision 9831)
@@ -18,7 +18,5 @@
 #include "objModel.h"
 
-#include <stdio.h>
 #include <string.h>
-#include <stdlib.h>
 
 #define PARSELINELENGTH 8192
Index: branches/new_class_id/src/lib/graphics/importer/objModel.h
===================================================================
--- branches/new_class_id/src/lib/graphics/importer/objModel.h	(revision 9830)
+++ branches/new_class_id/src/lib/graphics/importer/objModel.h	(revision 9831)
@@ -13,24 +13,24 @@
 {
   ObjectListDeclaration(OBJModel);
-  public:
-   OBJModel(const std::string& fileName, float scaling = 1.0);
+public:
+  OBJModel(const std::string& fileName, float scaling = 1.0);
   virtual ~OBJModel();
 
- private:
+private:
   ///// readin /////
-   bool importFile (const std::string& fileName);
-   bool readFromObjFile (const std::string& fileName);
-   bool readMtlLib (const std::string& matFile);
+  bool importFile (const std::string& fileName);
+  bool readFromObjFile (const std::string& fileName);
+  bool readMtlLib (const std::string& matFile);
 
-  private:
-   void setIllum (Material* material, const char* illum);
-   void setDiffuse (Material* material, const char* rgb);
-   void setAmbient (Material* material, const char* rgb);
-   void setSpecular (Material* material, const char* rgb);
-   void setShininess (Material* material, const char* shini);
-   void setTransparency (Material* material, const char* trans);
+private:
+  void setIllum (Material* material, const char* illum);
+  void setDiffuse (Material* material, const char* rgb);
+  void setAmbient (Material* material, const char* rgb);
+  void setSpecular (Material* material, const char* rgb);
+  void setShininess (Material* material, const char* shini);
+  void setTransparency (Material* material, const char* trans);
 
- private:
-   std::string       objPath;     //!< The Path where the obj and mtl-file are located.
+private:
+  std::string       objPath;     //!< The Path where the obj and mtl-file are located.
 };
 
Index: branches/new_class_id/src/lib/graphics/importer/resource_obj.cc
===================================================================
--- branches/new_class_id/src/lib/graphics/importer/resource_obj.cc	(revision 9831)
+++ branches/new_class_id/src/lib/graphics/importer/resource_obj.cc	(revision 9831)
@@ -0,0 +1,52 @@
+
+#include "resource_obj.h"
+#include "substring.h"
+#include "multi_type.h"
+#include "debug.h"
+
+
+ResourceOBJ::ResourceOBJ(const std::string& imageName, float scaling)
+    : NewResource(&ResourceOBJ::type)
+{
+  Resources::StorePointer* ptr = this->acquireResource(imageName + ',' + MultiType(scaling).getString());
+
+  if (ptr)
+  {
+    PRINTF(5)("FOUND OBJ: %s\n", imageName.c_str());
+    this->acquireData(static_cast<ResourceOBJ::OBJResourcePointer*>(ptr)->ptr());
+  }
+  else
+  {
+    PRINTF(5)("NOT FOUND OBJ: %s\n", imageName.c_str());
+    std::string fileName = this->NewResource::locateFile(imageName);
+    this->acquireData(OBJModel(fileName, scaling).dataPointer());
+    this->NewResource::addResource(new ResourceOBJ::OBJResourcePointer(imageName + ',' + MultiType(scaling).getString(), Resources::KeepLevel(0), this->StaticModel::dataPointer()));
+  }
+}
+
+ResourceOBJ ResourceOBJ::createFromString(const std::string& loadString)
+{
+  SubString loadValues(loadString, ',');
+  std::string imageName;
+  float scaling = 1.0f;
+  if (loadValues.size() > 0)
+    imageName = loadValues[0];
+  if (loadValues.size() > 1)
+    scaling = (GLenum)MultiType(loadValues[2]).getFloat();
+
+  return ResourceOBJ(imageName, scaling);
+}
+
+
+
+Resources::tType<ResourceOBJ> ResourceOBJ::type("OBJ");
+
+
+
+
+
+ResourceOBJ::OBJResourcePointer::OBJResourcePointer(const std::string& loadString, const Resources::KeepLevel& keepLevel, const StaticModelData::Pointer& data)
+    : Resources::StorePointer(loadString, keepLevel) , pointer(data)
+{}
+
+
Index: branches/new_class_id/src/lib/graphics/importer/resource_obj.h
===================================================================
--- branches/new_class_id/src/lib/graphics/importer/resource_obj.h	(revision 9831)
+++ branches/new_class_id/src/lib/graphics/importer/resource_obj.h	(revision 9831)
@@ -0,0 +1,34 @@
+/*!
+ * @file resource_obj.h
+ * @brief Contains the ResourceOBJ class, that handles the Resource-specific loading part of the OBJ.
+ *
+ */
+
+#ifndef _RESOURCE_OBJ_H
+#define _RESOURCE_OBJ_H
+
+#include "util/loading/resource.h"
+#include "objModel.h"
+
+class ResourceOBJ : public StaticModel, public Resources::NewResource
+{
+public:
+  ResourceOBJ(const std::string& imageName, float scaling = 1.0f);
+  static ResourceOBJ createFromString(const std::string& loadString);
+
+private:
+class OBJResourcePointer : public Resources::StorePointer
+  {
+  public:
+    OBJResourcePointer(const std::string& loadString, const Resources::KeepLevel& keepLevel, const StaticModelData::Pointer& data);
+    inline const StaticModelData::Pointer& ptr() const { return pointer; }
+private:
+    StaticModelData::Pointer pointer;
+  };
+
+private:
+  static Resources::tType<ResourceOBJ> type;
+};
+
+
+#endif /* _RESOURCE_OBJ_H */
Index: branches/new_class_id/src/lib/graphics/importer/resource_texture.cc
===================================================================
--- branches/new_class_id/src/lib/graphics/importer/resource_texture.cc	(revision 9830)
+++ branches/new_class_id/src/lib/graphics/importer/resource_texture.cc	(revision 9831)
@@ -13,10 +13,10 @@
   if (ptr)
   {
-    PRINTF(5)("FOUNT TEXTURE: %s\n", imageName.c_str());
+    PRINTF(5)("FOUND TEXTURE: %s\n", imageName.c_str());
     this->acquireData(static_cast<ResourceTexture::TextureResourcePointer*>(ptr)->ptr());
   }
   else
   {
-    PRINTF(5)("NOT FOUNT TEXTURE: %s\n", imageName.c_str());
+    PRINTF(5)("NOT FOUND TEXTURE: %s\n", imageName.c_str());
     std::string fileName = this->NewResource::locateFile(imageName);
     this->Texture::loadImage(fileName, target);
Index: branches/new_class_id/src/lib/graphics/importer/static_model.h
===================================================================
--- branches/new_class_id/src/lib/graphics/importer/static_model.h	(revision 9830)
+++ branches/new_class_id/src/lib/graphics/importer/static_model.h	(revision 9831)
@@ -28,4 +28,6 @@
   virtual ~StaticModel();
 
+  StaticModel& operator=(const StaticModel& model) { this->data = model.data; return *this; };
+
   virtual void draw() const { data->draw(); };
   void draw(int groupNumber) const { data->draw(groupNumber); };
@@ -56,4 +58,7 @@
   void finalize();
 
+  void acquireData(const StaticModelData::Pointer& data) { this->data = data; };
+  const StaticModelData::Pointer& dataPointer() const { return this->data; };
+
   inline void setScaleFactor(float scaleFactor) { this->data->setScaleFactor(scaleFactor); };
   float getScaleFactor() const { return data->getScaleFactor(); }
