KDIS  2-8-x
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros
Entity_State_Update_PDU.h
Go to the documentation of this file.
1 /*********************************************************************
2 Copyright 2013 Karl Jones
3 All rights reserved.
4 
5 Redistribution and use in source and binary forms, with or without
6 modification, are permitted provided that the following conditions are met:
7 
8 1. Redistributions of source code must retain the above copyright notice, this
9  list of conditions and the following disclaimer.
10 2. Redistributions in binary form must reproduce the above copyright notice,
11  this list of conditions and the following disclaimer in the documentation
12  and/or other materials provided with the distribution.
13 
14 THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
15 ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
16 WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
17 DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
18 ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
19 (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
20 LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
21 ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
22 (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
23 SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
24 
25 For Further Information Please Contact me at
26 Karljj1@yahoo.com
27 http://p.sf.net/kdis/UserGuide
28 *********************************************************************/
29 
30 /********************************************************************
31  class: Entity_State_Update_PDU
32  DIS: (6) 1278.1a - 1998 & (7) 1278.1-2012
33  created: 09/11/2008
34  author: Karl Jones
35 
36  purpose: Communicates nonstatic infomation about a particular
37  entity. Only used when a simulation application is using
38  first order dead reckoning.
39  size: 576 bits / 72 octets + ( 128/16 * Num var Params )
40 *********************************************************************/
41 
42 #pragma once
43 
44 #include "./../Header.h"
45 #include "./../../DataTypes/WorldCoordinates.h"
46 #include "./../../DataTypes/Vector.h"
47 #include "./../../DataTypes/EntityIdentifier.h"
48 #include "./../../DataTypes/EntityType.h"
49 #include "./../../DataTypes/EulerAngles.h"
50 #include "./../../DataTypes/EntityAppearance.h"
51 #include "./../../DataTypes/VariableParameter.h"
52 #include <vector>
53 
54 namespace KDIS {
55 namespace PDU {
56 
58 {
59 protected:
60 
62 
64 
66 
68 
70 
72 
74 
75  std::vector<KDIS::DATA_TYPE::VarPrmPtr> m_vVariableParameters;
76 
77 public:
78 
79  // Min Size not including variable variable parameters field
80  static const KUINT16 ENTITY_STATE_UPDATE_PDU_SIZE = 72;
81 
83 
84  Entity_State_Update_PDU( KDataStream & stream ) throw( KException );
85 
86  Entity_State_Update_PDU( const Header & H, KDataStream & stream ) throw( KException );
87 
89  const KDIS::DATA_TYPE::WorldCoordinates & EntityLocation, const KDIS::DATA_TYPE::EulerAngles & EntityOrientation,
91 
92  virtual ~Entity_State_Update_PDU();
93 
94  //************************************
95  // FullName: KDIS::PDU::Entity_State_Update_PDU::SetEntityIdentifier
96  // KDIS::PDU::Entity_State_Update_PDU::GetEntityIdentifier
97  //!Description: Entity ID
98  // Parameter: const EntityIdentifier & EI
99  //************************************
100  void SetEntityIdentifier( const KDIS::DATA_TYPE::EntityIdentifier & EI );
101  const KDIS::DATA_TYPE::EntityIdentifier & GetEntityIdentifier() const;
102  KDIS::DATA_TYPE::EntityIdentifier & GetEntityIdentifier();
103 
104  //************************************
105  // FullName: KDIS::PDU::Entity_State_Update_PDU::GetNumberOfVariableParams
106  //!Description: Number of variable parameters.
107  //************************************
108  KUINT8 GetNumberOfVariableParams() const;
109 
110  //************************************
111  // FullName: KDIS::PDU::Entity_State_Update_PDU::SetEntityLinearVelocity
112  // KDIS::PDU::Entity_State_Update_PDU::GetEntityLinearVelocity
113  //!Description: Linear Velocity
114  // Parameter: const Vector & ELV
115  //************************************
116  void SetEntityLinearVelocity( const KDIS::DATA_TYPE::Vector & ELV );
117  const KDIS::DATA_TYPE::Vector & GetEntityLinearVelocity() const;
118  KDIS::DATA_TYPE::Vector & GetEntityLinearVelocity();
119 
120  //************************************
121  // FullName: KDIS::PDU::Entity_State_Update_PDU::SetEntityLocation
122  //!Description: Entity Location
123  // Parameter: const WorldCoordinates & EL
124  //************************************
125  void SetEntityLocation( const KDIS::DATA_TYPE::WorldCoordinates & EL );
126  const KDIS::DATA_TYPE::WorldCoordinates & GetEntityLocation() const;
127  KDIS::DATA_TYPE::WorldCoordinates & GetEntityLocation();
128 
129  //************************************
130  // FullName: KDIS::PDU::Entity_State_Update_PDU::SetEntityOrientation
131  // KDIS::PDU::Entity_State_Update_PDU::GetEntityOrientation
132  //!Description: Orientation of entity. Euler Angles
133  // Parameter: const EulerAngles & EO
134  //************************************
135  void SetEntityOrientation( const KDIS::DATA_TYPE::EulerAngles & EO );
136  const KDIS::DATA_TYPE::EulerAngles & GetEntityOrientation() const;
137  KDIS::DATA_TYPE::EulerAngles & GetEntityOrientation();
138 
139  //************************************
140  // FullName: KDIS::PDU::Entity_State_Update_PDU::SetEntityAppearance
141  // KDIS::PDU::Entity_State_Update_PDU::GetEntityAppearance
142  //!Description: Entity Appearance bit field accessors/mutator
143  // Parameter: const EntityAppearance & EA
144  //************************************
145  void SetEntityAppearance( const KDIS::DATA_TYPE::EntityAppearance & EA );
146  const KDIS::DATA_TYPE::EntityAppearance & GetEntityAppearance() const;
147  KDIS::DATA_TYPE::EntityAppearance & GetEntityAppearance();
148 
149  //************************************
150  // FullName: KDIS::PDU::Entity_State_Update_PDU::AddVariableParameter
151  // KDIS::PDU::Entity_State_Update_PDU::SetVariableParameter
152  // KDIS::PDU::Entity_State_Update_PDU::GetVariableParameters
153  // KDIS::PDU::Entity_State_Update_PDU::ClearVariableParameters
154  //!Description: Information associated with an entity or detonation, not otherwise accounted
155  // for in a PDU such as Articulated and Attached Parts.
156  //! See VariableParameter for supported/implemented types.
157  // Parameter: VarPrmPtr VP, vector<VarPrmPtr> & VP
158  //************************************
159  void AddVariableParameter( KDIS::DATA_TYPE::VarPrmPtr VP );
160  void SetVariableParameters( const std::vector<KDIS::DATA_TYPE::VarPrmPtr> & VP );
161  const std::vector<KDIS::DATA_TYPE::VarPrmPtr> & GetVariableParameters() const;
162  void ClearVariableParameters();
163 
164  //************************************
165  // FullName: KDIS::PDU::Entity_State_Update_PDU::GetAsString
166  //!Description: Returns a string representation of the PDU.
167  //************************************
168  virtual KString GetAsString() const;
169 
170  //************************************
171  // FullName: KDIS::PDU::Entity_State_Update_PDU::Decode
172  //!Description: Convert From Network Data.
173  // Parameter: KDataStream & stream
174  // Parameter: bool ignoreHeader = false - Decode the header from the stream?
175  //************************************
176  virtual void Decode( KDataStream & stream, bool ignoreHeader = false ) throw( KException );
177 
178  //************************************
179  // FullName: KDIS::PDU::Entity_State_Update_PDU::Encode
180  //!Description: Convert To Network Data.
181  // Parameter: KDataStream & stream
182  //************************************
183  virtual KDataStream Encode() const;
184  virtual void Encode( KDataStream & stream ) const;
185 
186  KBOOL operator == ( const Entity_State_Update_PDU & Value ) const;
187  KBOOL operator != ( const Entity_State_Update_PDU & Value ) const;
188 };
189 
190 } // END namespace PDU
191 } // END namespace KDIS
KDIS::DATA_TYPE::EntityIdentifier m_EntityID
Definition: Entity_State_Update_PDU.h:61
std::vector< KDIS::DATA_TYPE::VarPrmPtr > m_vVariableParameters
Definition: Entity_State_Update_PDU.h:75
unsigned short int KUINT16
Definition: KDefines.h:101
KDIS::DATA_TYPE::Vector m_EntityLinearVelocity
Definition: Entity_State_Update_PDU.h:67
Definition: Vector.h:71
Definition: KDefines.h:182
Definition: KDataStream.h:48
KDIS::DATA_TYPE::EulerAngles m_EntityOrientation
Definition: Entity_State_Update_PDU.h:71
Definition: WorldCoordinates.h:52
Definition: EntityAppearance.h:58
bool KBOOL
Definition: KDefines.h:119
KUINT8 m_ui8Padding1
Definition: Entity_State_Update_PDU.h:63
Definition: EulerAngles.h:46
std::string KString
Definition: KDefines.h:116
Definition: EntityIdentifier.h:49
KUINT8 m_ui8NumOfVariableParams
Definition: Entity_State_Update_PDU.h:65
Definition: Header7.h:142
unsigned char KUINT8
Definition: KDefines.h:99
KDIS::DATA_TYPE::WorldCoordinates m_EntityLocation
Definition: Entity_State_Update_PDU.h:69
#define KDIS_EXPORT
Definition: KDefines.h:82
KDIS::DATA_TYPE::EntityAppearance m_EntityAppearance
Definition: Entity_State_Update_PDU.h:73
Definition: KRef_Ptr.h:73
Definition: Entity_State_Update_PDU.h:57