summaryrefslogtreecommitdiff
path: root/engine-ocean/Game/Environment/water.cpp
diff options
context:
space:
mode:
authorjjesswan <jessica_wan@brown.edu>2024-04-22 21:56:26 -0400
committerjjesswan <jessica_wan@brown.edu>2024-04-22 21:56:26 -0400
commita556b45abf18f1bd509daaf63b66b7d55e9fd291 (patch)
treebc9b8a2d184c12aee236e7f9f276a34b84ca552d /engine-ocean/Game/Environment/water.cpp
parentcd7c76017a12bb548036571c1ff13e551369d06d (diff)
add engine version
Diffstat (limited to 'engine-ocean/Game/Environment/water.cpp')
-rw-r--r--engine-ocean/Game/Environment/water.cpp48
1 files changed, 48 insertions, 0 deletions
diff --git a/engine-ocean/Game/Environment/water.cpp b/engine-ocean/Game/Environment/water.cpp
new file mode 100644
index 0000000..537bfbd
--- /dev/null
+++ b/engine-ocean/Game/Environment/water.cpp
@@ -0,0 +1,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;
+}
+
+