Bbop-2D 0.4.1-alpha
Bbop-2D is a c++ library based on openGL to make 2D game. It implement sprite, shape, light and more.
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{
39 public:
43 Shape(GLfloat *vertices, GLsizeiptr verticesSize, GLuint *indices,
44 GLsizeiptr indicesSize);
45
49 Shape();
50
54 Shape(const Shape &other);
55
59 ~Shape();
60
64 void initShape(GLfloat *vertices, GLsizeiptr verticesSize,
65 GLuint *indices, GLsizeiptr indicesSize);
66
72 const Vector2f &getSize() const;
73
79 void setSize(const Vector2f &nSize);
80
87 void setSize(float x_, float y_);
88
94 const Vector2f &getPosition() const;
95
101 void setPosition(const Vector2f &nPos);
102
109 void setPosition(float x_, float y_);
110
116 const Vector2f &getOrigin() const;
117
123 void setOrigin(const Vector2f &nOrigin);
124
131 void setOrigin(float x_, float y_);
132
138 const Vector3i &getColor() const;
139
145 void setColor(const Vector3i &nRGB);
146
154 void setColor(int x_, int y_, int z_);
155
161 float getAlpha() const;
162
168 void setAlpha(float nAlpha);
169
175 float getRotation() const;
176
182 void setRotation(float nRotation);
183
190
196 void setAutoUpdateCollision(bool etat);
197
203 void move(const Vector2f &vecM);
204
211 void move(float x_, float y_);
212
213 protected:
214 VAO shapeVAO; //<! VAO de opengl de la Shape
215 VBO shapeVBO; //<! VBO opengl de la Shape
216 EBO shapeEBO; //<! EBO opengl de la Shape
217 Vector2f pos; //<! position de la shape
218 Vector2f size; //<! taille de la shape
219 Vector2f origin; //<! origin de la shape
220 Vector3i RGB; //<! couleur de la shape
221 bool autoUpdateCollision; //<! activation automatique des collisions
222 float rotation; //<! rotation
223 CollisionBox shapeCollisionBox; //<! boîte de collision
224 float alpha; //<! transparence de la shape
225 virtual void buildVAO() = 0;
226 virtual void updateVBO() = 0;
227 virtual void updateVBORGB() = 0;
228 virtual void updateVBOAlpha() = 0;
229};
230
234class RectangleShape : public Shape
235{
236 public:
241
248 RectangleShape(Vector2f nSize, Vector2f nPos);
250 Vector2f nSize, Vector2f nPos, Vector3i nRGB, Vector2f nOrigin);
251 RectangleShape(Vector2f nSize, Vector2f nPos, Vector3i nRGB,
252 Vector2f nOrigin, float nRotation, float nAlpha);
253
254 void Draw(GLint *renderUniforms) const override;
255
256 private:
257 GLfloat vertices[24];
258 GLuint indices[6];
259 void buildVAO() override;
260 void updateVBO() override;
261 void updateVBORGB() override;
262 void updateVBOAlpha() override;
263};
264
268class ConvexShape : public Shape
269{
270 public:
276 ConvexShape();
277
284 ConvexShape(int nnPoint, Vector2f *nlistPoint);
285 ConvexShape(int nnPoint, Vector2f *nlistPoint, Vector2f nSize,
286 Vector2f nPos);
287 ConvexShape(int nnPoint, Vector2f *nlistPoint, Vector2f nSize,
288 Vector2f nPos, Vector3i nRGB, Vector2f nOrigin);
289 ConvexShape(int nnPoint, Vector2f *nlistPoint, Vector2f nSize,
290 Vector2f nPos, Vector3i nRGB, Vector2f nOrigin, float nRotation,
291 float nAlpha);
292
293 ConvexShape(const ConvexShape &other);
294 ~ConvexShape();
295
296 ConvexShape &operator=(const ConvexShape &other);
297
304 void initConvex(int nnPoint, Vector2f *nlistPoint);
305
306 void Draw(GLint *renderUniforms) const override;
307
308 private:
309 GLfloat *vertices;
310 GLuint *indices;
313 void buildVAO() override;
314 void updateVBO() override;
315 void updateVBORGB() override;
316 void updateVBOAlpha() override;
317};
318
326{
327 public:
336 CircleShape(int nnPoint, float nRadius);
337 CircleShape(int nnPoint, float nRadius, Vector2f nSize, Vector2f nPos);
338 CircleShape(int nnPoint, float nRadius, Vector2f nSize, Vector2f nPos,
339 Vector3i nRGB, Vector2f nOrigin);
340 CircleShape(int nnPoint, float nRadius, Vector2f nSize, Vector2f nPos,
341 Vector3i nRGB, Vector2f nOrigin, float nRotation, float nAlpha);
342
348 float getRadius() const;
349
355 void setRadius(float nRadius);
356
362 int getNPointCircle() const;
363
369 void setNPointCircle(int nnPoint);
370
371 private:
372 float radius;
374
375 protected:
379 void buildConvex();
380};
381
382#endif // ! SHAPE_CLASS_H
Class Parent de tous ce qui peut être dessiné par une Scene.
Definition bbopGlobal.h:94
Gère un cercle.
Definition shapeClass.h:326
void buildConvex()
Recalcule la géometrie du cercle.
Definition shapeClass.cpp:579
float radius
Definition shapeClass.h:372
int getNPointCircle() const
Renvoie le nombre de point du cercle.
Definition shapeClass.cpp:608
float getRadius() const
Renvoie le rayon du cercle.
Definition shapeClass.cpp:600
int nPointCircle
Definition shapeClass.h:373
void setRadius(float nRadius)
Change le rayon du cercle.
Definition shapeClass.cpp:594
void setNPointCircle(int nnPoint)
Change le nombre de point du cercle.
Definition shapeClass.cpp:602
gère une boîte de collision
Definition collisionBoxClass.h:28
Gère une convex.
Definition shapeClass.h:269
Vector2f * listPoint
Definition shapeClass.h:312
void updateVBORGB() override
Definition shapeClass.cpp:513
void initConvex(int nnPoint, Vector2f *nlistPoint)
Initialise la convex comme le constructeur.
Definition shapeClass.cpp:418
void buildVAO() override
Definition shapeClass.cpp:443
void updateVBOAlpha() override
Definition shapeClass.cpp:529
int nPoint
Definition shapeClass.h:311
void Draw(GLint *renderUniforms) const override
Déssine l'objet héritant de la class.
Definition shapeClass.cpp:538
ConvexShape & operator=(const ConvexShape &other)
Definition shapeClass.cpp:399
~ConvexShape()
Definition shapeClass.cpp:436
GLuint * indices
Definition shapeClass.h:310
void updateVBO() override
Definition shapeClass.cpp:494
GLfloat * vertices
Definition shapeClass.h:309
ConvexShape()
Constructeur par défault de la convex.
Definition shapeClass.cpp:383
Definition EBO.h:21
Gère un rectangle/carré
Definition shapeClass.h:235
GLfloat vertices[24]
Definition shapeClass.h:257
void updateVBOAlpha() override
Definition shapeClass.cpp:334
GLuint indices[6]
Definition shapeClass.h:258
RectangleShape()
Constructeur par défault du rectangle.
Definition shapeClass.cpp:208
void updateVBO() override
Definition shapeClass.cpp:285
void updateVBORGB() override
Definition shapeClass.cpp:320
void Draw(GLint *renderUniforms) const override
Déssine l'objet héritant de la class.
Definition shapeClass.cpp:277
void buildVAO() override
Definition shapeClass.cpp:214
Class parente de toutes les formes géométriques(RectangleShape, ConvexShape, CircleShape,...
Definition shapeClass.h:38
CollisionBox & getCollisionBox()
Renvoie la boîte de collision de Shape.
Definition shapeClass.cpp:175
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:177
const Vector2f & getPosition() const
Renvoie la position du Shape.
Definition shapeClass.cpp:167
virtual void updateVBOAlpha()=0
VAO shapeVAO
Definition shapeClass.h:214
void setRotation(float nRotation)
Change la rotation de la Shape.
Definition shapeClass.cpp:131
void initShape(GLfloat *vertices, GLsizeiptr verticesSize, GLuint *indices, GLsizeiptr indicesSize)
Initialise la Shape comme sont constructeur.
Definition shapeClass.cpp:53
VBO shapeVBO
Definition shapeClass.h:215
void setAlpha(float nAlpha)
Change la transaprence de la Shape.
Definition shapeClass.cpp:139
const Vector3i & getColor() const
Renvoie la couleur de Shape.
Definition shapeClass.cpp:169
void move(const Vector2f &vecM)
Déplace la Shape.
Definition shapeClass.cpp:145
float alpha
Definition shapeClass.h:224
virtual void updateVBORGB()=0
const Vector2f & getSize() const
Renvoie la Taille du Shape.
Definition shapeClass.cpp:163
const Vector2f & getOrigin() const
Renvoie l'origine de la Shape.
Definition shapeClass.cpp:165
virtual void buildVAO()=0
Vector2f size
Definition shapeClass.h:218
Vector3i RGB
Definition shapeClass.h:220
void setOrigin(const Vector2f &nOrigin)
Change l'origine de la Shape.
Definition shapeClass.cpp:98
~Shape()
Destructeur de shape.
Definition shapeClass.cpp:37
void setSize(const Vector2f &nSize)
Change la taille du Shape.
Definition shapeClass.cpp:60
Shape()
Constructeur par défault de Shape.
Definition shapeClass.cpp:29
CollisionBox shapeCollisionBox
Definition shapeClass.h:223
bool autoUpdateCollision
Definition shapeClass.h:221
void setColor(const Vector3i &nRGB)
Change la couleur de Shape.
Definition shapeClass.cpp:117
Vector2f pos
Definition shapeClass.h:217
void setPosition(const Vector2f &nPos)
Change la position du Shape.
Definition shapeClass.cpp:79
EBO shapeEBO
Definition shapeClass.h:216
Vector2f origin
Definition shapeClass.h:219
float rotation
Definition shapeClass.h:222
float getAlpha() const
Renvoie la transaprence du la Shape.
Definition shapeClass.cpp:173
float getRotation() const
Renvoie la rotation de la Shape.
Definition shapeClass.cpp:171
Definition VAO.h:23
Definition VBO.h:21
Definition bbopMathClass.h:47
Definition bbopMathClass.h:80