Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

source: orxonox.OLD/orxonox/trunk/src/player.cc @ 3410

Last change on this file since 3410 was 3396, checked in by bensch, 20 years ago

orxonox/trunk: splitted obj-loader out of the model-class: this will enable different kinds of Filetypes to be included with the importer.
Althought there is a name-field error, the Model gets loaded and unloaded as good as previously

File size: 3.8 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: Christian Meyer
16*/
17
18#include "player.h"
19#include "stdincl.h"
20#include "collision.h"
21#include "importer/objModel.h"
22
23using namespace std;
24
25
26Player::Player(bool isFree) : WorldEntity(isFree)
27{
28
29  this->model = new OBJModel("../data/models/reaplow.obj");
30  /*
31  objectList = glGenLists(1);
32  glNewList (objectList, GL_COMPILE);
33
34  glBegin(GL_TRIANGLES);
35  glColor3f(1,1,1);
36  glVertex3f(0,0,0.5);
37  glVertex3f(-0.5,0,-1);
38  glVertex3f(0.5,0,-1);
39
40  glVertex3f(0,0,0.5);
41  glVertex3f(0,0.5,-1);
42  glVertex3f(0,-0.5,-1);
43  glEnd();
44   
45  glBegin(GL_QUADS);
46  glColor3f(0,0,1);
47  glVertex3f(0.5,0.5,-1);
48  glVertex3f(0.5,-0.5,-1);
49  glVertex3f(-0.5,-0.5,-1);
50  glVertex3f(-0.5,0.5,-1);
51  glEnd();
52 
53  glEndList ();
54  */
55}
56
57Player::~Player ()
58{
59  delete this->model;
60}
61
62void Player::postSpawn ()
63{
64  travelSpeed = 15.0;
65  velocity = Vector();
66  bUp = bDown = bLeft = bRight = bAscend = bDescend = false;
67  bFire = false;
68  acceleration = 10.0;
69  setCollision(new CollisionCluster(1.0, Vector(0,0,0)));
70}
71
72void Player::tick (float time)
73{
74  // movement
75  this->move (time);
76}
77
78void Player::hit (WorldEntity* weapon, Vector loc)
79{
80}
81
82void Player::destroy ()
83{
84}
85
86void Player::collide (WorldEntity* other, Uint32 ownhitflags, Uint32 otherhitflags)
87{
88}
89
90void Player::command (Command* cmd)
91{
92  //printf("Player|recieved command [%s]\n", cmd->cmd);
93  if( !strcmp( cmd->cmd, "up")) bUp = !cmd->bUp;
94  else if( !strcmp( cmd->cmd, "down")) bDown = !cmd->bUp;
95  else if( !strcmp( cmd->cmd, "left")) bLeft = !cmd->bUp;
96  else if( !strcmp( cmd->cmd, "right")) bRight = !cmd->bUp;
97  else if( !strcmp( cmd->cmd, "fire")) bFire = !cmd->bUp;
98}
99
100void Player::draw ()
101{ 
102  glMatrixMode(GL_MODELVIEW);
103  glLoadIdentity();
104  float matrix[4][4];
105 
106  /* translate */
107  glTranslatef (this->getAbsCoor ().x, 
108                this->getAbsCoor ().y, 
109                this->getAbsCoor ().z);
110  /* rotate */
111  this->getAbsDir ().matrix (matrix);
112  glMultMatrixf((float*)matrix);
113 
114  glMatrixMode(GL_MODELVIEW);
115  this->model->draw();
116  // glCallList(objectList);
117}
118
119
120/*PN
121void Player::getLookat(Location* locbuf)
122{
123  *locbuf = *getLocation();
124  //locbuf->dist += 5.0;
125}
126*/
127
128void Player::leftWorld ()
129{
130}
131
132void Player::move (float time)
133{
134  Vector accel(0.0, 0.0, 0.0);
135  /* FIXME: calculating the direction and orthDirection every timeSlice is redundant! save it somewhere */
136  //Placement *pos = getPlacement();
137 
138  /* calculate the direction in which the craft is heading  */
139  Vector direction (1.0, 0.0, 0.0);
140  //direction = this->absDirection.apply (direction);
141  Vector orthDirection (0.0, 0.0, 1.0);
142  //orthDirection = orthDirection.cross (direction);
143
144  if( bUp) { accel = accel+(direction*acceleration); }
145  if( bDown) { accel = accel-(direction*acceleration); }
146  if( bLeft ) { accel = accel - (orthDirection*acceleration); }
147  if( bRight ) { accel = accel + (orthDirection*acceleration); }
148  if( bAscend ) { /* not yet implemented but just: (0,0,1)*acceleration */}
149  if( bDescend) {/* FIXME */} /* \todo up and down player movement */
150
151  //Location* l = getLocation();
152 
153  // r(t) = r(0) + v(0)*t + 1/2*a*t^2
154  // r = position
155  // v = velocity
156  // a = acceleration
157
158  /* this the base-speed of the player: determines how fast and how the player follows the track*/
159  //l->dist = l->dist + travelSpeed * time;
160 
161  Vector* shift = new Vector (this->travelSpeed * time, 0, 0);
162  this->shiftCoor (shift);
163 
164  /* this updates the player position on the track - user interaction */
165  //l->pos = l->pos + accel*time;
166  Vector move = accel * time;
167  this->shiftCoor (&move);
168}
Note: See TracBrowser for help on using the repository browser.