VR-Forces 4.8 Class Documentation
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
humanFleeController.h
Go to the documentation of this file.
1 /*******************************************************************************
2 ** Copyright (c) 2015 MAK Technologies, Inc.
3 ** All rights reserved.
4 *******************************************************************************/
5 
9 
12 
13 #pragma once
14 
17 #include <vrfNavigation/navArea.h>
18 
21 class DtScriptedTaskTask;
23 class DtHumanFleePSR;
25 class DtVectorOutputPort;
27 
33 {
34 private:
41 public:
43  DtHumanFleeController(const DtString& name, DtVrfObject* owner,
44  DtSimManager* simManager, DtComponentDescriptor* desc=0, DtReaderWriterRegistry *parentRegistry=0);
45 
47  virtual ~DtHumanFleeController();
48 
50  virtual bool init();
51 
53  virtual const char* type() const;
54 
56  virtual void tick();
57 
62  static void fleeCallback(DtSimMessage * msg, void * usr);
63 
65  static DtSimComponent* creator(const DtString& name, DtVrfObject* owner, DtSimManager* simManager,
66  DtComponentDescriptor* desc=0, DtReaderWriterRegistry* parentRegistry=0);
67 
68 protected:
69 
71  virtual bool createPortGroups();
72 
74  virtual bool createPorts();
75 
76  virtual bool usingNavBot() const;
77 
78  virtual void processFleeTask(DtSimMessage * msg);
79 
81  virtual void registerTaskMsgCallbacks();
82 
83  static void navAreaChangedCallback(void* usr);
84  virtual void processNavAreaChanged();
85 
88  virtual std::list<DtVector> getFleeFromPoints(DtScriptedTaskTask*);
89 
91  virtual double getFleeRadius(DtScriptedTaskTask*);
92 
94  virtual bool atDestination();
95 
97  virtual void doMoving();
98 
100  virtual double findDesiredHeading();
101 
104  virtual void stop(bool success);
105 
106  virtual void clearTask();
107 
111  virtual DtVector findFleeToPoint(double radius, const std::list<DtVector>& localFrom);
112 
115  virtual double fleePointMaxCost(const std::list<DtVector>& fleeFromPtList, const DtVector& fleeToPt,
116  double maxFleeDist, bool collision);
117 
120  virtual double fleePointCost(const DtVector& fleeFromPt, const DtVector& fleeToPt,
121  double maxFleeDist, bool collision);
122 
125  virtual bool pointsMoved(const std::list<DtVector>& pts1, const std::list<DtVector>& pts2, double threshhold);
126 
128  static void objectAboutToBeRemoved(const DtVrfObject* msg, void * usr);
129  virtual void processObjectAboutToBeRemoved(const DtVrfObject* msg);
130 
132  virtual void processFleeTask(DtScriptedTaskTask*);
133 
134  virtual void showFleePoint();
135 
136  virtual void preFirstTickInit();
137  virtual bool createPSR();
138 
139  virtual bool entityInDestination(const DtVector& dest);
140 
141  virtual void updateTaskVisualizations();
142 
143  static void navigationInterfaceChanged(const DtVrfObject*, void* usr);
144  virtual void processNavigationInterfaceChanged(const DtVrfObject*);
145 
146  virtual bool isRecentlyVisitedFleePoint(const DtVector& localPoint);
147 
148 protected:
153 
155 
159  std::list<DtVector> myCachedFleeFromPoints;
160 
161  typedef std::pair<DtVector, double> PointAndCost;
162  std::vector<PointAndCost> myCandidateFleeToPoints;
163 
164 
167 
170 
177 
184 
191 
193 
199  std::list<DtVector> myRecentlyVisitedFleePoints;
200 };
#define DT_DLL_vrfmodel
This file is used to determine how to build.
Definition: vrfmodelDefines.h:24
std::vector< PointAndCost > myCandidateFleeToPoints
Definition: humanFleeController.h:162
DtVrfObject is used to represent any type of simulated object (entities, aggregate, control objects) in a VR-Forces application.
Definition: vrfObject.h:215
Description: This repository holds all information that is common to all the forms of humans within t...
Definition: humanStateRepository.h:32
bool myWasTasked
Definition: humanFleeController.h:194
This is the DtVrfObjectNavInterface subclass for objects which are actively querying the navigation s...
Definition: activeBotNavInterface.h:26
Instances of DtBooleanOutputPort are output ports through which data producers can send boolean data...
Definition: boolIOPort.h:45
bool myIgnoreNavData
Definition: humanFleeController.h:151
bool mySetupFromTaskWhenCan
Definition: humanFleeController.h:156
virtual void registerTaskMsgCallbacks()
virtual void preFirstTickInit()
This function can be overridden to initialize a component before it is ticked for the first time...
This class provides a base class for all controllers that are capable of executing a DtSimTask...
Definition: singleTaskControllerComponent.h:20
DtHumanMovementControlOutputPortGroup * myHumanMovementControlOutputPortGroup
Output Group Name: movement-control .
Definition: humanFleeController.h:169
std::list< DtVector > myCachedFleeFromPoints
Last calculated points that are being fled from.
Definition: humanFleeController.h:159
const DtHumanStateRepository * myHumanSR
Definition: humanFleeController.h:152
A readable, writable type whose name is the name of a component and that has a list of component name...
Definition: componentDescriptor.h:42
DtHumanFleeControllerDescriptor * myHumanFleeControllerDescriptor
Definition: humanFleeController.h:149
Definition: readerWriterRegistry.h:39
class DtHumanFleePSR:
Definition: humanFleePSR.h:21
virtual const char * type() const =0
Returns a string identifies the class type of component.
virtual bool init()
Calls setRadio()
DtActiveBotNavInterface * myNavInterface
Definition: humanFleeController.h:150
virtual void clearTask()
If component is currently tasked, calls clearPendingSubtasks(), sets the tasked flag to false...
virtual void updateTaskVisualizations()
Called to update task visualizations after every tick.
Definition: simComponent.h:485
DtBooleanOutputPort * myIsMovingPort
Output Port Name: is-moving Output Port Description: Indicates the entity is being actively moved by ...
Definition: humanFleeController.h:183
Specialized classes.
Definition: scriptedTaskTask.h:270
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
virtual void tick()
This gives the thread of control to the component.
DtHumanFleeController is a controller that models fleeing from a particular group of entities...
Definition: humanFleeController.h:32
std::list< DtVector > myRecentlyVisitedFleePoints
These points are stored here instead of the PSR because they are really just a very recent history...
Definition: humanFleeController.h:199
DtVectorOutputPort * myDestinationOutputPort
Output Port Name: destination Output Port Description: Specifies the current destination of the entit...
Definition: humanFleeController.h:176
virtual bool createPorts()
Called by init.
DtHumanFleeControllerDescriptor; descriptor for the DtHumanFleeController component.
Definition: humanFleeControllerDescriptor.h:20
virtual bool createPortGroups()
Called by init.
The DtSimComponent class is the base class for the entire simulation model component hierarchy...
Definition: simComponent.h:67
const DtTaskControllerComponent & operator=(const DtTaskControllerComponent &orig)
assignment operator
double myLastFleeCalcTime
Definition: humanFleeController.h:195
The simulation engine is controlled by a single,top-level class called the Simulation Manager...
Definition: simManager.h:102
An output port group that contains the ports necessary to control the movement of a human using the D...
Definition: humanMovementControlOutputPortGroup.h:22
std::pair< DtVector, double > PointAndCost
Definition: humanFleeController.h:161
DtHumanFleePSR * myProcessState
Definition: humanFleeController.h:154
DtBooleanOutputPort * myUseCollisionAvoidancePort
Output Port Name: use-collision-avoidance Output Port Description: Indicates whether or not this cont...
Definition: humanFleeController.h:190
char * dest
Definition: lz4.h:434

Document ID: Generated on Thu Aug 27 10:56:05 EDT 2020 from SVN revision 217100
Copyright © 2005-2020 MAK Technologies. All Rights Reserved (www.mak.com)