Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

source: orxonox.OLD/branches/inputdevice/src/world_entities/environments/skysphere.cc @ 10630

Last change on this file since 10630 was 10618, checked in by bknecht, 18 years ago

merged cleanup into trunk (only improvements)

File size: 2.7 KB
Line 
1/*
2   orxonox - the future of 3D-vertical-scrollers
3
4   Copyright (C) 2004 orx
5
6   This program is free software; you can redistribute it and/or modify
7   it under the terms of the GNU General Public License as published by
8   the Free Software Foundation; either version 2, or (at your option)
9   any later version.
10
11   ### File Specific:
12   main-programmer: David Gruetter
13   co-programmer: Benjamin Grauer
14
15   Created by Dave: this file is actually quite similar to player.cc and so is
16   skybox.h similar to player.h
17   With that said, things should be clear:)
18
19   Edited:
20   Bensch: more constructors, changeability, comments...
21   Patrick: giving it the common orxonox style, not much to do... good work Dave!
22
23*/
24
25#define DEBUG_SPECIAL_MODULE DEBUG_MODULE_WORLD_ENTITY
26
27
28#include "skysphere.h"
29
30#include "material.h"
31#include "debug.h"
32
33
34ObjectListDefinition(Skysphere);
35
36/**
37 *  Constructs a SkySphere and takes fileName as a map.
38 * @param fileName the file to take as input for the skysphere
39*/
40Skysphere::Skysphere(char* fileName)
41{
42  this->registerObject(this, Skysphere::_objectList);
43  this->toList(OM_BACKGROUND);
44  if (fileName == NULL)
45    this->initialize("textures/sky-replace.jpg");
46  else
47    this->initialize(fileName);
48}
49
50
51/**
52 *  default destructor
53*/
54Skysphere::~Skysphere()
55{
56  PRINTF(3)("Deleting the SkySphere\n");
57  delete this->skyMaterial;
58  gluDeleteQuadric(this->sphereObj);
59}
60
61/**
62 *  initializes the Skysphere.
63 * @param fileName the file to take as input for the skysphere
64*/
65void Skysphere::initialize(char* fileName)
66{
67  PRINTF(1)("initializing the Skysphere with Material %s.\n", fileName);
68  this->sphereObj = gluNewQuadric();
69  this->setParentMode(PNODE_MOVEMENT);
70
71  gluQuadricTexture(this->sphereObj, GL_TRUE);
72  this->setRadius(1900.0);
73
74  this->skyMaterial = new Material("Sky");
75  this->setTexture(fileName);
76  this->skyMaterial->setIllum(3);
77  this->skyMaterial->setAmbient(1.0, 1.0, 1.0);
78}
79
80
81/**
82 *  Defines which texture should be loaded onto the skysphere.
83 * @param fileName The filename of the Texture
84*/
85void Skysphere::setTexture(char* fileName)
86{
87  this->skyMaterial->setDiffuseMap(fileName);
88}
89
90
91/**
92 *  draws the Skysphere
93
94   This part is normally precessed in the "Painting Phase".
95*/
96void Skysphere::draw() const
97{
98  glMatrixMode(GL_MODELVIEW);
99  glPushMatrix();
100
101  Vector r = this->getAbsCoor();
102  glTranslatef(r.x, r.y, r.z);
103
104  //glRotatef(-30, 1, 0, 0);
105  //glRotatef(95.0f, 0.0f, 0.0f, 1.0f);
106  //glRotatef(-250.0f, 0.0, 1.0f, 0.0f);
107
108  skyMaterial->select();
109  gluSphere(this->sphereObj, this->sphereRadius, 20, 20);
110  glPopMatrix();
111}
112
113
114/**
115 *  sets the Radius of the Sphere.
116 * @param radius The Radius of The Sphere
117*/
118void Skysphere::setRadius(float radius)
119{
120  this->sphereRadius = radius;
121}
Note: See TracBrowser for help on using the repository browser.