blob: 537bfbdbdaa044329d78e9d1bf48ace5bfafdefa (
plain)
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
|
#include "water.h"
#include "GLFW/glfw3.h"
Water::Water(std::shared_ptr<Camera> camera):
m_camera(camera)
{
initializeQuad();
}
void Water::initializeQuad(){
m_waterPlane = Global::graphics.addShape("water", "/Users/jesswan/Desktop/cs1950u/cs1950u-jjesswan/Resources/Meshes/howl_field_water.obj");
m_waterMT = std::make_shared<ModelTransform>();
m_waterMT->setScale(glm::vec3(1.f));
m_waterMT->setPos(glm::vec3(0.f));
Global::graphics.setWaterHeight(m_waterMT->getPos().y);
du_dv_map = Global::graphics.loadTextureFromFile_Repeat("/Users/jesswan/Desktop/cs1950u/cs1950u-jjesswan/Resources/Images/waterDUDV.png").textureID;
}
void Water::draw(){
Global::graphics.bindShader("water");
glActiveTexture(GL_TEXTURE8);
glBindTexture(GL_TEXTURE_2D, Global::graphics.getReflectionTexture());
glActiveTexture(GL_TEXTURE9);
glBindTexture(GL_TEXTURE_2D, Global::graphics.getRefractionTexture());
glActiveTexture(GL_TEXTURE10);
glBindTexture(GL_TEXTURE_2D, du_dv_map);
glUniform1f(glGetUniformLocation(Global::graphics.getShaderID("water"), "moveFactor"), m_moveFactor);
Global::graphics.setCameraData(m_camera);
Global::graphics.drawShape(Global::graphics.getShape("water"), m_waterMT);
}
void Water::update(double deltaTime){
m_moveFactor += WAVE_SPEED*deltaTime*.01f;
// loop back to 0 if it gets to one
if (m_moveFactor == 1) m_moveFactor = 0;
}
|