Atoms Crowd  4.1.0
DynamicLayoutGenerator.h
1 #pragma once
2 // ===========================================================================
3 // Copyright (c) 2015 Toolchefs Ltd. All rights reserved.
4 //
5 // Use of this software is subject to the terms of the Toolchefs license
6 // agreement provided at the time of installation or download, or which
7 // otherwise accompanies this software in either electronic or hard copy form.
8 // ===========================================================================
9 
10 #include <Atoms/LayoutGenerators/LayoutGenerator.h>
11 
12 namespace Atoms
13 {
14  class ATOMS_EXPORT DynamicLayoutGenerator : public LayoutGenerator
15  {
16  public:
17 
18  enum DynamicMode
19  {
20  kTimer = 0,
21  kTrigger
22  };
23 
25 
26  virtual ~DynamicLayoutGenerator();
27 
28  virtual std::vector<AgentInitData> generate(double time) = 0;
29 
30  virtual const char *typeName() = 0;
31 
32  bool checkGeneration(double time);
33 
34  AgentTypePtr pickAgentType();
35 
36  void applyOffsetToData();
37 
38  inline unsigned int dynamicGroupIdOffset() const;
39 
40  inline void setDynamicGroupIdOffset(unsigned int value);
41 
42  inline void addDynamicGroupIdOffset(unsigned int value);
43 
44  inline unsigned int dynamicMethod() const;
45 
46  inline void setDynamicMethod(unsigned int value);
47 
48  inline bool generateOnInitSimulation() const;
49 
50  inline void setGenerateOnInitSimulation(bool value);
51 
52  inline double timeToGenerate() const;
53 
54  inline void setTimeToGenerate(double value);
55 
56  inline void decreaseTimeToGenerate();
57 
58  inline bool generatorTrigger() const;
59 
60  inline void setGeneratorTrigger(bool value);
61 
62  inline bool randomizeAgentTypes() const;
63 
64  inline void setRandomizeAgentTypes(bool value);
65 
66  inline bool resetSeed() const;
67 
68  inline void setResetSeed(bool value);
69 
70  inline const std::vector<std::string>& randomAgentTypes() const;
71 
72  inline void setRandomAgentTypes(const std::vector<std::string>& value);
73 
74  inline const AtomsCore::Vector2& randomTimer() const;
75 
76  inline void setRandomTimer(const AtomsCore::Vector2& value);
77 
78  inline const std::vector<Atoms::AgentInitData>& getData() const;
79 
80  inline void setData(const std::vector<Atoms::AgentInitData>& data, bool check = false);
81 
82  protected:
83 
84  AtomsCore::Rand48 m_randDynamic;
85 
86  private:
87 
88  std::vector<Atoms::AgentInitData> m_data;
89 
90  std::vector<std::string> m_randomAgentTypes;
91 
92  AtomsCore::Vector2 m_randomTimerGenerator;
93 
94  double m_timeToGenerate;
95 
96  unsigned int m_dynamicGroupIdOffset;
97 
98  unsigned int m_dynamicMethod;
99 
100  bool m_generateOnInit;
101 
102  bool m_generatorTrigger;
103 
104  bool m_randomizeAgentTypes;
105 
106  bool m_resetSeed;
107 
108  };
109 }
110 
111 #include "DynamicLayoutGenerator.impl.h"
Atoms::DynamicLayoutGenerator::generate
virtual std::vector< AgentInitData > generate(double time)=0
Generate a vector of agent init data.
AtomsCore::Vector2
AtomsMath::Vector2 Vector2
Vector2 class.
Definition: AtomsMath.h:54
Atoms::AgentTypePtr
AtomsPtr< AgentType > AgentTypePtr
Agent type pointer.
Definition: AgentType.h:17
Atoms
Atoms namespace.
Definition: Agent.h:28
Atoms::LayoutGenerator
Layout generator.
Definition: LayoutGenerator.h:29
Atoms::DynamicLayoutGenerator::typeName
virtual const char * typeName()=0
Get the type name for this generator.
Atoms::DynamicLayoutGenerator
Definition: DynamicLayoutGenerator.h:15