work on object system
This commit is contained in:
@@ -51,19 +51,6 @@ void Sandbox::onLoad() {
|
||||
|
||||
window->getRenderer()->clearColor = { 0.2, 0.2, 0.4, 0.7 };
|
||||
|
||||
gridShader = Archimedes::Shader(cubeVS, gridFS, Archimedes::Shader::LoadType::FromSource);
|
||||
|
||||
window->getRenderer()->useShader(gridShader);
|
||||
|
||||
grid = Archimedes::RenderTarget(
|
||||
Archimedes::VertexBuffer(gridVertices, 12 * sizeof(float)),
|
||||
Archimedes::IndexArray(gridIndices, 6),
|
||||
Archimedes::VertexLayout(),
|
||||
gridShader
|
||||
);
|
||||
|
||||
window->getRenderer()->useRenderTarget(grid);
|
||||
|
||||
|
||||
cubeShader = Archimedes::Shader(cubeVS, cubeFS, Archimedes::Shader::LoadType::FromSource);
|
||||
|
||||
@@ -76,7 +63,17 @@ void Sandbox::onLoad() {
|
||||
cubeShader
|
||||
);
|
||||
|
||||
window->getRenderer()->useRenderTarget(cube);
|
||||
window->getRenderer()->setupRenderTarget(cube);
|
||||
|
||||
grid = Archimedes::RenderTarget(
|
||||
Archimedes::VertexBuffer(gridVertices, 12 * sizeof(float)),
|
||||
Archimedes::IndexArray(gridIndices, 6),
|
||||
Archimedes::VertexLayout(),
|
||||
cubeShader
|
||||
);
|
||||
|
||||
window->getRenderer()->setupRenderTarget(grid);
|
||||
|
||||
|
||||
int w, h;
|
||||
window->getSize(w, h);
|
||||
@@ -89,19 +86,13 @@ void Sandbox::run() {
|
||||
static float scale = 1.0f;
|
||||
|
||||
static glm::vec3 pos(0), rot(0);
|
||||
|
||||
static glm::vec4 color = { 0.4f, 0.0f, 0.3f, 1.0f };
|
||||
|
||||
static glm::vec3 camPos(0.0f, 0.0f, 3.0f), camRot(0.0f, glm::pi<float>(), 0.0f);
|
||||
|
||||
static glm::mat4 orthoCamera, perspCamera, cameraTransform;
|
||||
|
||||
std::vector<glm::vec3> otf = {
|
||||
glm::vec3(0.5f, 0.5f, 0.0f),
|
||||
glm::vec3(-0.5f, -0.5f, 0.0f),
|
||||
|
||||
glm::vec3(-0.5f, 0.5f, 0.0f),
|
||||
glm::vec3(0.5f, -0.5f, 0.0f)
|
||||
};
|
||||
|
||||
/*
|
||||
cameraTransform = glm::mat4(1.0f);
|
||||
cameraTransform = glm::translate(cameraTransform, camPos);
|
||||
@@ -140,7 +131,7 @@ void Sandbox::run() {
|
||||
cubeTransform = glm::rotate(cubeTransform, rot.y, glm::vec3(0.0f, 1.0f, 0.0f));
|
||||
cubeTransform = glm::rotate(cubeTransform, rot.z, glm::vec3(0.0f, 0.0f, 1.0f));
|
||||
cubeTransform = glm::scale(cubeTransform, glm::vec3(scale));
|
||||
|
||||
|
||||
|
||||
//gridTransform = glm::mat4(1.0f);
|
||||
//gridTransform = glm::scale(gridTransform, glm::vec3(800.0f));
|
||||
@@ -159,7 +150,7 @@ void Sandbox::run() {
|
||||
|
||||
|
||||
//window->getRenderer()->draw(grid);
|
||||
window->getRenderer()->draw(cube);
|
||||
window->getRenderer()->draw(cube, color, Archimedes::Renderer::RenderMode::Triangles);
|
||||
|
||||
|
||||
{
|
||||
@@ -187,6 +178,11 @@ void Sandbox::run() {
|
||||
ImGui::SliderFloat("y", &pos.y, -10.0f, 10.0f);
|
||||
ImGui::SliderFloat("z", &pos.z, -10.0f, 10.0f);
|
||||
|
||||
ImGui::SliderFloat("cube r", &color.r, 0.0f, 1.0f);
|
||||
ImGui::SliderFloat("cube g", &color.g, 0.0f, 1.0f);
|
||||
ImGui::SliderFloat("cube b", &color.b, 0.0f, 1.0f);
|
||||
ImGui::SliderFloat("cube a", &color.a, 0.0f, 1.0f);
|
||||
|
||||
ImGui::Text("Camera Properties");
|
||||
|
||||
ImGui::SliderFloat("c_pitch", &camRot.x, -glm::pi<float>(), glm::pi<float>());
|
||||
@@ -207,8 +203,31 @@ void Sandbox::run() {
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
bool Sandbox::onEvent(const Archimedes::Event& e) {
|
||||
|
||||
unsigned int type = app->getEventType(e);
|
||||
|
||||
|
||||
if(type == app->getEventType(Archimedes::KeyPressedWindowEvent())) {
|
||||
|
||||
return false;
|
||||
} else if(type == app->getEventType(Archimedes::KeyReleasedWindowEvent())) {
|
||||
|
||||
return false;
|
||||
} else if(type == app->getEventType(Archimedes::MouseButtonPressedWindowEvent())) {
|
||||
|
||||
return false;
|
||||
} else if(type == app->getEventType(Archimedes::MouseButtonReleasedWindowEvent())) {
|
||||
|
||||
return false;
|
||||
} else if(type == app->getEventType(Archimedes::ScrollWindowEvent())) {
|
||||
|
||||
return false;
|
||||
} else if(type == app->getEventType(Archimedes::MouseMovedWindowEvent())) {
|
||||
|
||||
return false;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -29,46 +29,22 @@ class Sandbox : public Archimedes::Module {
|
||||
"layout (location = 0) in vec3 aPos;\n"
|
||||
"uniform mat4 model;\n"
|
||||
"uniform uvec2 res;\n"
|
||||
"uniform vec4 clearColor;\n"
|
||||
"uniform vec4 color;\n"
|
||||
"void main()\n"
|
||||
"{\n"
|
||||
" gl_Position = model * vec4(aPos.x, aPos.y, aPos.z, 1.0);\n"
|
||||
"}\0";
|
||||
|
||||
std::string cubeFS = "#version 330 core\n"
|
||||
"out vec4 FragColor;\n"
|
||||
"uniform mat4 model;\n"
|
||||
"uniform uvec2 res;\n"
|
||||
"uniform vec4 clearColor;\n"
|
||||
"uniform vec4 color;\n"
|
||||
"void main()\n"
|
||||
"{\n"
|
||||
" FragColor = vec4(0.6f, 0.1f, 0.1f, 1.0f);\n"
|
||||
" FragColor = color;\n"
|
||||
"}\n\0";
|
||||
|
||||
std::string gridFS = "#version 330 core\n"
|
||||
"out vec4 FragColor;\n"
|
||||
"uniform mat4 model;\n"
|
||||
"uniform uvec2 res;\n"
|
||||
"uniform vec4 clearColor;\n"
|
||||
"vec2 pos = gl_FragCoord.xy - res / 2.0f;\n"
|
||||
"int gridSpacing = 50;"
|
||||
"void main()\n"
|
||||
"{\n"
|
||||
" switch((int(pos.x)) * (int(pos.y))) {\n"
|
||||
" case 0:\n"
|
||||
" FragColor = vec4(1.0f);\n"
|
||||
" break;\n"
|
||||
" default:\n"
|
||||
" switch((int(pos.x) % gridSpacing) * (int(pos.y) % gridSpacing)) {\n"
|
||||
" case 0:\n"
|
||||
" FragColor = vec4(0.7f, 0.7f, 0.7f, 1.0f);\n"
|
||||
" break;\n"
|
||||
" default:\n"
|
||||
" discard;\n"
|
||||
" break;\n"
|
||||
" }\n"
|
||||
" break;\n"
|
||||
" }\n"
|
||||
"}\n\0";
|
||||
|
||||
Archimedes::Shader cubeShader, gridShader;
|
||||
Archimedes::RenderTarget cube, grid;
|
||||
|
||||
@@ -112,5 +112,29 @@ void ImguiModule::run() {
|
||||
|
||||
bool ImguiModule::onEvent(const Archimedes::Event &e) {
|
||||
|
||||
unsigned int type = app->getEventType(e);
|
||||
|
||||
ImGuiIO& io = ImGui::GetIO(); (void)io;
|
||||
|
||||
if(type == app->getEventType(Archimedes::KeyPressedWindowEvent())) {
|
||||
|
||||
return io.WantCaptureKeyboard;
|
||||
} else if(type == app->getEventType(Archimedes::KeyReleasedWindowEvent())) {
|
||||
|
||||
return io.WantCaptureKeyboard;
|
||||
} else if(type == app->getEventType(Archimedes::MouseButtonPressedWindowEvent())) {
|
||||
|
||||
return io.WantCaptureMouse;
|
||||
} else if(type == app->getEventType(Archimedes::MouseButtonReleasedWindowEvent())) {
|
||||
|
||||
return io.WantCaptureMouse;
|
||||
} else if(type == app->getEventType(Archimedes::ScrollWindowEvent())) {
|
||||
|
||||
return io.WantCaptureMouse;
|
||||
} else if(type == app->getEventType(Archimedes::MouseMovedWindowEvent())) {
|
||||
|
||||
return io.WantCaptureMouse;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user