SuperTuxKart
referee.hpp
1 //
2 // SuperTuxKart - a fun racing game with go-kart
3 // Copyright (C) 2011-2015 Joerg Henrichs
4 //
5 // This program is free software; you can redistribute it and/or
6 // modify it under the terms of the GNU General Public License
7 // as published by the Free Software Foundation; either version 3
8 // of the License, or (at your option) any later version.
9 //
10 // This program is distributed in the hope that it will be useful,
11 // but WITHOUT ANY WARRANTY; without even the implied warranty of
12 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 // GNU General Public License for more details.
14 //
15 // You should have received a copy of the GNU General Public License
16 // along with this program; if not, write to the Free Software
17 // Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
18 
19 #ifndef HEADER_REFEREE_HPP
20 #define HEADER_REFEREE_HPP
21 
22 #include <ISceneNode.h>
23 #include <IAnimatedMeshSceneNode.h>
24 #include <ISceneManager.h>
25 #include <IMeshManipulator.h>
26 using namespace irr;
27 
28 #include "utils/vec3.hpp"
29 
30 class AbstractKart;
31 
44 class Referee
45 {
46 private:
49  static scene::IAnimatedMesh *m_st_referee_mesh;
50 
52  static video::ITexture *m_st_traffic_lights[3];
53 
55  static int m_st_traffic_buffer;
56 
59 
62 
65 
68 
72 
74  static Vec3 m_st_scale;
75 
78 
79  static float m_height;
80 
82  scene::IAnimatedMeshSceneNode *m_scene_node;
83 
84  scene::ISceneNode* m_light;
85 
86 public:
87  Referee();
88  Referee(const AbstractKart &kart);
89  ~Referee();
90  void selectReadySetGo(int rsg);
91  void attachToSceneNode();
92  static void init();
93  static void cleanup();
94  void removeFromSceneGraph();
95  // ------------------------------------------------------------------------
97  scene::IAnimatedMeshSceneNode* getSceneNode() { return m_scene_node; }
98  // ------------------------------------------------------------------------
100  void setPosition(const Vec3 &xyz)
101  {m_scene_node->setPosition(xyz.toIrrVector()); }
102  // ------------------------------------------------------------------------
105  void setRotation(const Vec3 &hpr)
106  { m_scene_node->setRotation(hpr.toIrrVector()); }
107  // ------------------------------------------------------------------------
109  bool isAttached() const {return m_scene_node->getParent()!=NULL;}
110  // ------------------------------------------------------------------------
111  void setAnimationFrameWithCreatedTicks(int created_ticks);
112  // ------------------------------------------------------------------------
115  static const Vec3& getStartOffset() {return m_st_start_offset; }
116  // ------------------------------------------------------------------------
119  static const Vec3& getStartRotation() {return m_st_start_rotation; }
120  // ------------------------------------------------------------------------
122  static const float getHeight() {return m_height; }
123 }; // Referee
124 
125 #endif
126 
127 /* EOF */
static const Vec3 & getStartRotation()
Returns the rotation of the mesh so that it faces the kart (when applied to a kart with heading 0).
Definition: referee.hpp:119
static int m_st_first_rescue_frame
Start frame of rescue animation.
Definition: referee.hpp:64
scene::IAnimatedMeshSceneNode * m_scene_node
The scene node for an instance of the referee.
Definition: referee.hpp:82
A wrapper around bullets btVector3 to include conventient conversion functions (e....
Definition: vec3.hpp:34
bool isAttached() const
Returns true if this referee is attached to the scene graph.
Definition: referee.hpp:109
static const Vec3 & getStartOffset()
Returns the graphical offset the referee should be drawn at at the start of a race.
Definition: referee.hpp:115
static Vec3 m_st_start_offset
The position the referee should be shown relative to the kart when starting the race.
Definition: referee.hpp:71
static const float getHeight()
Returns the height of the referee.
Definition: referee.hpp:122
static int m_st_last_start_frame
End frame of start animation.
Definition: referee.hpp:61
static Vec3 m_st_start_rotation
A rotation to be applied to the referee before displaying it.
Definition: referee.hpp:77
static int m_st_last_rescue_frame
End frame of rescue animation.
Definition: referee.hpp:67
scene::IAnimatedMeshSceneNode * getSceneNode()
Returns the scene node of this referee.
Definition: referee.hpp:97
static scene::IAnimatedMesh * m_st_referee_mesh
The static mesh, which is loaded from a static function and shared between all instances.
Definition: referee.hpp:49
This implements the referee, a character that is displayed at the start of the race holding a 'ready-...
Definition: referee.hpp:44
const core::vector3df & toIrrVector() const
Converts a vec3 into an irrlicht vector (which is a simple type cast).
Definition: vec3.hpp:113
void setRotation(const Vec3 &hpr)
Sets the rotation of the scene node (in degrees).
Definition: referee.hpp:105
static Vec3 m_st_scale
Scaling to be applied to the referee.
Definition: referee.hpp:74
An abstract interface for the actual karts.
Definition: abstract_kart.hpp:61
void setPosition(const Vec3 &xyz)
Moves the referee to the specified position.
Definition: referee.hpp:100
static int m_st_first_start_frame
Start frame of start animation.
Definition: referee.hpp:58
static int m_st_traffic_buffer
Which mesh buffer to use to show the traffic light texture.
Definition: referee.hpp:55