Index: /orxonox/trunk/src/Makefile.am
===================================================================
--- /orxonox/trunk/src/Makefile.am	(revision 3418)
+++ /orxonox/trunk/src/Makefile.am	(revision 3419)
@@ -37,5 +37,6 @@
 		 matrix.cc \
 		 curve.cc \
-		 glmenu_imagescreen.cc
+		 glmenu_imagescreen.cc \
+		 skysphere.cc
 
 
@@ -79,5 +80,6 @@
 		 curve.h \
 		 glmenu_imagescreen.h \
-		 debug.h
+		 debug.h \
+		 skysphere.h
 
 
Index: /orxonox/trunk/src/Makefile.in
===================================================================
--- /orxonox/trunk/src/Makefile.in	(revision 3418)
+++ /orxonox/trunk/src/Makefile.in	(revision 3419)
@@ -64,5 +64,5 @@
 	base_object.$(OBJEXT) helper_parent.$(OBJEXT) \
 	track_manager.$(OBJEXT) matrix.$(OBJEXT) curve.$(OBJEXT) \
-	glmenu_imagescreen.$(OBJEXT)
+	glmenu_imagescreen.$(OBJEXT) skysphere.$(OBJEXT)
 orxonox_OBJECTS = $(am_orxonox_OBJECTS)
 orxonox_LDADD = $(LDADD)
@@ -85,8 +85,9 @@
 @AMDEP_TRUE@	./$(DEPDIR)/null_parent.Po ./$(DEPDIR)/objModel.Po \
 @AMDEP_TRUE@	./$(DEPDIR)/orxonox.Po ./$(DEPDIR)/p_node.Po \
-@AMDEP_TRUE@	./$(DEPDIR)/player.Po ./$(DEPDIR)/story_entity.Po \
-@AMDEP_TRUE@	./$(DEPDIR)/texture.Po ./$(DEPDIR)/track.Po \
-@AMDEP_TRUE@	./$(DEPDIR)/track_manager.Po ./$(DEPDIR)/vector.Po \
-@AMDEP_TRUE@	./$(DEPDIR)/world.Po ./$(DEPDIR)/world_entity.Po
+@AMDEP_TRUE@	./$(DEPDIR)/player.Po ./$(DEPDIR)/skysphere.Po \
+@AMDEP_TRUE@	./$(DEPDIR)/story_entity.Po ./$(DEPDIR)/texture.Po \
+@AMDEP_TRUE@	./$(DEPDIR)/track.Po ./$(DEPDIR)/track_manager.Po \
+@AMDEP_TRUE@	./$(DEPDIR)/vector.Po ./$(DEPDIR)/world.Po \
+@AMDEP_TRUE@	./$(DEPDIR)/world_entity.Po
 CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
 	$(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS)
@@ -238,5 +239,6 @@
 		 matrix.cc \
 		 curve.cc \
-		 glmenu_imagescreen.cc
+		 glmenu_imagescreen.cc \
+		 skysphere.cc
 
 noinst_HEADERS = ability.h \
@@ -279,5 +281,6 @@
 		 curve.h \
 		 glmenu_imagescreen.h \
-		 debug.h
+		 debug.h \
+		 skysphere.h
 
 EXTRA_DIST = orxonox.conf
@@ -384,4 +387,5 @@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/p_node.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/player.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/skysphere.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/story_entity.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/texture.Po@am__quote@
Index: /orxonox/trunk/src/skysphere.cc
===================================================================
--- /orxonox/trunk/src/skysphere.cc	(revision 3419)
+++ /orxonox/trunk/src/skysphere.cc	(revision 3419)
@@ -0,0 +1,107 @@
+
+/* 
+   orxonox - the future of 3D-vertical-scrollers
+
+   Copyright (C) 2004 orx
+
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 2, or (at your option)
+   any later version.
+
+   ### File Specific:
+   main-programmer: David Gruetter
+   co-programmer: ...
+
+
+    Created by Dave, this file is actually quite similar to player.cc and so is 
+    skybox.h similar to player.h
+    With that said, things should be clear:)
+
+
+
+*/
+
+#include "importer/material.h"
+#include "skysphere.h"
+#include "stdincl.h"
+#include "vector.h"
+#include "world_entity.h"
+
+
+using namespace std;
+
+/**
+   \brief Standart Constructor
+*/
+Skysphere::Skysphere()
+{  
+  initialize("../data/pictures/sky-replace.jpg");
+}
+
+/**
+   \brief Constructs a SkySphere and takes fileName as a map.
+   \param fileName the file to take as input for the skysphere
+*/
+Skysphere::Skysphere(char* fileName)
+{
+  initialize(fileName);
+}
+
+/**
+   \brief default destructor
+*/
+Skysphere::~Skysphere()
+{
+  delete sky;
+  free(sphereObj);
+}
+
+/**
+   \brief initializes the Skysphere.
+   \param fileName the file to take as input for the skysphere
+*/
+void Skysphere::initialize(char* fileName)
+{
+  sphereObj=gluNewQuadric();
+  gluQuadricTexture(sphereObj,GL_TRUE);
+  sky = new Material("Sky");
+  sky->setDiffuseMap(fileName);
+  sky->setIllum(3);
+  sky->setAmbient(.5, .5, 1.0);
+}
+
+/**
+   \brief updates the position of the Skysphere
+   \param x the x-coordinate of the Center of the Sphere
+   \param y the y-coordinate of the Center of the Sphere
+   \param z the z-coordinate of the Center of the Sphere
+   
+   This is normally done in the update-phase of world, so the Skysphere is always centered at the Camera.
+*/
+void Skysphere::updatePosition(Vector sphereCenter)
+{
+  this->sphereCenter = sphereCenter;
+}
+
+/**
+   \brief draws the Skysphere
+   
+   This part is normally precessed in the "Painting Phase".
+*/
+
+void Skysphere::draw()
+{
+  sky->select();
+  glPushMatrix();
+  glTranslatef(this->sphereCenter.x,this->sphereCenter.y,this->sphereCenter.z);
+  
+  glRotatef(-30,1,0,0);
+  glRotatef(95.0f,0.0f,0.0f,1.0f);
+  glRotatef(-250.0f,0.0,1.0f,0.0f);
+  
+  gluSphere(sphereObj,200.0f,20,20);
+  glPopMatrix();
+}
+
+
Index: /orxonox/trunk/src/skysphere.h
===================================================================
--- /orxonox/trunk/src/skysphere.h	(revision 3419)
+++ /orxonox/trunk/src/skysphere.h	(revision 3419)
@@ -0,0 +1,44 @@
+/*! 
+    \file skysphere.h
+    \brief Definition of the Skysphere, that handles the Display of an atmosphere of orxonox.
+
+    A SkySphere is always centered at the current working Camera, and will only obey the cameras
+    movment but not its rotation.
+
+    \todo self-rotation
+    \todo handle reference to parent-object
+*/
+
+#ifndef _SKYSPHERE_H
+#define _SKYSPHERE_H
+
+/* INCLUDES */
+#include "p_node.h"
+
+/* FORWARD DEFINITION */
+class Material;
+class Vector;
+
+//! A Class to handle a SkySphere
+class Skysphere: public PNode 
+{
+ private: 
+  GLUquadricObj *sphereObj;
+  Vector sphereCenter; //!< Center of the Skysphere
+  Material *sky;       //!< A Material for the Sky
+  
+ public:
+  Skysphere();
+  Skysphere(char* fileName);
+  ~Skysphere();
+
+  void updatePosition(Vector sphereCenter);
+  void draw();
+
+ private:
+  void initialize(char* fileName);  
+};
+
+#endif
+
+
Index: /orxonox/trunk/src/world.cc
===================================================================
--- /orxonox/trunk/src/world.cc	(revision 3418)
+++ /orxonox/trunk/src/world.cc	(revision 3419)
@@ -28,4 +28,5 @@
 #include "helper_parent.h"
 #include "glmenu_imagescreen.h"
+#include "skysphere.h"
 
 using namespace std;
@@ -292,4 +293,7 @@
 	    this->localPlayer->addChild (this->localCamera);
 
+	    // Create SkySphere
+	    skySphere = new Skysphere("../data/pictures/sky-replace.jpg");
+
 	    /*monitor progress*/
 	    this->glmis->step();
@@ -631,4 +635,7 @@
   // draw debug coord system
   glCallList (objectList);
+
+  //! \todo skysphere is a WorldEntity and should be inside of the world-entity-list.
+  skySphere->draw();
 
 }
@@ -712,4 +719,5 @@
     }
 
+  skySphere->updatePosition(localCamera->absCoordinate);
   //for( int i = 0; i < tracklen; i++) track[i].tick (seconds);
 }
Index: /orxonox/trunk/src/world.h
===================================================================
--- /orxonox/trunk/src/world.h	(revision 3418)
+++ /orxonox/trunk/src/world.h	(revision 3419)
@@ -17,4 +17,5 @@
 class PNode;
 class GLMenuImageScreen;
+class Skysphere;
 
 //! The game environment
@@ -79,4 +80,5 @@
   GLuint objectList;
   SDL_Surface *loadImage;
+  Skysphere* skySphere;
 
   WorldEntity* localPlayer;
