-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathnewCobra.cpp
67 lines (47 loc) · 1.92 KB
/
newCobra.cpp
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
#include "newCobra.h"
#include "glm/gtc/matrix_transform.hpp"
#include "Shader.hh"
#include <GL/glew.h>
#include <GLFW/glfw3.h>
newCobra::newCobra() { //construtor
}
newCobra::~newCobra() { //desconstrutor
clear();
}
void newCobra::createCobra() { //chama outra função das imagens
Imgs();
}
void newCobra::Imgs() { //importa as imagens
cabecaCobra.setTexture("cabeca.jpg");
corpoCobra.setTexture("pele.jpg");
}
void newCobra::Draw(int i, unsigned int width, unsigned int height, glm::vec3 cameraPos, glm::vec3 cameraFront, glm::vec3 cameraUp) { //desenha a arvore cabeça
if (i == 0) {
cabecaCobra.bind(); //textura da cabeça
caCobra = glm::mat4(1.0f);
caCobra = glm::rotate(caCobra, glm::radians(90.0f), glm::vec3(0.0, 1.0, 0.0)); //posição inicial da cabeça
caCobra = glm::scale(caCobra, glm::vec3(0.3f, 0.15f, 0.3f)); //faz a escala
caCobra = glm::translate(caCobra, moveCobra); //movimenta a cabeça
caCobra = glm::scale(caCobra, glm::vec3(1.0f, 0.95f, 0.8f)); //faz uma nova escala
cabecaCobra.setModel(caCobra); //passa o model para o vertex.vs
cabecaCobra.draw(width, height, cameraPos, cameraFront, cameraUp); // desenha a cabeça
cabecaCobra.closeBind();
}
else {
corpoCobra.bind();
coCobra = glm::mat4(1.0f);
coCobra = glm::rotate(coCobra, glm::radians(90.0f), glm::vec3(0.0, 1.0, 0.0)); //posição inicial do corpo
coCobra = glm::scale(coCobra, glm::vec3(0.3f, 0.15f, 0.3f));//faz a escala
coCobra = glm::translate(coCobra, moveCobra); //movimenta o corpo
corpoCobra.setModel(coCobra); //passa o model para o vertex.vs
corpoCobra.draw(width, height, cameraPos, cameraFront, cameraUp); // desenha o corpo
corpoCobra.closeBind();
}
}
void newCobra::cobra(glm::vec3 move) { //movimento da cobra
moveCobra = move;
}
void newCobra::clear() { //Limpa os objetos da classe cubo
cabecaCobra.clear();
corpoCobra.clear();
}