Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

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

Last change on this file since 8317 was 7840, checked in by bensch, 18 years ago

trunk: Elements that are supposed to be on the Background stay there:

Changed:
Element2D: render from - to - LAYERS
Render2D: Renders from - to - LAYERS
GraphicsEngine: new function drawBackgroundElements
ObjectManager: new List OM_BACKGROUND
Skybox/sphere: in OM_LIST OM_BACKGROUND

@patrick: do you like it too ??

File size: 2.7 KB
RevLine 
[4597]1/*
[3416]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
[3421]13   co-programmer: Benjamin Grauer
[4597]14
15   Created by Dave: this file is actually quite similar to player.cc and so is
[3484]16   skybox.h similar to player.h
17   With that said, things should be clear:)
[4597]18
[3484]19   Edited:
20   Bensch: more constructors, changeability, comments...
21   Patrick: giving it the common orxonox style, not much to do... good work Dave!
[3416]22
[3411]23*/
24
[3590]25#define DEBUG_SPECIAL_MODULE DEBUG_MODULE_WORLD_ENTITY
26
[3608]27
[3411]28#include "skysphere.h"
29#include "stdincl.h"
[3608]30
31#include "material.h"
[5511]32#include "debug.h"
[3411]33
[3608]34
[3411]35using namespace std;
36
[3416]37/**
[4836]38 *  Constructs a SkySphere and takes fileName as a map.
39 * @param fileName the file to take as input for the skysphere
[3419]40*/
41Skysphere::Skysphere(char* fileName)
42{
[4597]43  this->setClassID(CL_SKYSPHERE, "SkySphere");
[7840]44  this->toList(OM_BACKGROUND);
[3763]45  if (fileName == NULL)
[4094]46    this->initialize("pictures/sky-replace.jpg");
[3763]47  else
48    this->initialize(fileName);
[3411]49}
50
[3507]51
[3416]52/**
[4836]53 *  default destructor
[3416]54*/
[3411]55Skysphere::~Skysphere()
56{
[3429]57  PRINTF(3)("Deleting the SkySphere\n");
[3544]58  delete this->skyMaterial;
[5313]59  gluDeleteQuadric(this->sphereObj);
[3419]60}
[3411]61
[3419]62/**
[4836]63 *  initializes the Skysphere.
64 * @param fileName the file to take as input for the skysphere
[3419]65*/
66void Skysphere::initialize(char* fileName)
67{
[3429]68  PRINTF(1)("initializing the Skysphere with Material %s.\n", fileName);
[3420]69  this->sphereObj = gluNewQuadric();
[4444]70  this->setParentMode(PNODE_MOVEMENT);
[3763]71
[3420]72  gluQuadricTexture(this->sphereObj, GL_TRUE);
[3566]73  this->setRadius(1900.0);
[3420]74
75  this->skyMaterial = new Material("Sky");
76  this->setTexture(fileName);
77  this->skyMaterial->setIllum(3);
[3422]78  this->skyMaterial->setAmbient(1.0, 1.0, 1.0);
[3411]79}
80
[3484]81
[3416]82/**
[4836]83 *  Defines which texture should be loaded onto the skysphere.
84 * @param fileName The filename of the Texture
[3420]85*/
86void Skysphere::setTexture(char* fileName)
87{
88  this->skyMaterial->setDiffuseMap(fileName);
89}
90
[3484]91
[3420]92/**
[4836]93 *  draws the Skysphere
[4597]94
[3416]95   This part is normally precessed in the "Painting Phase".
96*/
[5500]97void Skysphere::draw() const
[3411]98{
[6778]99  glMatrixMode(GL_MODELVIEW);
[3419]100  glPushMatrix();
[6778]101
[3607]102  Vector r = this->getAbsCoor();
103  glTranslatef(r.x, r.y, r.z);
[3502]104
[3507]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);
[4597]108
[3526]109  skyMaterial->select();
[3586]110  gluSphere(this->sphereObj, this->sphereRadius, 20, 20);
[3419]111  glPopMatrix();
[3411]112}
[3507]113
114
115/**
[4836]116 *  sets the Radius of the Sphere.
117 * @param radius The Radius of The Sphere
[3507]118*/
119void Skysphere::setRadius(float radius)
120{
121  this->sphereRadius = radius;
122}
Note: See TracBrowser for help on using the repository browser.