Level H Engine
Flocking.h
Go to the documentation of this file.
1 #pragma once
2 
3 #include <vector>
4 #include "Boid.h"
5 #include "../Maths/Vec2.h"
6 
11 class Flocking
12 {
13 public:
22  Flocking(int inNumberOfBoids, std::string inSpriteID, int inXBoundary, int inYBoundary, float inMaxVel);
23 
36  Flocking(int inNumberOfBoids, std::string inMesh, std::string inBoidTexture, std::string inBoidVertexShader,
37  std::string inBoidFragmentShader, int inXBoundary, int inYBoundary, int inZBoundary, float inMaxVel);
38 
50  Flocking(int inNumberOfBoids, std::string inMesh, std::string inBoidVertexShader,
51  std::string inBoidFragmentShader, int inXBoundary, int inYBoundary, int inZBoundary, float inMaxVel);
52 
56  ~Flocking();
57 
61  void update2D();
62 
66  void update3D();
67 
72  void draw2D();
73 
78  void setRule1(int inApplyRule1);
79 
84  void setRule2(int inApplyRule2);
85 
90  void setRule3(int inApplyRule3);
91 
92 private:
94  std::string spriteID;
96  std::vector<Boid*> boids;
102  float maxVel;
103 
109  Vec2 rule1(int index);
110 
116  Vec3 ruleOne3D(int index);
117 
123  Vec2 rule2(int index);
124 
130  Vec3 ruleTwo3D(int index);
131 
137  Vec2 rule3(int index);
138 
144  Vec3 ruleThree3D(int index);
145 
151  Vec2 roughBoundaries(int index);
152 
158  Vec3 roughBoundaries3D(int index);
159 
164  void limitVelocity(int index);
165 
170  void limitVelocity3D(int index);
171 };
Vec3 ruleThree3D(int index)
Applies Boid Rule 3.
Definition: Flocking.cpp:328
std::vector< Boid * > boids
A vector of Particle boids.
Definition: Flocking.h:96
~Flocking()
Destructs the Flocking object.
Definition: Flocking.cpp:93
float maxVel
The max velocity.
Definition: Flocking.h:102
Vec2 rule2(int index)
Applies Boid Rule 2.
Definition: Flocking.cpp:238
Contains the Vec2 structure with functions and overloaded operators.
Definition: Vec2.h:8
void update2D()
A function that updates the Flocking.
Definition: Flocking.cpp:102
Vec3 ruleTwo3D(int index)
Applies Boid Rule 2.
Definition: Flocking.cpp:267
Vec3 ruleOne3D(int index)
Applies Boid Rule 1.
Definition: Flocking.cpp:210
Vec2 rule3(int index)
Applies Boid Rule 3.
Definition: Flocking.cpp:302
void update3D()
A function that updates the Flocking.
Definition: Flocking.cpp:135
void draw2D()
Draws the 2D Flocking.
Definition: Flocking.cpp:172
Contains the Vec3 structure with functions and overloaded operators.
Definition: Vec3.h:8
Flocking(int inNumberOfBoids, std::string inSpriteID, int inXBoundary, int inYBoundary, float inMaxVel)
Constructs the 2D Flocking object.
Definition: Flocking.cpp:10
Vec2 roughBoundaries(int index)
Applies Boid rough boundaries.
Definition: Flocking.cpp:354
Creates a Flocking object. NOTE - This is a HEAVILY modifed version of code from a previous assignmen...
Definition: Flocking.h:11
void setRule1(int inApplyRule1)
Set applyRule1.
Definition: Flocking.cpp:488
void limitVelocity(int index)
Limits the Boid velocity.
Definition: Flocking.cpp:437
std::string spriteID
The ID of the 2D boid sprite.
Definition: Flocking.h:94
int xBoundary
The boundaries of the boids.
Definition: Flocking.h:100
int applyRule2
Definition: Flocking.h:98
void limitVelocity3D(int index)
Limits the Boid velocity.
Definition: Flocking.cpp:458
void setRule2(int inApplyRule2)
Set applyRule2.
Definition: Flocking.cpp:494
int applyRule1
What to do with the rule. (1 == possitve, 0 = neutral, -1 == negative)
Definition: Flocking.h:98
int zBoundary
Definition: Flocking.h:100
int yBoundary
Definition: Flocking.h:100
Vec3 roughBoundaries3D(int index)
Applies Boid rough boundaries.
Definition: Flocking.cpp:389
Vec2 rule1(int index)
Applies Boid Rule 1.
Definition: Flocking.cpp:182
void setRule3(int inApplyRule3)
Set applyRule3.
Definition: Flocking.cpp:500
int applyRule3
Definition: Flocking.h:98