Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

source: orxonox.OLD/trunk/src/world_entities/weapons/aiming_system.cc @ 9869

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

orxonox/trunk: merged the new_class_id branche back to the trunk.
merged with command:
svn merge https://svn.orxonox.net/orxonox/branches/new_class_id trunk -r9683:HEAD
no conflicts… puh..

File size: 3.1 KB
RevLine 
[9172]1  /*
[9156]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:
[9168]12   main-programmer: Patrick Boenzli
[9156]13   co-programmer: ...
14*/
15
16#define DEBUG_SPECIAL_MODULE DEBUG_MODULE_WEAPON
17
18#include "aiming_system.h"
19
20#include "util/loading/load_param.h"
[9160]21
[9156]22#include "state.h"
[9869]23#include "debug.h"
[9156]24
[9166]25#include "aabb.h"
[9168]26#include "obb_tree.h"
[9166]27
[9156]28
[9160]29
[9869]30ObjectListDefinition(AimingSystem);
[9156]31
32/**
33 * standart constructor
34 */
[9168]35AimingSystem::AimingSystem (WorldEntity* entity)
[9186]36  : WorldEntity()
[9156]37{
[9172]38  this->owner = entity;
39
[9156]40  this->init();
41}
42
43
44/**
45 * destroys a AimingSystem
46*/
47AimingSystem::~AimingSystem ()
48{}
49
50
51/**
52 * initializes the AimingSystem
53 */
54void AimingSystem::init()
55{
[9869]56  this->registerObject(this, AimingSystem::_objectList);
[9156]57  this->setName("AimingSystem");
[9166]58
[9172]59  //this->loadModel("models/guns/targeting_system_body2.obj");
60//   this->loadModel("models/ships/fighter.obj");
[9156]61
[9168]62  // registering default reactions:
[9188]63  this->unsubscribeReaction(CREngine::CR_OBJECT_DAMAGE);
[9869]64  this->subscribeReaction(CREngine::CR_OBJECT_DAMAGE, WorldEntity::staticClassID());
[9172]65
[9189]66  this->range = 1000.0f;
[9174]67  this->sideLength = 2.0f;
[9172]68
69  // new obb tree
70  this->obbTree = new OBBTree();
71  this->obbTree->createBox(Vector(0.0f, 0.0f, 0.0f), Vector(this->range, this->sideLength, this->sideLength));
[9174]72  this->setOBBTree(this->obbTree);
[9156]73}
74
75
76
[9160]77/**
78 * get back the nearest target
[9163]79 * @returns the nerest target
[9160]80 */
[9166]81WorldEntity* AimingSystem::getNearestTarget()
[9160]82{
83  if( this->selectionList.size() == 0)
84    return NULL;
[9156]85
[9172]86
[9168]87  WorldEntity* nearestEntity     = NULL;
[9163]88  float        distance          = 0.0f;
89  float        smalestDistance   = this->range * 5.0f;
[9160]90
[9163]91
[9406]92  for(unsigned int i = 0; i < this->selectionList.size(); i++)
[9160]93  {
[9163]94    distance = fabs((this->getAbsCoor() - this->selectionList[i]->getAbsCoor()).len());
95    if( distance < smalestDistance)
96    {
97      nearestEntity = this->selectionList[i];
98      smalestDistance = distance;
99    }
100  }
[9160]101
[9406]102  PRINTF(0)("entity: %s\n", nearestEntity->getClassCName());
[9168]103    return nearestEntity;
[9160]104}
105
106
[9156]107/**
[9160]108 * called when an object is "selected"
109 *  @param damage damage to be dealt
110 *  @param killer the entity
111 */
112void AimingSystem::hit(float damage, WorldEntity* killer)
113{
[9191]114  if( this->owner != killer)
[9192]115  {
[9406]116    //PRINTF(0)("real hit: %s\n", killer->getClassCName());
[9191]117    this->selectionList.push_back(killer);
[9192]118  }
[9160]119}
120
121
122
123/**
[9156]124 * ticks the AimingSystem
125 * @param dt the time to ticks
126 */
127void AimingSystem::tick(float dt)
128{
[9163]129
[9188]130
[9156]131}
132
133
134/**
135 * draws the crosshair
136 */
137void AimingSystem::draw() const
138{
[9174]139  WorldEntity::draw();
[9168]140
[9174]141//   glMatrixMode(GL_MODELVIEW);
142//   glPushMatrix();
143//
144//   /* translate */
145//   glTranslatef (this->getAbsCoor ().x,
146//                 this->getAbsCoor ().y,
147//                 this->getAbsCoor ().z);
148//   Vector tmpRot = this->getAbsDir().getSpacialAxis();
149//   glRotatef (this->getAbsDir().getSpacialAxisAngle(), tmpRot.x, tmpRot.y, tmpRot.z );
150//
151//   this->obbTree->drawBV(0, 1);
152//
153//   glPopMatrix();
[9172]154
[9156]155}
Note: See TracBrowser for help on using the repository browser.