Sloth loves Chunk!
This commit is contained in:
@@ -1,7 +1,6 @@
|
||||
#include "engine.h"
|
||||
#include <algorithm>
|
||||
#include <cmath>
|
||||
#include <iostream>
|
||||
#include "transformation.h"
|
||||
#include "player.h"
|
||||
|
||||
@@ -11,6 +10,13 @@ Engine::~Engine() { }
|
||||
|
||||
void Engine::Init()
|
||||
{
|
||||
GLenum glewErr = glewInit();
|
||||
if (glewErr != GLEW_OK)
|
||||
{
|
||||
std::cerr << " ERREUR GLEW : " << glewGetErrorString(glewErr) << std::endl;
|
||||
abort();
|
||||
}
|
||||
|
||||
glClearColor(0.0f, 0.0f, 0.0f, 1.0f);
|
||||
glEnable(GL_TEXTURE_2D);
|
||||
|
||||
@@ -24,9 +30,6 @@ void Engine::Init()
|
||||
glEnable(GL_LINE_SMOOTH);
|
||||
glEnable(GL_CULL_FACE);
|
||||
|
||||
// Cull!
|
||||
glCullFace(GL_BACK);
|
||||
|
||||
// Light
|
||||
GLfloat light0Pos[4] = { 0.0f, CHUNK_SIZE_Y, 0.0f, 1.0f };
|
||||
GLfloat light0Amb[4] = { 0.9f, 0.9f, 0.9f, 1.f };
|
||||
@@ -50,6 +53,16 @@ void Engine::Init()
|
||||
// Blend
|
||||
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
|
||||
|
||||
// Init testChunk
|
||||
for (int x = 0; x < CHUNK_SIZE_X; ++x) {
|
||||
for (int z = 0; z < CHUNK_SIZE_Z; ++z) {
|
||||
for (int y = 0; y < 32; ++y) {
|
||||
if (x % 2 == 0 && y % 2 == 0 && z % 2 == 0)
|
||||
m_testChunk.SetBlock(x, y, z, BTYPE_DIRT);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
CenterMouse();
|
||||
HideCursor();
|
||||
}
|
||||
@@ -63,6 +76,13 @@ void Engine::LoadResource() {
|
||||
LoadTexture(m_textureCube2, TEXTURE_PATH "metal2.png");
|
||||
LoadTexture(m_textureCube3, TEXTURE_PATH "metal3.png");
|
||||
LoadTexture(m_textureCube4, TEXTURE_PATH "metal4.png");
|
||||
|
||||
std::cout << " Loading and compiling shaders ..." << std::endl;
|
||||
if (!m_shader01.Load(SHADER_PATH "shader01.vert", SHADER_PATH "shader01.frag", true))
|
||||
{
|
||||
std::cout << " Failed to load shader " << std::endl;
|
||||
exit(1);
|
||||
}
|
||||
}
|
||||
|
||||
void Engine::UnloadResource()
|
||||
@@ -172,98 +192,29 @@ void Engine::Render(float elapsedTime)
|
||||
glTexCoord2f(0, nbRep);
|
||||
glVertex3f(-100.f, -2.f, -100.f);
|
||||
glEnd();
|
||||
|
||||
// Cube
|
||||
all.ApplyTranslation(0.f, 0.f, -10.f);
|
||||
all.ApplyRotation(gameTime * 100.f, 0.f, 1.f, 0.f);
|
||||
all.ApplyRotation(gameTime * 100.f, 0.f, 0.f, 1.f);
|
||||
all.ApplyRotation(gameTime * 100.f, 1.f, 0.f, 0.f);
|
||||
all.Use();
|
||||
|
||||
switch ((int)(gameTime*5) % 4) {
|
||||
case 0:
|
||||
m_textureCube1.Bind();
|
||||
// Chunk
|
||||
switch ((int)(gameTime * 5) % 4) {
|
||||
case 0: m_textureCube1.Bind();
|
||||
break;
|
||||
case 1:
|
||||
m_textureCube2.Bind();
|
||||
case 1: m_textureCube2.Bind();
|
||||
break;
|
||||
case 2:
|
||||
m_textureCube3.Bind();
|
||||
case 2: m_textureCube3.Bind();
|
||||
break;
|
||||
case 3:
|
||||
m_textureCube4.Bind();
|
||||
case 3: m_textureCube4.Bind();
|
||||
break;
|
||||
}
|
||||
glEnable(GL_BLEND);
|
||||
glBegin(GL_QUADS);
|
||||
if (m_testChunk.IsDirty())
|
||||
m_testChunk.Update();
|
||||
m_shader01.Use();
|
||||
m_testChunk.Render();
|
||||
Shader::Disable();
|
||||
|
||||
glNormal3f(0, 0, 1);
|
||||
glTexCoord2f(0, 1);
|
||||
glVertex3f(0.5f, 0.5f, 0.5f);
|
||||
glTexCoord2f(1, 1);
|
||||
glVertex3f(-0.5f, 0.5f, 0.5f);
|
||||
glTexCoord2f(1, 0);
|
||||
glVertex3f(-0.5f, -0.5f, 0.5f);
|
||||
glTexCoord2f(0, 0);
|
||||
glVertex3f(0.5f, -0.5f, 0.5f);
|
||||
|
||||
glNormal3f(0, 0, -1);
|
||||
glTexCoord2f(1, 0);
|
||||
glVertex3f(0.5f, -0.5f, -0.5f);
|
||||
glTexCoord2f(0, 0);
|
||||
glVertex3f(-0.5f, -0.5f, -0.5f);
|
||||
glTexCoord2f(0, 1);
|
||||
glVertex3f(-0.5f, 0.5f, -0.5f);
|
||||
glTexCoord2f(1, 1);
|
||||
glVertex3f(0.5f, 0.5f, -0.5f);
|
||||
|
||||
glNormal3f(-1, 0, 0);
|
||||
glTexCoord2f(0, 1);
|
||||
glVertex3f(-0.5f, 0.5f, 0.5f);
|
||||
glTexCoord2f(1, 1);
|
||||
glVertex3f(-0.5f, 0.5f, -0.5f);
|
||||
glTexCoord2f(1, 0);
|
||||
glVertex3f(-0.5f, -0.5f, -0.5f);
|
||||
glTexCoord2f(0, 0);
|
||||
glVertex3f(-0.5f, -0.5f, 0.5f);
|
||||
|
||||
glNormal3f(1, 0, 0);
|
||||
glTexCoord2f(0, 1);
|
||||
glVertex3f(0.5f, 0.5f, -0.5f);
|
||||
glTexCoord2f(1, 1);
|
||||
glVertex3f(0.5f, 0.5f, 0.5f);
|
||||
glTexCoord2f(1, 0);
|
||||
glVertex3f(0.5f, -0.5f, 0.5f);
|
||||
glTexCoord2f(0, 0);
|
||||
glVertex3f(0.5f, -0.5f, -0.5f);
|
||||
|
||||
glNormal3f(0, 1, 0);
|
||||
glTexCoord2f(0, 0);
|
||||
glVertex3f(-0.5f, 0.5f, -0.5f);
|
||||
glTexCoord2f(0, 1);
|
||||
glVertex3f(-0.5f, 0.5f, 0.5f);
|
||||
glTexCoord2f(1, 1);
|
||||
glVertex3f(0.5f, 0.5f, 0.5f);
|
||||
glTexCoord2f(1, 0);
|
||||
glVertex3f(0.5f, 0.5f, -0.5f);
|
||||
|
||||
glNormal3f(0, -1, 0);
|
||||
glTexCoord2f(0, 0);
|
||||
glVertex3f(-0.5f, -0.5f, 0.5f);
|
||||
glTexCoord2f(0, 1);
|
||||
glVertex3f(-0.5f, -0.5f, -0.5f);
|
||||
glTexCoord2f(1, 1);
|
||||
glVertex3f(0.5f, -0.5f, -0.5f);
|
||||
glTexCoord2f(1, 0);
|
||||
glVertex3f(0.5f, -0.5f, 0.5f);
|
||||
glDisable(GL_BLEND);
|
||||
glEnd();
|
||||
}
|
||||
|
||||
void Engine::KeyPressEvent(unsigned char key)
|
||||
{
|
||||
switch (key)
|
||||
{
|
||||
switch (key) {
|
||||
case 36: // ESC
|
||||
Stop();
|
||||
break;
|
||||
@@ -316,8 +267,7 @@ void Engine::KeyPressEvent(unsigned char key)
|
||||
|
||||
void Engine::KeyReleaseEvent(unsigned char key)
|
||||
{
|
||||
switch (key)
|
||||
{
|
||||
switch (key) {
|
||||
case 24: // Y
|
||||
m_wireframe = !m_wireframe;
|
||||
if (m_wireframe)
|
||||
|
Reference in New Issue
Block a user