save camera settings on selection to avoid different result when re-projecting the selection 2d screen points transformation (does not compile because of canvas.h cyclic dependency)
This commit is contained in:
18
src/canvas.h
18
src/canvas.h
@@ -6,6 +6,7 @@
|
||||
#include "brush.h"
|
||||
#include "action.h"
|
||||
#include "canvas_modes.h"
|
||||
#include <stack>
|
||||
|
||||
NS_START
|
||||
|
||||
@@ -100,6 +101,17 @@ struct PPIHeader
|
||||
}
|
||||
};
|
||||
|
||||
struct CameraData
|
||||
{
|
||||
glm::mat4 m_mv{ 1 };
|
||||
glm::mat4 m_proj{ 1 };
|
||||
glm::vec4 m_box{ 0 };
|
||||
glm::vec4 m_vp{ 0 };
|
||||
glm::vec2 m_pan{ 0 };
|
||||
glm::mat4 m_plane_unproject[6] = SIXPLETTE(glm::mat4(1));
|
||||
glm::vec3 m_plane_dir[6] = SIXPLETTE(glm::vec3(0));
|
||||
};
|
||||
|
||||
class Canvas
|
||||
{
|
||||
public:
|
||||
@@ -112,6 +124,7 @@ public:
|
||||
bool m_dirty = false;
|
||||
bool m_commit_delayed = false;
|
||||
bool m_dirty_stroke = false;
|
||||
std::stack<CameraData> m_camera_stack;
|
||||
|
||||
static Canvas* I;
|
||||
NodeCanvas* m_node = nullptr;
|
||||
@@ -241,6 +254,11 @@ public:
|
||||
void project2Dpoints(std::vector<vertex_t>& vertices);
|
||||
glm::vec3 project2Dpoint(glm::vec2 pt);
|
||||
std::vector<glm::vec2> face_to_shape2D(int plane_index);
|
||||
void push_camera();
|
||||
void pop_camera();
|
||||
CameraData get_camera();
|
||||
void set_camera(const CameraData& c);
|
||||
void reset_camera();
|
||||
};
|
||||
|
||||
class ActionStroke : public Action
|
||||
|
||||
Reference in New Issue
Block a user