Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

source: orxonox.OLD/branches/network/src/world_entities/skysphere.cc @ 5577

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

orxonox/trunk: all the WorldEntities now have a const function to draw themselves

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  gluDeleteQuadric(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() const
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.