Bbop-Library 0.4.1-alpha
Opengl library to build 2d apps and game that implement a light system named Lumop
 
Loading...
Searching...
No Matches
shapeClass.h
Go to the documentation of this file.
1/*
2 * shapeClass.h
3 *
4 * Ce programme est distribué sous les termes de la Licence Publique
5 * Générale GNU, version 3.0, telle que publiée par la Free Software
6 * Foundation. Consultez la Licence Publique Générale GNU pour plus de
7 * détails.
8 *
9 * Vous devez avoir reçu une copie de la Licence Publique Générale GNU
10 * en même temps que ce programme. Si ce n'est pas le cas, consultez
11 * <https://www.gnu.org/licenses/>.
12 */
13
14#ifndef SHAPE_CLASS_H
15#define SHAPE_CLASS_H
16
17#include <GL/glew.h>
18#include <GLFW/glfw3.h>
19#include <initializer_list>
20
21#include "bbopMathClass.h"
22#include "bbopGlobal.h"
23#include "collisionBoxClass.h"
24#include "VAO.h"
25#include "VBO.h"
26#include "EBO.h"
27
37class Shape : public BbopDrawable
38{
39public:
40
44 Shape(GLfloat* vertices, GLsizeiptr verticesSize, GLuint* indices, GLsizeiptr indicesSize);
45
49 Shape();
50
54 Shape(const Shape &other);
55
59 ~Shape();
60
64 void initShape(GLfloat* vertices, GLsizeiptr verticesSize, GLuint* indices, GLsizeiptr indicesSize);
65
71 const Vector2f &getSize() const;
72
78 void setSize(const Vector2f &nSize);
79
86 void setSize(float x_, float y_);
87
93 const Vector2f &getPosition() const;
94
100 void setPosition(const Vector2f &nPos);
101
108 void setPosition(float x_, float y_);
109
115 const Vector2f &getOrigin() const;
116
122 void setOrigin(const Vector2f &nOrigin);
123
130 void setOrigin(float x_, float y_);
131
137 const Vector3i &getColor() const;
138
144 void setColor(const Vector3i &nRGB);
145
153 void setColor(int x_, int y_, int z_);
154
160 float getAlpha() const;
161
167 void setAlpha(float nAlpha);
168
174 float getRotation() const;
175
181 void setRotation(float nRotation);
182
189
195 void setAutoUpdateCollision(bool etat);
196
202 void move(const Vector2f &vecM);
203
210 void move(float x_, float y_);
211
212protected:
213 VAO shapeVAO; //<! VAO de opengl de la Shape
214 VBO shapeVBO; //<! VBO opengl de la Shape
215 EBO shapeEBO; //<! EBO opengl de la Shape
216 Vector2f pos; //<! position de la shape
217 Vector2f size; //<! taille de la shape
218 Vector2f origin; //<! origin de la shape
219 Vector3i RGB; //<! couleur de la shape
220 bool autoUpdateCollision; //<! activation automatique des collisions
221 float rotation; //<! rotation
222 CollisionBox shapeCollisionBox; //<! boîte de collision
223 float alpha; //<! transparence de la shape
224 virtual void buildVAO() = 0;
225 virtual void updateVBO() = 0;
226 virtual void updateVBORGB() = 0;
227 virtual void updateVBOAlpha() = 0;
228};
229
233class RectangleShape : public Shape
234{
235public:
236
241
248 RectangleShape(Vector2f nSize, Vector2f nPos);
249 RectangleShape(Vector2f nSize, Vector2f nPos, Vector3i nRGB, Vector2f nOrigin);
250 RectangleShape(Vector2f nSize, Vector2f nPos, Vector3i nRGB, Vector2f nOrigin, float nRotation, float nAlpha);
251
252 void Draw(GLint* renderUniforms) const override;
253private:
254 GLfloat vertices[24];
255 GLuint indices[6];
256 void buildVAO() override;
257 void updateVBO() override;
258 void updateVBORGB() override;
259 void updateVBOAlpha() override;
260};
261
265class ConvexShape : public Shape
266{
267public:
268
274 ConvexShape();
275
282 ConvexShape(int nnPoint, Vector2f* nlistPoint);
283 ConvexShape(int nnPoint, Vector2f* nlistPoint, Vector2f nSize, Vector2f nPos);
284 ConvexShape(int nnPoint, Vector2f* nlistPoint, Vector2f nSize, Vector2f nPos, Vector3i nRGB, Vector2f nOrigin);
285 ConvexShape(int nnPoint, Vector2f* nlistPoint, Vector2f nSize, Vector2f nPos, Vector3i nRGB, Vector2f nOrigin, float nRotation, float nAlpha);
286
287 ConvexShape(const ConvexShape& other);
288 ~ConvexShape();
289
290 ConvexShape& operator=(const ConvexShape& other);
291
298 void initConvex(int nnPoint, Vector2f* nlistPoint);
299
300 void Draw(GLint* renderUniforms) const override;
301private:
302 GLfloat* vertices;
303 GLuint* indices;
304 int nPoint;
305 Vector2f* listPoint;
306 void buildVAO() override;
307 void updateVBO() override;
308 void updateVBORGB() override;
309 void updateVBOAlpha() override;
310};
311
319{
320public:
321
330 CircleShape(int nnPoint, float nRadius);
331 CircleShape(int nnPoint, float nRadius, Vector2f nSize, Vector2f nPos);
332 CircleShape(int nnPoint, float nRadius, Vector2f nSize, Vector2f nPos, Vector3i nRGB, Vector2f nOrigin);
333 CircleShape(int nnPoint, float nRadius, Vector2f nSize, Vector2f nPos, Vector3i nRGB, Vector2f nOrigin, float nRotation, float nAlpha);
334
340 float getRadius() const;
341
347 void setRadius(float nRadius);
348
354 int getNPointCircle() const;
355
361 void setNPointCircle(int nnPoint);
362
363private:
364 float radius;
365 int nPointCircle;
366protected:
367
371 void buildConvex();
372};
373
374#endif // ! SHAPE_CLASS_H
Class Parent de tous ce qui peut être dessiné par une Scene.
Definition bbopGlobal.h:94
void buildConvex()
Recalcule la géometrie du cercle.
Definition shapeClass.cpp:537
int getNPointCircle() const
Renvoie le nombre de point du cercle.
Definition shapeClass.cpp:568
float getRadius() const
Renvoie le rayon du cercle.
Definition shapeClass.cpp:557
void setRadius(float nRadius)
Change le rayon du cercle.
Definition shapeClass.cpp:551
CircleShape(int nnPoint, float nRadius)
constructeur du cercle
Definition shapeClass.cpp:533
void setNPointCircle(int nnPoint)
Change le nombre de point du cercle.
Definition shapeClass.cpp:562
gère une boîte de collision
Definition collisionBoxClass.h:28
void initConvex(int nnPoint, Vector2f *nlistPoint)
Initialise la convex comme le constructeur.
Definition shapeClass.cpp:407
void Draw(GLint *renderUniforms) const override
Déssine l'objet héritant de la class.
Definition shapeClass.cpp:504
ConvexShape & operator=(const ConvexShape &other)
Definition shapeClass.cpp:388
~ConvexShape()
Definition shapeClass.cpp:423
ConvexShape()
Constructeur par défault de la convex.
Definition shapeClass.cpp:368
Definition EBO.h:21
RectangleShape()
Constructeur par défault du rectangle.
Definition shapeClass.cpp:235
void Draw(GLint *renderUniforms) const override
Déssine l'objet héritant de la class.
Definition shapeClass.cpp:284
CollisionBox & getCollisionBox()
Renvoie la boîte de collision de Shape.
Definition shapeClass.cpp:201
virtual void updateVBO()=0
void setAutoUpdateCollision(bool etat)
Change l'état de l'automatisation de la mise a jour de la boîte de collision.
Definition shapeClass.cpp:206
const Vector2f & getPosition() const
Renvoie la position du Shape.
Definition shapeClass.cpp:181
virtual void updateVBOAlpha()=0
Shape(GLfloat *vertices, GLsizeiptr verticesSize, GLuint *indices, GLsizeiptr indicesSize)
Constructeur de Shape.
Definition shapeClass.cpp:19
VAO shapeVAO
Definition shapeClass.h:213
void setRotation(float nRotation)
Change la rotation de la Shape.
Definition shapeClass.cpp:141
void initShape(GLfloat *vertices, GLsizeiptr verticesSize, GLuint *indices, GLsizeiptr indicesSize)
Initialise la Shape comme sont constructeur.
Definition shapeClass.cpp:69
VBO shapeVBO
Definition shapeClass.h:214
void setAlpha(float nAlpha)
Change la transaprence de la Shape.
Definition shapeClass.cpp:149
const Vector3i & getColor() const
Renvoie la couleur de Shape.
Definition shapeClass.cpp:186
void move(const Vector2f &vecM)
Déplace la Shape.
Definition shapeClass.cpp:155
float alpha
Definition shapeClass.h:223
virtual void updateVBORGB()=0
const Vector2f & getSize() const
Renvoie la Taille du Shape.
Definition shapeClass.cpp:171
const Vector2f & getOrigin() const
Renvoie l'origine de la Shape.
Definition shapeClass.cpp:176
virtual void buildVAO()=0
Vector2f size
Definition shapeClass.h:217
Vector3i RGB
Definition shapeClass.h:219
void setOrigin(const Vector2f &nOrigin)
Change l'origine de la Shape.
Definition shapeClass.cpp:111
~Shape()
Destructeur de shape.
Definition shapeClass.cpp:45
void setSize(const Vector2f &nSize)
Change la taille du Shape.
Definition shapeClass.cpp:75
Shape()
Constructeur par défault de Shape.
Definition shapeClass.cpp:32
CollisionBox shapeCollisionBox
Definition shapeClass.h:222
bool autoUpdateCollision
Definition shapeClass.h:220
void setColor(const Vector3i &nRGB)
Change la couleur de Shape.
Definition shapeClass.cpp:129
Vector2f pos
Definition shapeClass.h:216
void setPosition(const Vector2f &nPos)
Change la position du Shape.
Definition shapeClass.cpp:93
EBO shapeEBO
Definition shapeClass.h:215
Vector2f origin
Definition shapeClass.h:218
float rotation
Definition shapeClass.h:221
float getAlpha() const
Renvoie la transaprence du la Shape.
Definition shapeClass.cpp:196
float getRotation() const
Renvoie la rotation de la Shape.
Definition shapeClass.cpp:191
Definition VAO.h:23
Definition VBO.h:22
Definition bbopMathClass.h:45
Definition bbopMathClass.h:76