Cafu Engine
ARGrenade.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_ARGRENADE_HPP_INCLUDED
23 #define CAFU_ARGRENADE_HPP_INCLUDED
24 
25 #include "BaseEntity.hpp"
26 #include "Libs/Physics.hpp"
27 
28 
29 class CafuModelT;
30 class SoundI;
31 
32 
33 namespace GAME_NAME
34 {
35  class EntARGrenadeT : public BaseEntityT
36  {
37  public:
38 
39  EntARGrenadeT(const EntityCreateParamsT& Params);
40  ~EntARGrenadeT();
41 
42  void SetHeading(unsigned short h) { m_Heading = h; }
43  void SetVelocity(const Vector3dT& v) { m_Velocity = v; }
44 
45  void Think(float FrameTime, unsigned long ServerFrameNr);
46 
47  void ProcessEvent(unsigned int EventType, unsigned int NumEvents);
48  bool GetLightSourceInfo(unsigned long& DiffuseColor, unsigned long& SpecularColor, VectorT& Position, float& Radius, bool& CastsShadows) const;
49  void Draw(bool FirstPersonView, float LodDist) const;
50 
51 
52  const cf::TypeSys::TypeInfoT* GetType() const;
53  static void* CreateInstance(const cf::TypeSys::CreateParamsT& Params);
54  static const cf::TypeSys::TypeInfoT TypeInfo;
55 
56 
57  private:
58 
59  // Override the base class methods.
60  void DoSerialize(cf::Network::OutStreamT& Stream) const;
61  void DoDeserialize(cf::Network::InStreamT& Stream);
62 
63  enum EventTypesT { EVENT_TYPE_EXPLODE, NUM_EVENT_TYPES };
64 
65  Vector3dT m_Velocity;
66  float m_LifeTime;
67  PhysicsHelperT m_Physics;
68  const CafuModelT* m_Model;
69  SoundI* m_FireSound;
70  };
71 }
72 
73 #endif
This class implements the physics for moving entities through the world.
Definition: Physics.hpp:35
This class represents a native Cafu model.
Definition: Model_cmdl.hpp:60
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: ARGrenade.hpp:35
Definition: TypeSys.hpp:67
This class keeps type information (about an entity class that occurs in the game).
Definition: TypeSys.hpp:94