VR-Forces Developer's Guide
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
humanMoveToController.h
Go to the documentation of this file.
1 /****************************************************************************
2  * Copyright (c) 2021 MAK Technologies, Inc.
3  * All rights reserved.
4  ****************************************************************************/
5 
9 
10 #pragma once
11 
15 
16 class DtCgf;
18 class DtSimMessage;
19 class DtHumanMoveToPSR;
21 class DtInputPortGroup;
23 class DtVectorOutputPort;
27 class DtGenericPsr;
28 class DtAnalogInputPort;
29 class DtAnalogOutputPort;
30 class DtVectorInputPort;
31 
42 {
43 private:
44 
47 
50 
53 
54 public:
55 
57  DtHumanMoveToController( const DtString& name, DtLocalObject* owner, DtSimulationServices* simManager, DtComponentDescriptor* desc = nullptr, DtReaderWriterRegistry* parentRegistry = nullptr );
58 
60  virtual ~DtHumanMoveToController() override;
61 
63  virtual bool init() override;
64 
66  virtual const char* type() const override;
67 
69  virtual void tick() override;
70 
75  static void moveToCallback( DtSimMessage* msg, void* usr );
76 
81  static void setLocationCallback( DtSimMessage* msg, void* usr );
82 
84  static DtSimComponent* creator( const DtString& name, DtLocalObject* owner, DtSimulationServices* simManager,
85  DtComponentDescriptor* desc = nullptr, DtReaderWriterRegistry* parentRegistry = nullptr );
86 
88  static void modifyVrfObjectCallback( DtSimMessage* msg, void* usr );
89 
90 protected:
91 
94  virtual void processMoveToTask( DtSimMessage* msg );
95 
100  virtual void processDestinationChanged();
101 
105  virtual bool setupDestination();
106 
115  virtual void setupDestinationVector() const;
116 
118  virtual void invalidateDestinationVector() const;
119 
128  virtual bool atDestination();
129 
131  virtual void doMoving();
132 
134  virtual double findDesiredHeading();
135 
137  virtual double findDesiredSpeed();
138 
140  virtual void moveToDestination();
141 
144  virtual void stop( bool success );
145 
147  virtual void registerTaskMsgCallbacks() override;
148 
152  virtual void processModifyVrfObject( DtSimMessage* msg );
153 
156  virtual void processSetLocation( DtSimMessage* msg );
157 
159  virtual bool createPortGroups() override;
160 
162  virtual bool createPorts() override;
163 
169  virtual bool createPSR();
170 
171  virtual double distanceToDestination() const;
172 
174  virtual void clearTask() override;
175 
177  virtual bool destinationIsInsideObstruction( const DtVector& localDestination ) const;
178 
181  virtual bool decideToGiveUpTask() const override;
182 
187  virtual double atDistance() const;
188 
190  virtual bool usingNavBot() const;
191 
193  virtual void useNavBotData();
194 
197  virtual unsigned maxNumFailedPathAttempts() const;
198 
201  virtual bool findAlternateDestination();
202 
204  virtual void setStuck( bool yesNo );
206  virtual double stuckTime();
207 
208  static void navAreaChangedCallback( void* usr );
209  virtual void processNavAreaChanged();
210 
214  DtVector localDestination() const;
215 
216  virtual void updateTaskVisualizations() override;
217 
220  virtual void suspendTask() override;
221 
223  virtual void preFirstTickInit() override;
224 
225  static void setAutonomousActionsEnabledCallback( DtSimMessage* msg, void* usrData );
226  virtual void processSetAutonomousActionsEnabled( DtSimMessage* msg );
227 
228  virtual void processNavigationInterfaceChanged();
229 
233  virtual void processEstimatedTotCalculation();
234 
236  template<typename T_Task>
237  void setCommonTaskParams( const T_Task& task )
238  {
239  myOverrideAtDistance = task.isAtDistanceSpecified();
240  if ( myOverrideAtDistance )
241  {
242  myOverrideAtDistanceValue = task.atDistance();
243  }
244 
245  myOverrideSpeed = task.isSpeedSpecified();
246  if ( myOverrideSpeed )
247  {
248  myOverrideSpeedValue = task.speed();
249  }
250  }
251 
252  virtual bool currentPathEdge(DtVector& pathEdgeStart, DtVector& pathEdgeEnd) const;
253 
254 protected:
255 
258 
266 
270 
273 
280 
287 
294 
302 
308 
315 
317 
320 
323 
327 
328  mutable DtVector myDestinationVector;
330 
333 
338 
349 
351 
353 
357  //DtGenericPsr* myHumanMovePsr;
358 
361 
363 
365  const double DtEstimatedTotCalcInterval = 5.0;
366 
375 
377 
378 };
379 
380 
class DtHumanMoveToPSR:
Definition: humanMoveToPSR.h:29
#define DT_DLL_vrfmodel
This file is used to determine how to build.
Definition: vrfmodelDefines.h:24
DtAnalogInputPort * myEtaForLastVertexInputPort
Input Port Name: eta-for-last-vertex Input Port Description: Specifies the eta for the last vertex of...
Definition: humanMoveToController.h:307
bool myIgnoreNavData
Used to force the navigation interface to be ignored. This is useful when the nav interface has given...
Definition: humanMoveToController.h:348
virtual void suspendTask()
This method is called when the currently running task is being suspended. The default implementation ...
DtHumanMovementControlOutputPortGroup * myHumanMovementControlOutputPortGroup
Output Group Name: movement-control .
Definition: humanMoveToController.h:272
DtHumanStateRepository * myHumanStateRepository
Definition: humanMoveToController.h:352
Description: This repository holds all information that is common to all the forms of humans within t...
Definition: humanStateRepository.h:33
virtual const char * type() const override=0
Returns a string identifies the class type of component. Type values are defined in compTypes...
This is the DtVrfObjectNavInterface subclass for objects which are actively querying the navigation s...
Definition: activeBotNavInterface.h:27
Instances of DtBooleanOutputPort are output ports through which data producers can send boolean data...
Definition: boolIOPort.h:45
virtual void registerTaskMsgCallbacks()
virtual void preFirstTickInit()
This function can be overridden to initialize a component before it is ticked for the first time...
double myEstimatedTotLastCalcTime
used for tot calculation intervals
Definition: humanMoveToController.h:372
This class provides a base class for all controllers that are capable of executing a DtSimTask...
Definition: singleTaskControllerComponent.h:22
DtVector myIntermediateLocalDestination
Definition: humanMoveToController.h:326
A readable, writable type whose name is the name of a component and that has a list of component name...
Definition: componentDescriptor.h:49
Definition: readerWriterRegistry.h:39
DtVector myLocalDestination
Definition: humanMoveToController.h:321
DtHumanLocalObjectFacade myHumanLocalObjectFacade
Definition: humanMoveToController.h:376
bool myDestinationVectorIsValid
Definition: humanMoveToController.h:329
Contains class declarations for DtVectorInputPort, DtVectorOutputPort, and DtVectorPortData.
Definition: vectorIOPort.h:27
virtual void updateTaskVisualizations()
Called to update task visualizations after every tick. Implemented by subclasses. ...
Definition: simComponent.h:443
DtBooleanOutputPort * myUseCollisionAvoidancePort
Output Port Name: use-collision-avoidance Output Port Description: Indicates whether or not this cont...
Definition: humanMoveToController.h:293
bool myAutonomousActionsEnabled
Definition: humanMoveToController.h:362
virtual bool init() override
Calls setRadio()
DtHumanMoveToPSR * myProcessState
Container for state data associated with this component. This state is saved and restored as part of ...
Definition: humanMoveToController.h:356
DtVectorInputPort * myLastVertexLocationInputPort
Input Port Name: last-vertex-location Input Port Description: Specifies the last vertex location of t...
Definition: humanMoveToController.h:301
void registerDtHumanMoveToController(DtCgf *cgf)
Registers component and associated classes with the factories. Call after DtVrfApp::init() ...
bool myEstimatedTotCalcEnabled
enabled flag for the tot calculations
Definition: humanMoveToController.h:368
DtInputPortGroup * myCollisionAvoidancePortGroup
Input Port Group Name: collision-avoidance-control Input Port Group Description:
Definition: humanMoveToController.h:269
DtVector myIntermediateWorldDestination
Definition: humanMoveToController.h:325
Instances of DtAnalogOutputPort are input ports through which data producers can send real numbers...
Definition: analogIOPort.h:45
Instances of DtVectorOutputPort are output ports through which data producers can send a DtVector...
Definition: vectorIOPort.h:52
File: simMsg.h.
Definition: simMessage.h:35
DtAnalogOutputPort * myEtaToLastVertexOutputPort
Output Port Name: eta-to-last-vertex Output Port Description: Specifies the eta to reach the last ver...
Definition: humanMoveToController.h:314
virtual void tick()
This gives the thread of control to the component. The component is ticked once each simulation from ...
DtActiveBotNavInterface * myNavInterface
Definition: humanMoveToController.h:360
DtVectorOutputPort * myDestinationOutputPort
Output Port Name: destination Output Port Description: Specifies the current destination of the entit...
Definition: humanMoveToController.h:279
DtCollisionInputPort * myCollisionAvoidancePort
Input Port Name: potential-collision-info Input Port Description: information about an impending pote...
Definition: humanMoveToController.h:265
double myDistanceSquared
Definition: humanMoveToController.h:332
DtVector myWorldDestination
Definition: humanMoveToController.h:322
DtHumanMoveToControllerDescriptor; descriptor for the DtHumanMoveToControllerDescriptor component...
Definition: humanMoveToControllerDescriptor.h:23
virtual bool createPorts()
Called by init. Derived classes should override this method to create all their input/output ports an...
bool myOverrideAtDistance
Definition: humanMoveToController.h:334
virtual bool decideToGiveUpTask() const
This function is used to determine if the controller should give up trying to execute the current tas...
double myEstimatedTotValue
the tot value
Definition: humanMoveToController.h:370
virtual bool createPortGroups()
Called by init. Derived classes should override this method to create all their input/output port gro...
DtSimObjectReference myControlPoint
This is looked up once per tick - assumed unchanging while we have control.
Definition: humanMoveToController.h:319
Central access point of all non-object-specific the services and managers that are available for use ...
Definition: simulationServices.h:96
The DtSimComponent class is the base class for the entire simulation model component hierarchy...
Definition: simComponent.h:89
const DtTaskControllerComponent & operator=(const DtTaskControllerComponent &orig)
assignment operator
DtBooleanOutputPort * myIsMovingPort
Output Port Name: is-moving Output Port Description: Indicates the entity is being actively moved by ...
Definition: humanMoveToController.h:286
DtHumanMoveToControllerDescriptor * myHumanMoveToControllerDescriptor
Definition: humanMoveToController.h:359
bool myAtDestination
Definition: humanMoveToController.h:331
virtual void clearTask() override
If component is currently tasked, calls clearPendingSubtasks(), sets the tasked flag to false...
DtInputPortGroup is a data port group of a data consumer. It may contain any number of DtInputPorts a...
Definition: inputPortGroup.h:35
Instances of DtCollisionInputPort are input ports through which data consumers can receive informatio...
Definition: collisionIOPort.h:29
DtHumanMoveToController is a controller that models movement to a &lt;location&gt; or &lt;waypoint&gt; for indivi...
Definition: humanMoveToController.h:41
Contains class declarations for DtAnalogInputPort, DtAnalogOutputPort, and DtAnalogPortData.
Definition: analogIOPort.h:25
A DtVrfProcessStateRepository subclass that keeps an arbitrary key/value pair set of data...
Definition: genericPsr.h:17
unsigned myNumFailedPathAttempts
Definition: humanMoveToController.h:350
void processSetLocation(DtSetDataRequest *set, const DtVertexList &vertices, double position, DtMoveAlongRouteTimeEstimator *est)
An output port group that contains the ports necessary to control the movement of a human using the D...
Definition: humanMovementControlOutputPortGroup.h:22
bool myHasIntermediateDestination
Definition: humanMoveToController.h:324
The top level class of a VR-Forces Simulation Engine, representing a Computer Generated Forces instan...
Definition: cgf.h:156
DtVector myEstimatedTotTextPos
tot text position
Definition: humanMoveToController.h:374
void setCommonTaskParams(const T_Task &task)
Template function to handle a number of tasks that all have a common set of parameters.
Definition: humanMoveToController.h:237
DtVector myDestinationVector
Definition: humanMoveToController.h:328
double myOverrideAtDistanceValue
Definition: humanMoveToController.h:335
bool myOverrideSpeed
Definition: humanMoveToController.h:336
double myOverrideSpeedValue
Definition: humanMoveToController.h:337
A locally simulated VRF object.
Definition: localObject.h:98

Document ID: Generated on Thu Oct 23 22:29:17 EDT 2025 from SVN revision 280951
Copyright © 2005-2024 MAK Technologies. All Rights Reserved (www.mak.com)