Atoms Crowd  4.1.0
GridLayoutGenerator.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/DynamicLayoutGenerator.h>
11 
12 namespace Atoms
13 {
14  class ATOMS_EXPORT GridLayoutGenerator: public DynamicLayoutGenerator
15  {
16  public:
17 
19 
20  virtual ~GridLayoutGenerator();
21 
22  virtual std::vector<AgentInitData> generate(double time)
23  #ifdef __APPLE__
24  override
25  #endif
26  ;
27 
28  inline unsigned int sizeX();
29 
30  inline void setSizeX(unsigned int sx);
31 
32  inline unsigned int sizeY();
33 
34  inline void setSizeY(unsigned int sy);
35 
36  inline unsigned int sizeZ();
37 
38  inline void setSizeZ(unsigned int sz);
39 
40  inline AtomsCore::Vector3 space();
41 
42  inline void setSpace(const AtomsCore::Vector3& space);
43 
44  inline AtomsCore::Vector3 randomSpace();
45 
46  inline void setRandomSpace(const AtomsCore::Vector3& space);
47 
48  inline AtomsCore::Vector3 direction();
49 
50  inline void setDirection(const AtomsCore::Vector3& dir);
51 
52  inline AtomsCore::Vector3 upVector();
53 
54  inline void setUpVector(const AtomsCore::Vector3& dir);
55 
56  inline AtomsCore::Vector3 randomDirection();
57 
58  inline void setRandomDirection(const AtomsCore::Vector3& dir);
59 
60  inline AtomsCore::Matrix matrix();
61 
62  inline void setMatrix(const AtomsCore::Matrix& mtx);
63 
64  inline unsigned int seed();
65 
66  inline void setSeed(unsigned int value);
67 
68  inline const std::map<int, std::string>& agentTypeOverride() const;
69 
70  inline void setAgentTypeOverride(const std::map<int, std::string>& value);
71 
72  inline const std::map<int, AtomsCore::Vector3>& directionOverride() const;
73 
74  inline void setDirectionOverride(const std::map<int, AtomsCore::Vector3>& value);
75 
76  inline const std::map<int, AtomsCore::Vector3>& upVectorOverride() const;
77 
78  inline void setUpVectorOverride(const std::map<int, AtomsCore::Vector3>& value);
79 
80  inline void setCenterOffset(const AtomsCore::Vector3 offset);
81 
82  inline const char* typeName() override { return "gridLayout"; };
83 
84  private:
85 
86  AtomsCore::Matrix m_matrix;
87 
88  AtomsCore::Vector3 m_space;
89 
90  AtomsCore::Vector3 m_randomSpace;
91 
92  AtomsCore::Vector3 m_direction;
93 
94  AtomsCore::Vector3 m_upVector;
95 
96  AtomsCore::Vector3 m_randomDirection;
97 
98  AtomsCore::Vector3 m_centerOffset;
99 
100  unsigned int m_sizeX;
101 
102  unsigned int m_sizeY;
103 
104  unsigned int m_sizeZ;
105 
106  unsigned int m_seed;
107 
108  std::map<int, std::string> m_agentTypeOverride;
109 
110  std::map<int, AtomsCore::Vector3> m_directionOverride;
111 
112  std::map<int, AtomsCore::Vector3> m_upVectorOverride;
113  };
114 }
115 
116 #include "GridLayoutGenerator.impl.h"
Atoms::GridLayoutGenerator
Definition: GridLayoutGenerator.h:15
Atoms::GridLayoutGenerator::typeName
const char * typeName() override
Get the type name for this generator.
Definition: GridLayoutGenerator.h:82
Atoms::GridLayoutGenerator::generate
virtual std::vector< AgentInitData > generate(double time)
Generate a vector of agent init data.
AtomsCore::Matrix
AtomsMath::Matrix Matrix
Matrix class.
Definition: AtomsMath.h:63
AtomsCore::Vector3
AtomsMath::Vector3 Vector3
Vector3 class.
Definition: AtomsMath.h:57
Atoms
Atoms namespace.
Definition: Agent.h:28
Atoms::DynamicLayoutGenerator
Definition: DynamicLayoutGenerator.h:15