Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
17 changes: 11 additions & 6 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,6 @@ enable_testing()
# Targets
#=========================================
add_executable(CaderaApp src/cadera.cpp
src/selection.cpp
src/callbacks.cpp
src/main.cpp
)
Expand All @@ -41,6 +40,7 @@ target_include_directories(pch_interface INTERFACE ${CMAKE_CURRENT_SOURCE_DIR}/s

target_include_directories(CaderaApp PRIVATE src/)

add_subdirectory(src/input)
add_subdirectory(src/render)
add_subdirectory(src/sketch)
add_subdirectory(src/text)
Expand All @@ -51,8 +51,6 @@ add_subdirectory(src/ux)
# Libraries
#=========================================



find_package(Vulkan REQUIRED)
target_link_libraries(pch_interface INTERFACE Vulkan::Vulkan)

Expand All @@ -68,8 +66,8 @@ target_link_libraries(pch_interface INTERFACE glm::glm)
find_package(Stb REQUIRED)
target_include_directories(pch_interface INTERFACE ${Stb_INCLUDE_DIR})

target_link_libraries(CaderaApp PRIVATE sketchlib)
target_link_libraries(CaderaApp PRIVATE textlib)
# Cadera Project Libraries
target_link_libraries(CaderaApp PRIVATE inputlib)

# Precompiled Headers
target_link_libraries(CaderaApp PUBLIC pch_interface)
Expand Down Expand Up @@ -112,5 +110,12 @@ add_subdirectory(test)
#=========================================
set(CPACK_PROJECT_NAME ${PROJECT_NAME})
set(CPACK_PROJECT_VERSION ${PROJECT_VERSION})
install(TARGETS CaderaApp RUNTIME DESTINATION bin)
install(TARGETS CaderaApp
RUNTIME
DESTINATION bin)

if(WIN32)
include(InstallRequiredSystemLibraries)
endif(WIN32)

include(CPack)
106 changes: 27 additions & 79 deletions src/cadera.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -5,99 +5,45 @@ namespace CADERA_APP_NAMESPACE {

void Cadera::initCallbacks() {

glfwSetWindowUserPointer(Render.mMainWindow, this);
glfwSetWindowUserPointer(mRender.mMainWindow, &this->input);

glfwSetMouseButtonCallback(Render.mMainWindow, mouse_button_callback);
glfwSetScrollCallback(Render.mMainWindow, scroll_callback);
glfwSetFramebufferSizeCallback(Render.mMainWindow,
glfwSetMouseButtonCallback(mRender.mMainWindow, mouse_button_callback);
glfwSetScrollCallback(mRender.mMainWindow, scroll_callback);
glfwSetFramebufferSizeCallback(mRender.mMainWindow,
framebuffer_resize_callback);
glfwSetCursorPosCallback(Render.mMainWindow, cursor_position_callback);
glfwSetKeyCallback(Render.mMainWindow, key_callback);
glfwSetCursorPosCallback(mRender.mMainWindow, cursor_position_callback);
glfwSetKeyCallback(mRender.mMainWindow, key_callback);
}

Cadera::Cadera() {
modelIdCounter = 0;
// Sketch.setType(cad_sketch);
}

Cadera::~Cadera() { Render.destroy(); }

void Cadera::SketchEvents() {

if (flags.test(cadera_delete) && !Render.Sel.selectedPoints.empty()) {
Sketch.deletion(Render.Sel.getSelectedPointIds());
Render.Sel.clear();
Render.Sel.setFlags();
Render.flags.set(render_update_sketch);
flags.reset(cadera_delete);
} else {
flags.reset(cadera_delete);
}

if (Render.flags.test(render_update_sketch)) {
Render.render(Sketch);
}

if (Sketch.flags.test(sketch::skt_move_points)) {

Render.Sel.select(Render.Cam.mouseRay, glm::vec3(0.0f, 0.0f, 0.0f),
Render.Cam.cameraVec, Render.Cam.pos, Render.Cam.cross,
Render.Cam.flags.test(cad::cam::ortho));

Sketch.movePoints(Render.Sel.selectedPoints, Render.Sel.point,
Render.Sel.flags.test(cad::sel::select_first_click));

std::vector<int> ids = Render.Sel.getSelectedPointIds();

std::map<int, Point> newPoints;

for (const auto &id : ids) {
newPoints[id] = Sketch.Points[id];
}

Render.Sel.update(newPoints);

Render.Sel.flags.reset(cad::sel::select_first_click);

Render.flags.set(render_update_sketch);
}

if (Sketch.flags.test(sketch::skt_point_tool)) {

Render.renderSketchPointTool();
}

if (Sketch.flags.test(sketch::skt_event_tool_deactivated)) {
Render.deleteBuffer(BufferName::sketch_point_tool);
Sketch.flags.reset(sketch::skt_event_tool_deactivated);
}
}
Cadera::~Cadera() { mRender.destroy(); }

void Cadera::run() {

Render.setBGColor(glm::vec4(0.3f, 0.3f, 0.3f, 0.1f));
mRender.setBGColor(glm::vec4(0.3f, 0.3f, 0.3f, 0.1f));

Render.Cam.flags.set(cam::ortho);
Render.setup();
mRender.Cam.flags.set(cam::ortho);
mRender.setup();

initCallbacks();

Render.initImgui();
mRender.initImgui();

Render.SktSolver.setActiveSketch(&Sketch);
mSelector.addRender(&mRender);

//Keyboard and Mouse Commands
input.setSketchCommands(&mSketch, &mRender.Cam, &mSelector);
input.setCameraCommands(&mRender.Cam);
input.setRenderCommands(&mRender);

// Mouse Commands
// TODO: Determine better way to handle commands
sketchAddPointCmd.setSketch(&Sketch);
sketchAddPointCmd.setSelector(&Render.Sel);
sketchAddPointCmd.setCamera(&Render.Cam);

cameraZoomCmd.setCamera(&Render.Cam);

Render.mouse.setScrollMouseSlot(&cameraZoomCmd);
Render.mouse.setLeftMouseSlot(&sketchAddPointCmd);
input.setMouse();
input.setKeyboard();



mainLoop();
}
Expand All @@ -109,17 +55,19 @@ void Cadera::run() {
*/
void Cadera::mainLoop() {

while (!glfwWindowShouldClose(Render.mMainWindow)) {
while (!glfwWindowShouldClose(mRender.mMainWindow)) {

glfwPollEvents();

gui::imguiRun(Sketch, Render, Render.Sel);
gui::imguiRun(mSketch, mRender, mSelector);

input.sketchMode(mSketch.flags);

SketchEvents();
mRender.createCommandBuffers();
mRender.drawFrame();
mRender.runCamera();

Render.createCommandBuffers();
Render.drawFrame();
Render.runCamera();
mRender.render();

glfwWaitEvents();
}
Expand Down
19 changes: 13 additions & 6 deletions src/cadera.hpp
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
#pragma once
#include "ux/gui.hpp"
#include "callbacks.hpp"

namespace CADERA_APP_NAMESPACE {

Expand Down Expand Up @@ -27,23 +28,29 @@ class Cadera {

int modelIdCounter;

sel::Selector mSelector;
CADRender mRender;

sketch::Sketch mSketch;

public:
// TODO: Restructure
command::SketchAddPointCommand sketchAddPointCmd;
command::CameraZoomCommand cameraZoomCmd;



command::Input input;
//-------------

CADRender Render;
sketch::Sketch Sketch;




std::bitset<cadera_num_flags> flags;

Cadera();

~Cadera();

void SketchEvents();

void run();

void mainLoop();
Expand Down
Loading
Loading