VR-Forces 4.3 Class Documentation
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
restrictedWanderTraversal.h
Go to the documentation of this file.
1 
3 #ifndef KY_DtRestrictedWanderTraversal_H
4 #define KY_DtRestrictedWanderTraversal_H
5 
7 
8 #include <kypathdata/generic/basetypes.h>
9 #include <kyruntime/graph/astartraversal.h>
10 #include <kyruntime/graph/pointinfo_vertexsafeptr.h>
11 
12 #include <vrfobjcore/vrfObject.h>
13 
14 namespace Kaim
15 {
16  class WanderAgent;
17  class World;
18 }
19 
21 namespace BHAVE
22 {
27  class DT_DLL_bhaveSim DtRestrictedWanderTraversal: public Kaim::AstarTraversal
28  {
29  public:
30  KY_DECLARE_TRAVERSAL(DtRestrictedWanderTraversal)
31 
32 
33  public:
36 
39 
41  KyResult Initialize(Kaim::TraversalManager& traversalManager, const DtRestrictedWanderTraversalConfig& config);
42 
43  virtual void Start();
44 
50  KyBool ComputeDestination();
51 
53  const Kaim::PointWrapper& GetDestination() const { return m_destination; }
54 
55  /* Not used. */
56  virtual KyBool EvaluateEdge(const Kaim::GraphEdgePtr& edge, KyFloat32& cost);
57 
61  static KyUInt32 GetCallCounter();
62 
66  KyBool SetWanderDistance(KyFloat32 distance);
67 
69  KyFloat32 GetWanderDistance() const;
70 
72  void SetPropagationAngle(KyFloat32 angle);
73 
75  KyFloat32 GetPropagationAngle() const;
76 
77  DtVrfObject* wanderArea() const { return myWanderArea; }
79  void setWanderArea(DtVrfObject* val);
80  KyBool isInsideArea(const Kaim::Vec3f& position, DtVrfObject* areaObject) const;
81 
82  protected:
86  virtual KyBool ProcessEdge(const Kaim::GraphEdgePtr& edge);
87 
96  virtual KyBool ProcessVertex(const Kaim::GraphVertexPtr& vertex);
97 
98  /* Increase the call counter */
99  virtual void UpdateCallCounter();
100 
101  KyFloat32 ComputeScore(const Kaim::Vec3f& position,
102  KyBool pointIsInsideArea, KyFloat32 sqDistance) const;
103  KyBool IsInCone(const Kaim::Vec3f& position) const;
104  KyBool IsClearPosition(const Kaim::Vec3f& position) const;
105 
107  virtual bool isShapePolyClockwise( Kaim::Vec3f* polyLineVec, unsigned size ) const;
108 
110  virtual void reverseShapePolyline( Kaim::Vec3f* polyLineVec, unsigned size ) const;
111 
115  virtual KyFloat32 getAreaSizeEstimate();
116  public:
117  Kaim::PointWrapper m_destination;
118  Kaim::PointInfo_VertexSafePtr m_destinationSafePtr;
119  KyFloat32 m_destinationScore;
120  KyFloat32 m_distance;
126 
127  protected:
129  Kaim::Vec3f myAreaCenter;
130 
134  };
135 
136 
141  class PropagationBias_RestrictedWander : public Kaim::PropagationBias
142  {
143  public:
144  KY_DECLARE_PROPAGATIONBIAS(PropagationBias_RestrictedWander)
145 
146  public:
151  virtual KyBool GetCost(Kaim::Bot* entity, const Kaim::GraphVertexPtr& position, KyFloat32& cost);
152 
154  };
155 
156 }
157 
158 #endif

Document ID: Generated on Wed Mar 11 21:20:57 EDT 2015 from SVN revision 150940
Copyright © 2005-2014 VT MÄK. All Rights Reserved (www.mak.com)