Skip to content
Snippets Groups Projects
Commit 6e64da3b authored by Martin Štourač's avatar Martin Štourač
Browse files

added switching of orthogonal axis views

parent 488f829c
No related branches found
No related tags found
No related merge requests found
...@@ -33,6 +33,14 @@ public: ...@@ -33,6 +33,14 @@ public:
void setSpeed(float _speed); void setSpeed(float _speed);
void teleport(glm::vec3 new_position) { bound_frame->setPosVec(new_position); } void teleport(glm::vec3 new_position) { bound_frame->setPosVec(new_position); }
void setRotation(glm::vec3 rotation) { bound_frame->setRotationQuat(rotation); }
void setRotation(glm::quat rotation) { bound_frame->setRotationQuat(rotation); }
void setPos(glm::vec3 position) { bound_frame->setPosVec(position); }
void setPos(float x, float y, float z) { bound_frame->setPosVec(glm::vec3(x, y, z)); }
void setPosX(float coord) { bound_frame->setPosVec(glm::vec3(coord, bound_frame->getPosition().y, bound_frame->getPosition().z)); }
void setPosY(float coord) { bound_frame->setPosVec(glm::vec3(bound_frame->getPosition().x, coord, bound_frame->getPosition().z)); }
void setPosZ(float coord) { bound_frame->setPosVec(glm::vec3(bound_frame->getPosition().x, bound_frame->getPosition().y, coord)); }
void keyboardMove(const std::unordered_set<std::string> &pressed_keys); void keyboardMove(const std::unordered_set<std::string> &pressed_keys);
void forward(); void forward();
......
...@@ -29,6 +29,12 @@ class Level ...@@ -29,6 +29,12 @@ class Level
public: public:
std::uint8_t getActiveIndex() const { return active; } std::uint8_t getActiveIndex() const { return active; }
float getActive() const { return axes[active]; } float getActive() const { return axes[active]; }
float getX() { return axes[0]; }
float getY() { return axes[1]; }
float getZ() { return axes[2]; }
std::array<float, 3> getAll() const { return axes; }
void setActiveIndex(std::uint8_t index) { active = index; }
void setActiveX() { active = 0; } void setActiveX() { active = 0; }
void setActiveY() { active = 1; } void setActiveY() { active = 1; }
void setActiveZ() { active = 2; } void setActiveZ() { active = 2; }
...@@ -71,6 +77,7 @@ public: ...@@ -71,6 +77,7 @@ public:
void setPrevPlaneIntersect(glm::vec3 _prev_plane_intersect) { prev_plane_intersect = _prev_plane_intersect; } void setPrevPlaneIntersect(glm::vec3 _prev_plane_intersect) { prev_plane_intersect = _prev_plane_intersect; }
void doObjectAction(scene_ptr scene, ctrlhub_ptr controls); void doObjectAction(scene_ptr scene, ctrlhub_ptr controls);
void updateCamera(scene_ptr scene, ctrlhub_ptr controls);
void selectObject(scene_ptr scene, ctrlhub_ptr controls); void selectObject(scene_ptr scene, ctrlhub_ptr controls);
void rotateObject(scene_ptr scene, ctrlhub_ptr controls); void rotateObject(scene_ptr scene, ctrlhub_ptr controls);
......
...@@ -24,6 +24,33 @@ void Editor::doObjectAction(scene_ptr scene, ctrlhub_ptr controls) ...@@ -24,6 +24,33 @@ void Editor::doObjectAction(scene_ptr scene, ctrlhub_ptr controls)
} }
} }
void Editor::updateCamera(scene_ptr scene, ctrlhub_ptr controls)
{
if (!keyboard.just_pressed().contains("I")
&& !keyboard.just_pressed().contains("K")
&& !keyboard.just_pressed().contains("L") )
return;
std::array<float, 3> levels = build_level.getAll();
std::array<glm::vec3, 3> rotations = { glm::vec3(0.0f, 90.0f, 0.0f), // L(x-depth)
glm::vec3(-89.0f, 0.0f, 0.0f), // I (y-depth) // FIX - should be -90.0f
glm::vec3(0.0f, 00.0f, 0.0f) }; // K (z-depth)
std::uint8_t new_active = 0;
if (keyboard.just_pressed().contains("I"))
new_active = 1;
if (keyboard.just_pressed().contains("K"))
new_active = 2;
if (keyboard.just_pressed().contains("L"))
new_active = 0;
levels[new_active] += 5.0f;
build_level.setActiveIndex(new_active);
controls->getActiveCamCtrl()->setRotation(rotations[new_active]);
controls->getActiveCamCtrl()->setPos(levels[0], levels[1], levels[2]);
}
void Editor::selectObject(scene_ptr scene, ctrlhub_ptr controls) void Editor::selectObject(scene_ptr scene, ctrlhub_ptr controls)
{ {
if (!mouse.just_released().contains("MouseLeft")) if (!mouse.just_released().contains("MouseLeft"))
......
...@@ -37,6 +37,7 @@ void Simulator::update() ...@@ -37,6 +37,7 @@ void Simulator::update()
controls->processInput(scene, keyboard(), timer(), window()); controls->processInput(scene, keyboard(), timer(), window());
controls->processMouse(mouse(), window(), editor->getEditorRunning()); controls->processMouse(mouse(), window(), editor->getEditorRunning());
editor->updateCamera(scene, controls);
editor->doObjectAction(scene, controls); editor->doObjectAction(scene, controls);
/* Rotation around x-axis demo */ /* Rotation around x-axis demo */
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment