Cafu Engine
Rocket.hpp
1 /*
2 =================================================================================
3 This file is part of Cafu, the open-source game engine and graphics engine
4 for multiplayer, cross-platform, real-time 3D action.
5 Copyright (C) 2002-2013 Carsten Fuchs Software.
6 
7 Cafu is free software: you can redistribute it and/or modify it under the terms
8 of the GNU General Public License as published by the Free Software Foundation,
9 either version 3 of the License, or (at your option) any later version.
10 
11 Cafu is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
12 without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
13 PURPOSE. See the GNU General Public License for more details.
14 
15 You should have received a copy of the GNU General Public License
16 along with Cafu. If not, see <http://www.gnu.org/licenses/>.
17 
18 For support and more information about Cafu, visit us at <http://www.cafu.de>.
19 =================================================================================
20 */
21 
22 #ifndef CAFU_ROCKET_HPP_INCLUDED
23 #define CAFU_ROCKET_HPP_INCLUDED
24 
25 #include "BaseEntity.hpp"
26 
27 
28 class CafuModelT;
29 class SoundI;
30 
31 
32 namespace GAME_NAME
33 {
34  class EntRocketT : public BaseEntityT
35  {
36  public:
37 
38  EntRocketT(const EntityCreateParamsT& Params);
39  ~EntRocketT();
40 
41  void SetHeading(unsigned short h) { m_Heading = h; }
42  void SetVelocity(const Vector3dT& v) { m_Velocity = v; }
43 
44  void Think(float FrameTime, unsigned long ServerFrameNr);
45 
46  void ProcessEvent(unsigned int EventType, unsigned int NumEvents);
47  bool GetLightSourceInfo(unsigned long& DiffuseColor, unsigned long& SpecularColor, VectorT& Position, float& Radius, bool& CastsShadows) const;
48  void Draw(bool FirstPersonView, float LodDist) const;
49 
50 
51  const cf::TypeSys::TypeInfoT* GetType() const;
52  static void* CreateInstance(const cf::TypeSys::CreateParamsT& Params);
53  static const cf::TypeSys::TypeInfoT TypeInfo;
54 
55 
56  private:
57 
58  // Override the base class methods.
59  void DoSerialize(cf::Network::OutStreamT& Stream) const;
60  void DoDeserialize(cf::Network::InStreamT& Stream);
61 
62  enum EventTypesT { EVENT_TYPE_EXPLODE, NUM_EVENT_TYPES };
63 
64  const CafuModelT* m_Model;
65  SoundI* m_FireSound;
66  Vector3dT m_Velocity;
67  float m_TimeSinceExploded;
68  };
69 }
70 
71 #endif
This class represents a native Cafu model.
Definition: Model_cmdl.hpp:60
Definition: Rocket.hpp:34
This class represents a sound.
Definition: Sound.hpp:30
This class is used for reading data from a StateT instance (deserialization).
Definition: State.hpp:222
Definition: EntityCreateParams.hpp:38
Definition: BaseEntity.hpp:85
This class is used for writing data into a StateT instance (serialization).
Definition: State.hpp:96
Definition: TypeSys.hpp:67
This class keeps type information (about an entity class that occurs in the game).
Definition: TypeSys.hpp:94