-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathScene.h
85 lines (72 loc) · 2.74 KB
/
Scene.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
//
// Created by rcabido on 12/11/19.
//
#ifndef ENGINE_SCENE_H
#define ENGINE_SCENE_H
#include <vector>
#include "FlyingCamera.h"
#include "Player.h"
#include "Enemy.h"
#include "Cuboid.h"
#include "Bullet.h"
using namespace std;
///////////////////////////////////////////////////////////////////////////
// CLASE SCENE //
class Scene {
private:
FlyingCamera camera; //Cámara actual
Player p; //Jugador
vector<Cuboid*> limitsScenario; //Vector de límites del escenario
vector<FlyingCamera> cameras; //Vector de cámaras de la escena
vector<Bullet*> bullets; //Vector de balas
vector<Enemy*> enemies; //Vector de enemigos
Vector3D size; //Tamaño de la escena
Vector3D gravity; //Gravedad de la escena
bool completed; //Escena completada
int id; //ID de la escena
public:
//Constructor
Scene(const int& id = 0, const bool& completed = false, const Vector3D& size = Vector3D(50.0, 10.0, 50.0), const Vector3D& cameraPos = Vector3D(5.0, 0.0, 20.0),
const Vector3D& cameraOr = Vector3D(), const Vector3D& gravity = Vector3D(0.0, -0.01, 0.0), const Player& p = Player());
//Getters
Vector3D getSize() const;
Vector3D getGravity() const;
FlyingCamera getCamera() const;
Player getPlayer();
vector<Enemy*> getEnemies() const;
bool getCompleted() const;
int getId() const;
//Setters
void setCamera(FlyingCamera camera);
void setPlayer(Player p);
void setFirstPersonCamera(FlyingCamera fC);
Player setNewPlayer(Vector3D pos);
FlyingCamera setNewFirstPersonCamera(Vector3D pos);
void setId(int i);
void setCompleted(bool c);
//Métodos de edición de escena
void addLimitScenario(Cuboid* obj);
void addCamera(FlyingCamera cam);
void addBullet(Bullet* b);
void addEnemy(Enemy* e);
void clearScene();
//Métodos de movimiento
void processMouseMovement(const int& x, const int& y);
void processMouseClick(const int& button, const int& state, const int& x, const int& y);
void playerMovement(unsigned char key, int px, int py);
void cameraMovement(unsigned char key, int px, int py);
void firstPersonCameraMovement(unsigned char key, int px, int py);
void upperCameraMovement(unsigned char key, int px, int py);
void processKeyPressed(unsigned char key, int px, int py);
//Métodos de colisiones
void collisionWithLimits(int& i, float& xP, float& zP, float& xM, float& zM);
void collisionWithPlayer(int& i, float& xP, float& zP, float& xM, float& zM);
void collisionWithEnemies(int& i, float& xP, float& zP, float& xM, float& zM);
//Otros métodos
void render();
void update(const float &deltaTime);
void updateLimits(const float& deltaTime);
void updateBullets(const float& deltaTime);
void updateEnemies(const float& deltaTime);
};
#endif //ENGINE_SCENE_H