MAK RTIspy API Documentation for HLA 1516
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
ballController1516_2025.h
Go to the documentation of this file.
1 /*******************************************************************************
2 ** Copyright (c) 2010 MaK Technologies, Inc.
3 ** All rights reserved.
4 *******************************************************************************/
5 /*******************************************************************************
6 ** $RCSfile: .h,v $ $Revision: 1.2 $ $State: Exp $
7 *******************************************************************************/
8 
9 #pragma once
10 
11 #include "ballData.h"
12 #include "ballController.h"
13 #include <RTI/RTI1516.h>
14 
17 
18 // Class that updates owned balls and processes updates on
19 // other balls for 1516_2025 federates
21 {
22 public:
23 
24  BallController1516_2025(BallMap* data, DdmRegionMap* regionData);
25  virtual ~BallController1516_2025();
26 
27  // Creates (if not already created) and joins the given federation.
28  // Returns success indicator. federateName is not used in 1516.
29  virtual bool createAndJoinFederation(const std::wstring& federation,
30  const std::wstring& federateType,
31  const std::wstring& federateName = std::wstring(),
32  bool includeInterExt = false);
33 
34  // Resigns from and attempts to destroy the current federation.
35  // Returns success indicator.
36  virtual bool resignAndDestroyFederation();
37 
38  // Subscribes to the ball class and all its attributes. Must already have
39  // created and joined the federation. Returns success indicator.
40  virtual bool subscribe();
41 
42  // Unsubscribes to the ball class and all its attributes. Must already have
43  // created and joined the federation. Returns success indicator.
44  virtual bool unsubscribe();
45 
46  // Deletes the ball with the given ID
47  virtual void deleteBall(const std::wstring id);
48 
49  // Attempts to acquire the ball with the given ID
50  virtual void acquireBall(const std::wstring id);
51 
52  // Attempts to divest the owned ball with the given ID
53  virtual void divestBall(const std::wstring id);
54 
55  // Adds a new DDM subscription region
56  virtual bool subscribeWithRegion(int xLowerBound, int yLowerBound,
57  int xUpperBound, int yUpperBound);
58 
59  // Unsubscribes from the current DDM regions. If resubscribeWithoutRegion is
60  // set, automatically resubscribes without regions.
61  virtual bool unsubscribeWithRegions(bool resubscribeWithoutRegion);
62 
63  // Process a denial for a new ball name
64  void nameReservationFailed(const std::wstring& name);
65 
66  // Process an approval for a new ball name
67  void nameReservationSucceeded(const std::wstring& name);
68 
69  // Process discovery of a new ball
70  void ballDiscovered(ObjectParams1516_2025* objParams);
71 
72  // Process removal of another federate's ball
73  void ballRemoved(rti1516_2025::ObjectInstanceHandle handle);
74 
75  // Process the movement of the ball into a visible area
76  void ballVisible(rti1516_2025::ObjectInstanceHandle handle);
77 
78  // Process the movement of the ball out of a visible area
79  void ballNotVisible(rti1516_2025::ObjectInstanceHandle handle);
80 
81  // Process update of an existing ball
82  void ballUpdated(rti1516_2025::ObjectInstanceHandle handle,
84 
85  // Process a display text interaction
86  void displayInteractionText(rti1516_2025::InteractionClassHandle handle,
87  const rti1516_2025::ParameterHandleValueMap& paramVals);
88 
89  // Tries to release ownership of the requested object
90  void releaseOwnership(rti1516_2025::ObjectInstanceHandle theObject,
91  rti1516_2025::AttributeHandleSet const & attributes);
92 
93  // Takes control of the ball which the federate has successfully acquired
94  // ownership of
95  void ownershipAcquired(rti1516_2025::ObjectInstanceHandle theObject,
96  rti1516_2025::AttributeHandleSet const & attributes);
97 
98  // Tries to assume ownership of the object being divested
99  void assumeOwnership(rti1516_2025::ObjectInstanceHandle theObject,
100  rti1516_2025::AttributeHandleSet const & attributes);
101 
102  // Confirms that the object is divested
103  void confirmDivestiture(rti1516_2025::ObjectInstanceHandle theObject,
104  rti1516_2025::AttributeHandleSet const & attributes);
105 
106  // Sets the field dimensions
107  virtual void setDimensions(int minX, int minY, int maxX, int maxY);
108 
109  // Returns the federate ID (based on the federate handle)
110  virtual const std::wstring& federateId() const;
111 
112  // Returns the federate type
113  virtual const std::wstring& federateType() const;
114 
115  // Returns the federate name
116  virtual const std::wstring& federateName() const;
117 
118  // Returns the federation name
119  virtual const std::wstring& federationName() const;
120 
121  // Returns true. Federate name is supported in HLA Evolved.
122  virtual bool isFederateNameSupported() const;
123 
124  // Returns true. The interaction FOM module extension is supported
125  // in HLA Evolved.
126  virtual bool isInteractionExtensionSupported() const;
127 
128 protected:
129 
130  // Sends updates on all owned balls to other federates in the federation
131  virtual void sendUpdates();
132 
133  // Receives updates on balls from other federates in the federation
134  virtual void receiveUpdates();
135 
136  // Request the RTI to create the a new ball
137  virtual void requestNewBall(Ball* ball, const std::wstring name);
138 
139  // Loads the AttributeHandleValueMap with the data from the given ball
141  const Ball* ball);
142 
143  // Loads the Ball with the data from the given attributes
144  void setBallFromAttributes(Ball* ball,
145  const rti1516_2025::AttributeHandleValueMap& attrVals);
146 
147  // Loads the TextEvent with the data from the given parameters
148  void setTextEventFromParameters(TextEvent& textEvent,
149  const rti1516_2025::ParameterHandleValueMap& paramVals);
150 
151  // Subscribes to the default region
153 
154  // Unsubscribes from the default region. Based on input parameter, either
155  // deletes the discovered balls or marks them as out of scope.
156  void unsubscribeFromDefaultRegion(bool deleteDiscoveredBalls);
157 
158  // Subscribes to the text interaction class.
160 
161  // Unsubscribes from the text interaction class.
163 
164  // Deletes known balls. Can delete owned, not owned, or both.
165  virtual void deleteKnownBalls(bool deleteOwned, bool deleteOthers);
166 
167  // Marks all balls this federate does not own as out of scope
168  void markBallsOutOfScope();
169 
170  // Creates a publication region for the given ball and sets ball's object
171  // parameters with the new region handle.
172  bool createPublicationRegion(Ball* ball);
173 
174  // Constructs a user supplied tag for the given ball object parameters.
175  // Not really relevant to federate operations.
176  rti1516_2025::VariableLengthData constructTag(const Ball* ball) const;
177 
178 private:
179 
180  // No default constructor
182 
183 protected:
184 
187 
188  std::unique_ptr < rti1516_2025::RTIambassador > myRtiAmbassador;
190 
191  rti1516_2025::FederateHandle myFederateHandle;
193  std::wstring myFederateType;
194  std::wstring myFederationName;
195 
197 
200 
201  rti1516_2025::ObjectClassHandle myBallClass;
202  rti1516_2025::AttributeHandle myColorAttr;
203  rti1516_2025::AttributeHandle mySizeAttr;
204  rti1516_2025::AttributeHandle myXAttr;
205  rti1516_2025::AttributeHandle myYAttr;
206  rti1516_2025::AttributeHandle mySpeedAttr;
207  rti1516_2025::AttributeHandle myDirectionAttr;
209  rti1516_2025::AttributeHandle myPrivToDeleteAttr;
210  rti1516_2025::DimensionHandle myXDim;
211  rti1516_2025::DimensionHandle myYDim;
212 
214  rti1516_2025::InteractionClassHandle myTextClass;
215  rti1516_2025::ParameterHandle myTextParam;
216  rti1516_2025::ParameterHandle myTextXParam;
217  rti1516_2025::ParameterHandle myTextYParam;
218  rti1516_2025::ParameterHandle myTextSizeParam;
219  rti1516_2025::ParameterHandle myTextIntervalParam;
221 
222  static const std::wstring theFddFile;
223  static const std::wstring theBallClassName;
224  static const std::wstring theColorAttrName;
225  static const std::wstring theSizeAttrName;
226  static const std::wstring theXAttrName;
227  static const std::wstring theYAttrName;
228  static const std::wstring theSpeedAttrName;
229  static const std::wstring theDirectionAttrName;
230  static const std::wstring thePrivToDeleteAttrName;
231  static const std::wstring theXDimName;
232  static const std::wstring theYDimName;
233 
234  static const std::wstring theInteractionFomModule;
235  static const std::wstring theTextClassName;
236  static const std::wstring theTextParamName;
237  static const std::wstring theTextXParamName;
238  static const std::wstring theTextYParamName;
239  static const std::wstring theTextSizeParamName;
240  static const std::wstring theTextIntervalParamName;
241 
242 };
static const std::wstring theTextIntervalParamName
Definition: ballController1516_2025.h:240
std::wstring myFederateHandleString
Definition: ballController1516_2025.h:192
static const std::wstring theTextSizeParamName
Definition: ballController1516_2025.h:239
A convenience header provided for developers that would like to include everything all at once...
virtual ~BallController1516_2025()
static const std::wstring theXAttrName
Definition: ballController1516_2025.h:226
virtual bool createAndJoinFederation(const std::wstring &federation, const std::wstring &federateType, const std::wstring &federateName=std::wstring(), bool includeInterExt=false)
virtual bool unsubscribe()
rti1516_2025::DimensionHandle myXDim
Definition: ballController1516_2025.h:210
virtual bool isFederateNameSupported() const
rti1516_2025::AttributeHandle mySpeedAttr
Definition: ballController1516_2025.h:206
static const std::wstring theInteractionFomModule
Definition: ballController1516_2025.h:234
virtual bool resignAndDestroyFederation()
virtual void deleteBall(const std::wstring id)
void ballVisible(rti1516_2025::ObjectInstanceHandle handle)
rti1516_2025::InteractionClassHandle myTextClass
Definition: ballController1516_2025.h:214
virtual const std::wstring & federateName() const
static const std::wstring theTextClassName
Definition: ballController1516_2025.h:235
rti1516_2025::ParameterHandle myTextXParam
Definition: ballController1516_2025.h:216
virtual bool subscribeWithRegion(int xLowerBound, int yLowerBound, int xUpperBound, int yUpperBound)
void ballDiscovered(ObjectParams1516_2025 *objParams)
static const std::wstring theTextParamName
Definition: ballController1516_2025.h:236
Definition: ballData.h:47
rti1516_2025::AttributeHandle myXAttr
Definition: ballController1516_2025.h:204
Definition: hlaBounceFedAmb13.h:23
int myDdmXRangeConv
Definition: ballController1516_2025.h:198
void ballRemoved(rti1516_2025::ObjectInstanceHandle handle)
int myDdmYRangeConv
Definition: ballController1516_2025.h:199
std::wstring myFederationName
Definition: ballController1516_2025.h:194
static const std::wstring theColorAttrName
Definition: ballController1516_2025.h:224
BallMap myPendingBalls
Definition: ballController1516_2025.h:186
static const std::wstring thePrivToDeleteAttrName
Definition: ballController1516_2025.h:230
rti1516_2025::AttributeHandle mySizeAttr
Definition: ballController1516_2025.h:203
rti1516_2025::ParameterHandle myTextParam
Definition: ballController1516_2025.h:215
void unsubscribeFromDefaultRegion(bool deleteDiscoveredBalls)
std::wstring myFederateType
Definition: ballController1516_2025.h:193
static const std::wstring theYAttrName
Definition: ballController1516_2025.h:227
virtual const std::wstring & federateType() const
rti1516_2025::AttributeHandleSet myAllBallAttrs
Definition: ballController1516_2025.h:208
virtual bool unsubscribeWithRegions(bool resubscribeWithoutRegion)
virtual bool subscribe()
std::map< std::wstring, Ball * > BallMap
Definition: ballData.h:118
virtual void divestBall(const std::wstring id)
rti1516_2025::AttributeHandle myDirectionAttr
Definition: ballController1516_2025.h:207
rti1516_2025::ObjectClassHandle myBallClass
Definition: ballController1516_2025.h:201
Definition: textData.h:13
rti1516_2025::DimensionHandle myYDim
Definition: ballController1516_2025.h:211
static const std::wstring theSizeAttrName
Definition: ballController1516_2025.h:225
virtual const std::wstring & federationName() const
rti1516_2025::AttributeHandle myYAttr
Definition: ballController1516_2025.h:205
static const std::wstring theFddFile
Definition: ballController1516_2025.h:222
static const std::wstring theTextXParamName
Definition: ballController1516_2025.h:237
std::set< ParameterHandle > ParameterHandleSet
Definition: Typedefs.h:28
void confirmDivestiture(rti1516_2025::ObjectInstanceHandle theObject, rti1516_2025::AttributeHandleSet const &attributes)
virtual void deleteKnownBalls(bool deleteOwned, bool deleteOthers)
rti1516_2025::AttributeHandle myColorAttr
Definition: ballController1516_2025.h:202
std::map< ParameterHandle, VariableLengthData > ParameterHandleValueMap
Definition: Typedefs.h:41
Definition: ballController.h:21
Definition: objParams1516_2025.h:13
HlaBounceFederateAmbassador * myFederateAmbassador
Definition: ballController1516_2025.h:189
virtual const std::wstring & federateId() const
static const std::wstring theSpeedAttrName
Definition: ballController1516_2025.h:228
bool myIsUsingInteractionModule
Definition: ballController1516_2025.h:213
void ballUpdated(rti1516_2025::ObjectInstanceHandle handle, const rti1516_2025::AttributeHandleValueMap &attrVals)
std::map< AttributeHandle, VariableLengthData > AttributeHandleValueMap
Definition: Typedefs.h:36
bool createPublicationRegion(Ball *ball)
virtual void sendUpdates()
std::set< AttributeHandle > AttributeHandleSet
Definition: Typedefs.h:27
void releaseOwnership(rti1516_2025::ObjectInstanceHandle theObject, rti1516_2025::AttributeHandleSet const &attributes)
Definition: ballController1516_2025.h:20
rti1516_2025::AttributeHandle myPrivToDeleteAttr
Definition: ballController1516_2025.h:209
void ownershipAcquired(rti1516_2025::ObjectInstanceHandle theObject, rti1516_2025::AttributeHandleSet const &attributes)
void nameReservationSucceeded(const std::wstring &name)
static const std::wstring theTextYParamName
Definition: ballController1516_2025.h:238
rti1516_2025::ParameterHandleSet myAllTextParams
Definition: ballController1516_2025.h:220
static const std::wstring theYDimName
Definition: ballController1516_2025.h:232
void setTextEventFromParameters(TextEvent &textEvent, const rti1516_2025::ParameterHandleValueMap &paramVals)
static const std::wstring theDirectionAttrName
Definition: ballController1516_2025.h:229
std::map< std::wstring, DdmRegion * > DdmRegionMap
Definition: regionData.h:59
void ballNotVisible(rti1516_2025::ObjectInstanceHandle handle)
void setBallFromAttributes(Ball *ball, const rti1516_2025::AttributeHandleValueMap &attrVals)
virtual void requestNewBall(Ball *ball, const std::wstring name)
void displayInteractionText(rti1516_2025::InteractionClassHandle handle, const rti1516_2025::ParameterHandleValueMap &paramVals)
rti1516_2025::VariableLengthData constructTag(const Ball *ball) const
virtual void receiveUpdates()
static const std::wstring theXDimName
Definition: ballController1516_2025.h:231
virtual void setDimensions(int minX, int minY, int maxX, int maxY)
virtual void acquireBall(const std::wstring id)
bool myIsSubscribedToDefaultRegion
Definition: ballController1516_2025.h:196
rti1516_2025::FederateHandle myFederateHandle
Definition: ballController1516_2025.h:191
rti1516_2025::ParameterHandle myTextYParam
Definition: ballController1516_2025.h:217
rti1516_2025::ParameterHandle myTextIntervalParam
Definition: ballController1516_2025.h:219
rti1516_2025::ParameterHandle myTextSizeParam
Definition: ballController1516_2025.h:218
std::unique_ptr< rti1516_2025::RTIambassador > myRtiAmbassador
Definition: ballController1516_2025.h:188
void setAttributesForBall(rti1516_2025::AttributeHandleValueMap &attrVals, const Ball *ball)
void assumeOwnership(rti1516_2025::ObjectInstanceHandle theObject, rti1516_2025::AttributeHandleSet const &attributes)
virtual bool isInteractionExtensionSupported() const
static const std::wstring theBallClassName
Definition: ballController1516_2025.h:223
void nameReservationFailed(const std::wstring &name)
BallMap myUnnamedBalls
Definition: ballController1516_2025.h:185

Document ID: Generated on Sun Jul 20 16:15:30 EDT 2025 from SVN revision 277985
Copyright © 2005-2025 MAK Technologies Inc. All Rights Reserved (www.mak.com)