Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

source: orxonox.OLD/orxonox/trunk/src/world_entities/skysphere.cc @ 5068

Last change on this file since 5068 was 5068, checked in by bensch, 19 years ago

orxonox/trunk: added Shell Class to the utils.
This class should enable us to print all the output from orxonox directly onto the screen.
Also it should allow inputting some little Commands, so that we have more force over our little project :)

Also added a new Function to tList, removeLast, that is very quick in deleting the last element, as this is used inside of the Shell (deleting the Last Element is a major issue)

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#include "stdincl.h"
30
31#include "material.h"
32#include "vector.h"
33//#include "world_entity.h"
34
35
36using namespace std;
37
38/**
39 *  Constructs a SkySphere and takes fileName as a map.
40 * @param fileName the file to take as input for the skysphere
41*/
42Skysphere::Skysphere(char* fileName)
43{
44  this->setClassID(CL_SKYSPHERE, "SkySphere");
45
46  if (fileName == NULL)
47    this->initialize("pictures/sky-replace.jpg");
48  else
49    this->initialize(fileName);
50}
51
52
53/**
54 *  default destructor
55*/
56Skysphere::~Skysphere()
57{
58  PRINTF(3)("Deleting the SkySphere\n");
59  delete this->skyMaterial;
60  free(this->sphereObj);
61}
62
63/**
64 *  initializes the Skysphere.
65 * @param fileName the file to take as input for the skysphere
66*/
67void Skysphere::initialize(char* fileName)
68{
69  PRINTF(1)("initializing the Skysphere with Material %s.\n", fileName);
70  this->sphereObj = gluNewQuadric();
71  this->setParentMode(PNODE_MOVEMENT);
72
73  gluQuadricTexture(this->sphereObj, GL_TRUE);
74  this->setRadius(1900.0);
75
76  this->skyMaterial = new Material("Sky");
77  this->setTexture(fileName);
78  this->skyMaterial->setIllum(3);
79  this->skyMaterial->setAmbient(1.0, 1.0, 1.0);
80}
81
82
83/**
84 *  Defines which texture should be loaded onto the skysphere.
85 * @param fileName The filename of the Texture
86*/
87void Skysphere::setTexture(char* fileName)
88{
89  this->skyMaterial->setDiffuseMap(fileName);
90}
91
92
93/**
94 *  draws the Skysphere
95
96   This part is normally precessed in the "Painting Phase".
97*/
98void Skysphere::draw()
99{
100  glPushMatrix();
101  glMatrixMode(GL_MODELVIEW);
102  Vector r = this->getAbsCoor();
103  glTranslatef(r.x, r.y, r.z);
104
105  //glRotatef(-30, 1, 0, 0);
106  //glRotatef(95.0f, 0.0f, 0.0f, 1.0f);
107  //glRotatef(-250.0f, 0.0, 1.0f, 0.0f);
108
109  skyMaterial->select();
110  gluSphere(this->sphereObj, this->sphereRadius, 20, 20);
111  glPopMatrix();
112}
113
114
115/**
116 *  sets the Radius of the Sphere.
117 * @param radius The Radius of The Sphere
118*/
119void Skysphere::setRadius(float radius)
120{
121  this->sphereRadius = radius;
122}
Note: See TracBrowser for help on using the repository browser.