Atoms Crowd  4.1.0
CurveLayoutGenerator.h
1 #pragma once
2 #include <Atoms/LayoutGenerators/DynamicLayoutGenerator.h>
3 #include <AtomsUtils/Curve.h>
4 
5 namespace Atoms
6 {
7  class ATOMS_EXPORT CurveLayoutGenerator : public DynamicLayoutGenerator
8  {
9  public:
10 
12 
13  virtual ~CurveLayoutGenerator();
14 
15  // the generator function
16  virtual std::vector<AgentInitData> generate(double time)
17  #ifdef __APPLE__
18  override
19  #endif
20  ;
21 
22  inline void setCurve(AtomsUtils::Curve& curve) { m_curve = curve; }
23 
24  inline void setDirection(AtomsCore::Vector3& dir) { m_direction = dir; }
25 
26  inline void setUpVector(AtomsCore::Vector3& dir) { m_upVector = dir; }
27 
28  inline void setNumberOfAgents(size_t value) { m_numberOfAgents = value; }
29 
30  inline void setDepth(size_t value) { m_depth = value; }
31 
32  inline void setDepthSpace(double value) { m_depthSpace = value; }
33 
34  inline void setUseCVs(bool value) { m_useCVs = value; }
35 
36  inline void setDirectionType(short value) { m_directionType = value; }
37 
38  inline void setInvertDirection(bool value) { m_invertDirection = value; }
39 
40  inline void setAgentTypeOverride(const std::map<int, std::string>& value) { m_agentTypeOverride = value; }
41 
42  inline void setDirectionOverride(const std::map<int, AtomsCore::Vector3>& value) { m_directionOverride = value; }
43 
44  inline void setRandomSpace(AtomsCore::Vector3& dir) { m_randomSpace = dir; }
45 
46  inline void setSeed(size_t value) { m_seed = value; }
47 
48  inline const char* typeName() override { return "curveLayout"; };
49 
50  private:
51 
52  // Input curve
53  AtomsUtils::Curve m_curve;
54 
55  // Agent direction
56  AtomsCore::Vector3 m_direction;
57 
58  // Up vector
59  AtomsCore::Vector3 m_upVector;
60 
61  // Random space
62  AtomsCore::Vector3 m_randomSpace;
63 
64  // Agent direction override
65  std::map<int, AtomsCore::Vector3> m_directionOverride;
66 
67  // Agent type override
68  std::map<int, std::string> m_agentTypeOverride;
69 
70  // Number of agents along the curve
71  size_t m_numberOfAgents;
72 
73  // Number of depth rows
74  size_t m_depth;
75 
76  // Seed
77  size_t m_seed;
78 
79  // Depth row space
80  double m_depthSpace;
81 
82  // Direction type: 0 - tangent, 1 - normal, 2 - custom
83  short m_directionType;
84 
85  // Invert the direction
86  bool m_invertDirection;
87 
88  // Use cvs instead num agents
89  bool m_useCVs;
90 
91  };
92 }
Atoms::CurveLayoutGenerator
Definition: CurveLayoutGenerator.h:8
AtomsCore::Vector3
AtomsMath::Vector3 Vector3
Vector3 class.
Definition: AtomsMath.h:57
AtomsUtils::Curve
Nurbs curve.
Definition: Curve.h:18
Atoms::CurveLayoutGenerator::typeName
const char * typeName() override
Get the type name for this generator.
Definition: CurveLayoutGenerator.h:48
Atoms
Atoms namespace.
Definition: Agent.h:28
Atoms::CurveLayoutGenerator::generate
virtual std::vector< AgentInitData > generate(double time)
Generate a vector of agent init data.
Atoms::DynamicLayoutGenerator
Definition: DynamicLayoutGenerator.h:15