Camera data moved to c++ - WIP

This commit is contained in:
Enrico Turri 2018-05-14 11:31:58 +02:00
parent 32063cbe23
commit 1fd59144c7
8 changed files with 190 additions and 50 deletions

View file

@ -1767,6 +1767,11 @@ void _3DScene::set_camera_type(wxGLCanvas* canvas, unsigned int type)
s_canvas_mgr.set_camera_type(canvas, type);
}
std::string _3DScene::get_camera_type_as_string(wxGLCanvas* canvas)
{
return s_canvas_mgr.get_camera_type_as_string(canvas);
}
float _3DScene::get_camera_zoom(wxGLCanvas* canvas)
{
return s_canvas_mgr.get_camera_zoom(canvas);

View file

@ -549,6 +549,7 @@ public:
static unsigned int get_camera_type(wxGLCanvas* canvas);
static void set_camera_type(wxGLCanvas* canvas, unsigned int type);
static std::string get_camera_type_as_string(wxGLCanvas* canvas);
static float get_camera_zoom(wxGLCanvas* canvas);
static void set_camera_zoom(wxGLCanvas* canvas, float zoom);

View file

@ -18,6 +18,20 @@ GLCanvas3D::Camera::Camera()
{
}
std::string GLCanvas3D::Camera::get_type_as_string() const
{
switch (type)
{
default:
case CT_Unknown:
return "unknown";
case CT_Perspective:
return "perspective";
case CT_Ortho:
return "ortho";
};
}
GLCanvas3D::GLCanvas3D(wxGLCanvas* canvas, wxGLContext* context)
: m_canvas(canvas)
, m_context(context)
@ -56,6 +70,11 @@ void GLCanvas3D::set_camera_type(GLCanvas3D::Camera::EType type)
m_camera.type = type;
}
std::string GLCanvas3D::get_camera_type_as_string() const
{
return m_camera.get_type_as_string();
}
float GLCanvas3D::get_camera_zoom() const
{
return m_camera.zoom;

View file

@ -31,6 +31,8 @@ public:
Pointf3 target;
Camera();
std::string get_type_as_string() const;
};
private:
@ -52,6 +54,7 @@ public:
Camera::EType get_camera_type() const;
void set_camera_type(Camera::EType type);
std::string get_camera_type_as_string() const;
float get_camera_zoom() const;
void set_camera_zoom(float zoom);

View file

@ -181,6 +181,12 @@ void GLCanvas3DManager::set_camera_type(wxGLCanvas* canvas, unsigned int type)
it->second->set_camera_type((GLCanvas3D::Camera::EType)type);
}
std::string GLCanvas3DManager::get_camera_type_as_string(wxGLCanvas* canvas) const
{
CanvasesMap::const_iterator it = _get_canvas(canvas);
return (it != m_canvases.end()) ? it->second->get_camera_type_as_string() : "unknown";
}
float GLCanvas3DManager::get_camera_zoom(wxGLCanvas* canvas) const
{
CanvasesMap::const_iterator it = _get_canvas(canvas);

View file

@ -59,7 +59,8 @@ public:
unsigned int get_camera_type(wxGLCanvas* canvas) const;
void set_camera_type(wxGLCanvas* canvas, unsigned int type);
std::string get_camera_type_as_string(wxGLCanvas* canvas) const;
float get_camera_zoom(wxGLCanvas* canvas) const;
void set_camera_zoom(wxGLCanvas* canvas, float zoom);

View file

@ -222,7 +222,15 @@ set_camera_type(canvas, type)
unsigned int type;
CODE:
_3DScene::set_camera_type((wxGLCanvas*)wxPli_sv_2_object(aTHX_ canvas, "Wx::GLCanvas"), type);
std::string
get_camera_type_as_string(canvas)
SV *canvas;
CODE:
RETVAL = _3DScene::get_camera_type_as_string((wxGLCanvas*)wxPli_sv_2_object(aTHX_ canvas, "Wx::GLCanvas"));
OUTPUT:
RETVAL
float
get_camera_zoom(canvas)
SV *canvas;