Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

source: orxonox.OLD/orxonox/trunk/src/world_entities/satellite.cc @ 4773

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

orxonox/trunk: setClassID implemented in all files

File size: 2.0 KB
Line 
1
2
3/*
4   orxonox - the future of 3D-vertical-scrollers
5
6   Copyright (C) 2004 orx
7
8   This program is free software; you can redistribute it and/or modify
9   it under the terms of the GNU General Public License as published by
10   the Free Software Foundation; either version 2, or (at your option)
11   any later version.
12
13   ### File Specific:
14   main-programmer: Patrick Boenzli
15   co-programmer:
16*/
17
18
19#include "satellite.h"
20
21#include "objModel.h"
22#include "list.h"
23#include "vector.h"
24
25
26using namespace std;
27
28/**
29   \brief standard constructor
30*/
31Satellite::Satellite (Vector axis, float speed)
32{
33  this->setClassID(CL_SATELLITE, "Satellite");
34
35  this->model = (Model*) ResourceManager::getInstance()->load("cube", RP_LEVEL);
36  this->speed = speed;
37  this->axis = new Vector();
38  *this->axis = axis;
39}
40
41/**
42   \brief standard destructor
43*/
44Satellite::~Satellite ()
45{
46  // if( collisioncluster != NULL) delete collisioncluster;
47  if (this->model)
48    ResourceManager::getInstance()->unload(this->model);
49}
50
51
52/**
53   \brief this method is called every frame
54   \param time: the time in seconds that has passed since the last tick
55
56   Handle all stuff that should update with time inside this method (movement, animation, etc.)
57*/
58void Satellite::tick(float time)
59{
60  float w = this->speed * M_PI;
61
62  Quaternion rotation(w * time, *this->axis);
63  Quaternion v = this->getRelDir();
64
65  this->setRelDir(v * rotation);
66}
67
68
69/**
70   \brief the entity is drawn onto the screen with this function
71
72   This is a central function of an entity: call it to let the entity painted to the screen. Just override this function with whatever you want to be drawn.
73*/
74void Satellite::draw()
75{
76  glMatrixMode(GL_MODELVIEW);
77  glPushMatrix();
78  float matrix[4][4];
79
80  /* translate */
81  glTranslatef (this->getAbsCoor ().x,
82                this->getAbsCoor ().y,
83                this->getAbsCoor ().z);
84  /* rotate */
85  this->getAbsDir ().matrix (matrix);
86  glMultMatrixf((float*)matrix);
87
88  this->model->draw();
89  glPopMatrix();
90
91}
92
Note: See TracBrowser for help on using the repository browser.