Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

source: orxonox.OLD/branches/presentation/src/world_entities/npcs/npc_test.cc @ 9161

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

new NPC

File size: 2.4 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#define DEBUG_SPECIAL_MODULE DEBUG_MODULE_WORLD_ENTITY
18
19
20#include "npc_test.h"
21#include "obb_tree.h"
22
23#include "shader.h"
24#include "state.h"
25#include "debug.h"
26
27#include "loading/factory.h"
28#include "loading/load_param.h"
29
30CREATE_FACTORY(NPC2, CL_NPC_TEST2);
31
32
33NPC2::NPC2(const TiXmlElement* root)
34  : NPC(NULL)
35{
36  this->setClassID(CL_NPC_TEST2, "NPC2");
37
38  if ((float)rand()/RAND_MAX > .5f)
39    this->loadModel("models/ships/bolido.obj", 3);
40  else
41    this->loadModel("models/ships/gobblin.obj", 3);
42
43  this->shader = NULL;
44  if (likely(Shader::checkShaderAbility()))
45    this->shader = Shader::getShader("shaders/toon.vert", "shaders/toon.frag");
46
47  this->obj = gluNewQuadric();
48
49  this->randomRotAxis = VECTOR_RAND(1);
50
51  if (root != NULL)
52    this->loadParams(root);
53}
54
55
56NPC2::~NPC2 ()
57{
58  if (this->shader)
59    Shader::unload(this->shader);
60  gluDeleteQuadric(this->obj);
61}
62
63
64void NPC2::loadParams(const TiXmlElement* root)
65{
66  NPC::loadParams(root);
67
68}
69
70
71
72/**
73 *  the entity is drawn onto the screen with this function
74 *
75 * This is a central function of an entity: call it to let the entity painted to the screen.
76 * Just override this function with whatever you want to be drawn.
77 */
78void NPC2::draw() const
79{
80  glMatrixMode(GL_MODELVIEW);
81  glPushMatrix();
82  float matrix[4][4];
83
84  /* translate */
85  glTranslatef (this->getAbsCoor ().x,
86                this->getAbsCoor ().y,
87                this->getAbsCoor ().z);
88  /* rotate */
89  this->getAbsDir ().matrix (matrix);
90  glMultMatrixf((float*)matrix);
91
92  if (this->shader != NULL && this->shader != Shader::getActiveShader())
93    shader->activateShader();
94  gluSphere(this->obj, 3, 10, 10);
95  shader->deactivateShader();
96
97
98/*  if (this->model)
99    this->model->draw();*/
100  glPopMatrix();
101}
102
103
104void NPC2::tick(float dt)
105{
106//  Vector direction = (State::getCameraTarget()->getAbsCoor() - this->getAbsCoor());
107
108  //if (directin.len() < 100)
109//  this->shiftCoor(direction *dt * 5 * exp(-direction.len() / 30.0));
110  this->shiftDir(Quaternion(dt, this->randomRotAxis));
111
112}
113
114
115
Note: See TracBrowser for help on using the repository browser.