Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

source: code/branches/hud3/src/orxonox/hud/RadarOverlayElement.cc @ 1295

Last change on this file since 1295 was 1295, checked in by FelixSchulthess, 16 years ago

trying to make it tickable

File size: 3.3 KB
RevLine 
[1283]1/*
2*   ORXONOX - the hottest 3D action shooter ever to exist
3*
4*
5*   License notice:
6*
7*   This program is free software; you can redistribute it and/or
8*   modify it under the terms of the GNU General Public License
9*   as published by the Free Software Foundation; either version 2
10*   of the License, or (at your option) any later version.
11*
12*   This program is distributed in the hope that it will be useful,
13*   but WITHOUT ANY WARRANTY; without even the implied warranty of
14*   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15*   GNU General Public License for more details.
16*
17*   You should have received a copy of the GNU General Public License
18*   along with this program; if not, write to the Free Software
19*   Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
20*
21*   Author:
22*      Yuning Chai
23*   Co-authors:
24*      ...
25*
26*/
27
[1292]28/*      local coordinate system of space ship:
29
30                        y
31                        +   z
32                        |  +
33                        | /
34                        |/
35               x +------O
36*/
37
[1283]38#include <OgreOverlayManager.h>
39#include <OgreOverlayElement.h>
40#include <OgrePanelOverlayElement.h>
41#include <OgreStringConverter.h>
42#include "RadarOverlayElement.h"
43
44
45namespace orxonox
46{
47  using namespace Ogre;
48
[1295]49  RadarOverlayElement::RadarOverlayElement(const String& name):Ogre::PanelOverlayElement(name){
50    initialDir = Vector3(0.0, 0.0, 1.0);
51  }
[1283]52
53  RadarOverlayElement::~RadarOverlayElement(){}
54
55  void RadarOverlayElement::initialise(){
56    PanelOverlayElement::initialise();
57  }
58 
59  void RadarOverlayElement::initRadarOverlayElement(Real left, Real top, int dim, Ogre::OverlayContainer* container){
[1286]60
[1295]61    dirX_ = 0;  // direction of travel
[1286]62    dirY_ = 0;
[1295]63    dirZ_ = 1;
[1283]64   
[1295]65    ortX_ = 0;  // normal of ship
66    ortY_ = 1;
67    ortZ_ = 0;
[1283]68   
[1295]69    dX_ = 37;
[1286]70    dY_ = 0;
[1295]71    dZ_ = 0;
[1283]72   
[1286]73    alpha_ = acos((dirX_*dX_+dirY_*dY_+dirZ_*dZ_)/(sqrt(pow(dX_,2)+pow(dY_,2)+pow(dZ_,2))*sqrt(pow(dirX_,2)+pow(dirY_,2)+pow(dirZ_,2))));
74    beta_ = acos((ortX_*dX_+ortY_*dY_+ortZ_*dZ_)/(sqrt(pow(dX_,2)+pow(dY_,2)+pow(dZ_,2))*sqrt(pow(ortX_,2)+pow(ortY_,2)+pow(ortZ_,2))));
75    vecX_ = dirY_*ortZ_ - dirZ_*ortY_;
76    vecY_ = dirZ_*ortX_ - dirX_*ortZ_;
77    vecZ_ = dirX_*ortY_ - dirY_*ortX_;
[1283]78   
[1286]79    if((vecX_*dX_+vecY_*dY_+vecZ_*dZ_)>0){right_=true;}
80    else right_=false;
[1283]81   
82    setMetricsMode(Ogre::GMM_PIXELS);
83    setPosition(left,top);
[1286]84    setDimensions(dim,dim);
[1283]85    setMaterialName("Orxonox/Radar");
86   
87    Ogre::OverlayManager& overlayManager = Ogre::OverlayManager::getSingleton();
88
89    PanelOverlayElement* point = static_cast<PanelOverlayElement*>(overlayManager.createOverlayElement("Panel", "point"));
90    point->show();
91   
92    container->addChild(point);
93   
[1286]94    if (right_){
95      point->setPosition(sin(beta_)*alpha_/3.5*dim/2+dim/2+left-2,-cos(beta_)*alpha_/3.5*dim/2+dim/2+top-2);
[1283]96      point->setMaterialName("Orxonox/RedPoint");
97      point->setDimensions(5,5);
98      point->setMetricsMode(Ogre::GMM_PIXELS);
99    }
100 
101    else {
[1286]102      point->setPosition(-sin(beta_)*alpha_/3.5*dim/2+dim/2+left-2,-cos(beta_)*alpha_/3.5*dim/2+dim/2+top-2);
[1283]103      point->setMaterialName("Orxonox/RedPoint");
104      point->setDimensions(5,5);
105      point->setMetricsMode(Ogre::GMM_PIXELS);
106    }
[1286]107  } 
108   
[1290]109  void RadarOverlayElement::setMainShipPosition(int dirX, int dirY, int dirZ, int ortX, int ortY, int ortZ){
[1286]110    dirX_=dirX;
111    dirY_=dirY;
112    dirZ_=dirZ;
113    ortX_=ortX;
114    ortY_=ortY;
115    ortZ_=ortZ;
116  }
117 
118 
119 
[1283]120}
121
122
123
Note: See TracBrowser for help on using the repository browser.