mirror of
https://github.com/SoftFever/OrcaSlicer.git
synced 2025-07-11 00:37:51 -06:00
ENABLE_3DCONNEXION_Y_AS_ZOOM set as default
This commit is contained in:
parent
c877549b1b
commit
5797c9edc2
5 changed files with 1 additions and 48 deletions
|
@ -47,9 +47,6 @@
|
||||||
//==================
|
//==================
|
||||||
#define ENABLE_2_2_0_BETA1 1
|
#define ENABLE_2_2_0_BETA1 1
|
||||||
|
|
||||||
// Enable using Y axis of 3Dconnexion devices as zoom
|
|
||||||
#define ENABLE_3DCONNEXION_Y_AS_ZOOM (1 && ENABLE_2_2_0_BETA1)
|
|
||||||
|
|
||||||
// Enable a modified version of the toolbar textures where all the icons are separated by 1 pixel
|
// Enable a modified version of the toolbar textures where all the icons are separated by 1 pixel
|
||||||
#define ENABLE_MODIFIED_TOOLBAR_TEXTURES (1 && ENABLE_2_2_0_BETA1)
|
#define ENABLE_MODIFIED_TOOLBAR_TEXTURES (1 && ENABLE_2_2_0_BETA1)
|
||||||
|
|
||||||
|
|
|
@ -284,11 +284,7 @@ void AppConfig::set_recent_projects(const std::vector<std::string>& recent_proje
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#if ENABLE_3DCONNEXION_Y_AS_ZOOM
|
|
||||||
void AppConfig::set_mouse_device(const std::string& name, double translation_speed, double translation_deadzone, float rotation_speed, float rotation_deadzone, double zoom_speed)
|
void AppConfig::set_mouse_device(const std::string& name, double translation_speed, double translation_deadzone, float rotation_speed, float rotation_deadzone, double zoom_speed)
|
||||||
#else
|
|
||||||
void AppConfig::set_mouse_device(const std::string& name, double translation_speed, double translation_deadzone, float rotation_speed, float rotation_deadzone)
|
|
||||||
#endif // ENABLE_3DCONNEXION_Y_AS_ZOOM
|
|
||||||
{
|
{
|
||||||
std::string key = std::string("mouse_device:") + name;
|
std::string key = std::string("mouse_device:") + name;
|
||||||
auto it = m_storage.find(key);
|
auto it = m_storage.find(key);
|
||||||
|
@ -300,9 +296,7 @@ void AppConfig::set_mouse_device(const std::string& name, double translation_spe
|
||||||
it->second["translation_deadzone"] = std::to_string(translation_deadzone);
|
it->second["translation_deadzone"] = std::to_string(translation_deadzone);
|
||||||
it->second["rotation_speed"] = std::to_string(rotation_speed);
|
it->second["rotation_speed"] = std::to_string(rotation_speed);
|
||||||
it->second["rotation_deadzone"] = std::to_string(rotation_deadzone);
|
it->second["rotation_deadzone"] = std::to_string(rotation_deadzone);
|
||||||
#if ENABLE_3DCONNEXION_Y_AS_ZOOM
|
|
||||||
it->second["zoom_speed"] = std::to_string(zoom_speed);
|
it->second["zoom_speed"] = std::to_string(zoom_speed);
|
||||||
#endif // ENABLE_3DCONNEXION_Y_AS_ZOOM
|
|
||||||
}
|
}
|
||||||
|
|
||||||
bool AppConfig::get_mouse_device_translation_speed(const std::string& name, double& speed)
|
bool AppConfig::get_mouse_device_translation_speed(const std::string& name, double& speed)
|
||||||
|
@ -365,7 +359,6 @@ bool AppConfig::get_mouse_device_rotation_deadzone(const std::string& name, floa
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
#if ENABLE_3DCONNEXION_Y_AS_ZOOM
|
|
||||||
bool AppConfig::get_mouse_device_zoom_speed(const std::string& name, double& speed)
|
bool AppConfig::get_mouse_device_zoom_speed(const std::string& name, double& speed)
|
||||||
{
|
{
|
||||||
std::string key = std::string("mouse_device:") + name;
|
std::string key = std::string("mouse_device:") + name;
|
||||||
|
@ -380,7 +373,6 @@ bool AppConfig::get_mouse_device_zoom_speed(const std::string& name, double& spe
|
||||||
speed = (float)::atof(it_val->second.c_str());
|
speed = (float)::atof(it_val->second.c_str());
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
#endif // ENABLE_3DCONNEXION_Y_AS_ZOOM
|
|
||||||
|
|
||||||
void AppConfig::update_config_dir(const std::string &dir)
|
void AppConfig::update_config_dir(const std::string &dir)
|
||||||
{
|
{
|
||||||
|
|
|
@ -133,18 +133,12 @@ public:
|
||||||
std::vector<std::string> get_recent_projects() const;
|
std::vector<std::string> get_recent_projects() const;
|
||||||
void set_recent_projects(const std::vector<std::string>& recent_projects);
|
void set_recent_projects(const std::vector<std::string>& recent_projects);
|
||||||
|
|
||||||
#if ENABLE_3DCONNEXION_Y_AS_ZOOM
|
|
||||||
void set_mouse_device(const std::string& name, double translation_speed, double translation_deadzone, float rotation_speed, float rotation_deadzone, double zoom_speed);
|
void set_mouse_device(const std::string& name, double translation_speed, double translation_deadzone, float rotation_speed, float rotation_deadzone, double zoom_speed);
|
||||||
#else
|
|
||||||
void set_mouse_device(const std::string& name, double translation_speed, double translation_deadzone, float rotation_speed, float rotation_deadzone);
|
|
||||||
#endif // ENABLE_3DCONNEXION_Y_AS_ZOOM
|
|
||||||
bool get_mouse_device_translation_speed(const std::string& name, double& speed);
|
bool get_mouse_device_translation_speed(const std::string& name, double& speed);
|
||||||
bool get_mouse_device_translation_deadzone(const std::string& name, double& deadzone);
|
bool get_mouse_device_translation_deadzone(const std::string& name, double& deadzone);
|
||||||
bool get_mouse_device_rotation_speed(const std::string& name, float& speed);
|
bool get_mouse_device_rotation_speed(const std::string& name, float& speed);
|
||||||
bool get_mouse_device_rotation_deadzone(const std::string& name, float& deadzone);
|
bool get_mouse_device_rotation_deadzone(const std::string& name, float& deadzone);
|
||||||
#if ENABLE_3DCONNEXION_Y_AS_ZOOM
|
|
||||||
bool get_mouse_device_zoom_speed(const std::string& name, double& speed);
|
bool get_mouse_device_zoom_speed(const std::string& name, double& speed);
|
||||||
#endif // ENABLE_3DCONNEXION_Y_AS_ZOOM
|
|
||||||
|
|
||||||
static const std::string SECTION_FILAMENTS;
|
static const std::string SECTION_FILAMENTS;
|
||||||
static const std::string SECTION_MATERIALS;
|
static const std::string SECTION_MATERIALS;
|
||||||
|
|
|
@ -60,17 +60,13 @@ const double Mouse3DController::State::DefaultTranslationDeadzone = 0.5 * Mouse3
|
||||||
const float Mouse3DController::State::DefaultRotationScale = 1.0f;
|
const float Mouse3DController::State::DefaultRotationScale = 1.0f;
|
||||||
const float Mouse3DController::State::MaxRotationDeadzone = 0.2f;
|
const float Mouse3DController::State::MaxRotationDeadzone = 0.2f;
|
||||||
const float Mouse3DController::State::DefaultRotationDeadzone = 0.5f * Mouse3DController::State::MaxRotationDeadzone;
|
const float Mouse3DController::State::DefaultRotationDeadzone = 0.5f * Mouse3DController::State::MaxRotationDeadzone;
|
||||||
#if ENABLE_3DCONNEXION_Y_AS_ZOOM
|
|
||||||
const double Mouse3DController::State::DefaultZoomScale = 0.1;
|
const double Mouse3DController::State::DefaultZoomScale = 0.1;
|
||||||
#endif // ENABLE_3DCONNEXION_Y_AS_ZOOM
|
|
||||||
|
|
||||||
Mouse3DController::State::State()
|
Mouse3DController::State::State()
|
||||||
: m_buttons_enabled(false)
|
: m_buttons_enabled(false)
|
||||||
, m_translation_params(DefaultTranslationScale, DefaultTranslationDeadzone)
|
, m_translation_params(DefaultTranslationScale, DefaultTranslationDeadzone)
|
||||||
, m_rotation_params(DefaultRotationScale, DefaultRotationDeadzone)
|
, m_rotation_params(DefaultRotationScale, DefaultRotationDeadzone)
|
||||||
#if ENABLE_3DCONNEXION_Y_AS_ZOOM
|
|
||||||
, m_zoom_params(DefaultZoomScale, 0.0)
|
, m_zoom_params(DefaultZoomScale, 0.0)
|
||||||
#endif // ENABLE_3DCONNEXION_Y_AS_ZOOM
|
|
||||||
, m_mouse_wheel_counter(0)
|
, m_mouse_wheel_counter(0)
|
||||||
#if ENABLE_3DCONNEXION_DEVICES_DEBUG_OUTPUT
|
#if ENABLE_3DCONNEXION_DEVICES_DEBUG_OUTPUT
|
||||||
, m_translation_queue_max_size(0)
|
, m_translation_queue_max_size(0)
|
||||||
|
@ -156,14 +152,10 @@ bool Mouse3DController::State::apply(Camera& camera)
|
||||||
if (has_translation())
|
if (has_translation())
|
||||||
{
|
{
|
||||||
const Vec3d& translation = m_translation.queue.front();
|
const Vec3d& translation = m_translation.queue.front();
|
||||||
#if ENABLE_3DCONNEXION_Y_AS_ZOOM
|
|
||||||
double zoom_factor = camera.min_zoom() / camera.get_zoom();
|
double zoom_factor = camera.min_zoom() / camera.get_zoom();
|
||||||
camera.set_target(camera.get_target() + zoom_factor * m_translation_params.scale * (translation(0) * camera.get_dir_right() + translation(2) * camera.get_dir_up()));
|
camera.set_target(camera.get_target() + zoom_factor * m_translation_params.scale * (translation(0) * camera.get_dir_right() + translation(2) * camera.get_dir_up()));
|
||||||
if (translation(1) != 0.0)
|
if (translation(1) != 0.0)
|
||||||
camera.update_zoom(m_zoom_params.scale * translation(1) / std::abs(translation(1)));
|
camera.update_zoom(m_zoom_params.scale * translation(1) / std::abs(translation(1)));
|
||||||
#else
|
|
||||||
camera.set_target(camera.get_target() + m_translation_params.scale * (translation(0) * camera.get_dir_right() + translation(1) * camera.get_dir_forward() + translation(2) * camera.get_dir_up()));
|
|
||||||
#endif // ENABLE_3DCONNEXION_Y_AS_ZOOM
|
|
||||||
m_translation.queue.pop();
|
m_translation.queue.pop();
|
||||||
ret = true;
|
ret = true;
|
||||||
}
|
}
|
||||||
|
@ -321,11 +313,9 @@ void Mouse3DController::render_settings_dialog(GLCanvas3D& canvas) const
|
||||||
if (imgui.slider_float(_(L("Rotation")) + "##1", &rotation_scale, 0.1f, 10.0f, "%.1f"))
|
if (imgui.slider_float(_(L("Rotation")) + "##1", &rotation_scale, 0.1f, 10.0f, "%.1f"))
|
||||||
m_state.set_rotation_scale(State::DefaultRotationScale * rotation_scale);
|
m_state.set_rotation_scale(State::DefaultRotationScale * rotation_scale);
|
||||||
|
|
||||||
#if ENABLE_3DCONNEXION_Y_AS_ZOOM
|
|
||||||
float zoom_scale = m_state.get_zoom_scale() / State::DefaultZoomScale;
|
float zoom_scale = m_state.get_zoom_scale() / State::DefaultZoomScale;
|
||||||
if (imgui.slider_float(_(L("Zoom")), &zoom_scale, 0.1f, 10.0f, "%.1f"))
|
if (imgui.slider_float(_(L("Zoom")), &zoom_scale, 0.1f, 10.0f, "%.1f"))
|
||||||
m_state.set_zoom_scale(State::DefaultZoomScale * zoom_scale);
|
m_state.set_zoom_scale(State::DefaultZoomScale * zoom_scale);
|
||||||
#endif // ENABLE_3DCONNEXION_Y_AS_ZOOM
|
|
||||||
|
|
||||||
ImGui::Separator();
|
ImGui::Separator();
|
||||||
ImGui::PushStyleColor(ImGuiCol_Text, color);
|
ImGui::PushStyleColor(ImGuiCol_Text, color);
|
||||||
|
@ -333,11 +323,7 @@ void Mouse3DController::render_settings_dialog(GLCanvas3D& canvas) const
|
||||||
ImGui::PopStyleColor();
|
ImGui::PopStyleColor();
|
||||||
|
|
||||||
float translation_deadzone = (float)m_state.get_translation_deadzone();
|
float translation_deadzone = (float)m_state.get_translation_deadzone();
|
||||||
#if ENABLE_3DCONNEXION_Y_AS_ZOOM
|
|
||||||
if (imgui.slider_float(_(L("Translation")) + "/" + _(L("Zoom")), &translation_deadzone, 0.0f, (float)State::MaxTranslationDeadzone, "%.2f"))
|
if (imgui.slider_float(_(L("Translation")) + "/" + _(L("Zoom")), &translation_deadzone, 0.0f, (float)State::MaxTranslationDeadzone, "%.2f"))
|
||||||
#else
|
|
||||||
if (imgui.slider_float(_(L("Translation")) + "##2", &translation_deadzone, 0.0f, (float)State::MaxTranslationDeadzone, "%.2f"))
|
|
||||||
#endif // ENABLE_3DCONNEXION_Y_AS_ZOOM
|
|
||||||
m_state.set_translation_deadzone((double)translation_deadzone);
|
m_state.set_translation_deadzone((double)translation_deadzone);
|
||||||
|
|
||||||
float rotation_deadzone = m_state.get_rotation_deadzone();
|
float rotation_deadzone = m_state.get_rotation_deadzone();
|
||||||
|
@ -651,24 +637,18 @@ bool Mouse3DController::connect_device()
|
||||||
float rotation_speed = 4.0;
|
float rotation_speed = 4.0;
|
||||||
double translation_deadzone = State::DefaultTranslationDeadzone;
|
double translation_deadzone = State::DefaultTranslationDeadzone;
|
||||||
float rotation_deadzone = State::DefaultRotationDeadzone;
|
float rotation_deadzone = State::DefaultRotationDeadzone;
|
||||||
#if ENABLE_3DCONNEXION_Y_AS_ZOOM
|
|
||||||
double zoom_speed = 2.0;
|
double zoom_speed = 2.0;
|
||||||
#endif // ENABLE_3DCONNEXION_Y_AS_ZOOM
|
|
||||||
wxGetApp().app_config->get_mouse_device_translation_speed(m_device_str, translation_speed);
|
wxGetApp().app_config->get_mouse_device_translation_speed(m_device_str, translation_speed);
|
||||||
wxGetApp().app_config->get_mouse_device_translation_deadzone(m_device_str, translation_deadzone);
|
wxGetApp().app_config->get_mouse_device_translation_deadzone(m_device_str, translation_deadzone);
|
||||||
wxGetApp().app_config->get_mouse_device_rotation_speed(m_device_str, rotation_speed);
|
wxGetApp().app_config->get_mouse_device_rotation_speed(m_device_str, rotation_speed);
|
||||||
wxGetApp().app_config->get_mouse_device_rotation_deadzone(m_device_str, rotation_deadzone);
|
wxGetApp().app_config->get_mouse_device_rotation_deadzone(m_device_str, rotation_deadzone);
|
||||||
#if ENABLE_3DCONNEXION_Y_AS_ZOOM
|
|
||||||
wxGetApp().app_config->get_mouse_device_zoom_speed(m_device_str, zoom_speed);
|
wxGetApp().app_config->get_mouse_device_zoom_speed(m_device_str, zoom_speed);
|
||||||
#endif // ENABLE_3DCONNEXION_Y_AS_ZOOM
|
|
||||||
// clamp to valid values
|
// clamp to valid values
|
||||||
m_state.set_translation_scale(State::DefaultTranslationScale * std::clamp(translation_speed, 0.1, 10.0));
|
m_state.set_translation_scale(State::DefaultTranslationScale * std::clamp(translation_speed, 0.1, 10.0));
|
||||||
m_state.set_translation_deadzone(std::clamp(translation_deadzone, 0.0, State::MaxTranslationDeadzone));
|
m_state.set_translation_deadzone(std::clamp(translation_deadzone, 0.0, State::MaxTranslationDeadzone));
|
||||||
m_state.set_rotation_scale(State::DefaultRotationScale * std::clamp(rotation_speed, 0.1f, 10.0f));
|
m_state.set_rotation_scale(State::DefaultRotationScale * std::clamp(rotation_speed, 0.1f, 10.0f));
|
||||||
m_state.set_rotation_deadzone(std::clamp(rotation_deadzone, 0.0f, State::MaxRotationDeadzone));
|
m_state.set_rotation_deadzone(std::clamp(rotation_deadzone, 0.0f, State::MaxRotationDeadzone));
|
||||||
#if ENABLE_3DCONNEXION_Y_AS_ZOOM
|
|
||||||
m_state.set_zoom_scale(State::DefaultZoomScale * std::clamp(zoom_speed, 0.1, 10.0));
|
m_state.set_zoom_scale(State::DefaultZoomScale * std::clamp(zoom_speed, 0.1, 10.0));
|
||||||
#endif // ENABLE_3DCONNEXION_Y_AS_ZOOM
|
|
||||||
}
|
}
|
||||||
#if ENABLE_3DCONNEXION_DEVICES_DEBUG_OUTPUT
|
#if ENABLE_3DCONNEXION_DEVICES_DEBUG_OUTPUT
|
||||||
else
|
else
|
||||||
|
@ -694,13 +674,9 @@ void Mouse3DController::disconnect_device()
|
||||||
m_thread.join();
|
m_thread.join();
|
||||||
|
|
||||||
// Store current device parameters into the config
|
// Store current device parameters into the config
|
||||||
#if ENABLE_3DCONNEXION_Y_AS_ZOOM
|
|
||||||
wxGetApp().app_config->set_mouse_device(m_device_str, m_state.get_translation_scale() / State::DefaultTranslationScale, m_state.get_translation_deadzone(),
|
wxGetApp().app_config->set_mouse_device(m_device_str, m_state.get_translation_scale() / State::DefaultTranslationScale, m_state.get_translation_deadzone(),
|
||||||
m_state.get_rotation_scale() / State::DefaultRotationScale, m_state.get_rotation_deadzone(), m_state.get_zoom_scale() / State::DefaultZoomScale);
|
m_state.get_rotation_scale() / State::DefaultRotationScale, m_state.get_rotation_deadzone(), m_state.get_zoom_scale() / State::DefaultZoomScale);
|
||||||
#else
|
|
||||||
wxGetApp().app_config->set_mouse_device(m_device_str, m_state.get_translation_scale() / State::DefaultTranslationScale, m_state.get_translation_deadzone(),
|
|
||||||
m_state.get_rotation_scale() / State::DefaultRotationScale, m_state.get_rotation_deadzone());
|
|
||||||
#endif // ENABLE_3DCONNEXION_Y_AS_ZOOM
|
|
||||||
wxGetApp().app_config->save();
|
wxGetApp().app_config->save();
|
||||||
|
|
||||||
// Close the 3Dconnexion device
|
// Close the 3Dconnexion device
|
||||||
|
|
|
@ -37,9 +37,7 @@ class Mouse3DController
|
||||||
static const float DefaultRotationScale;
|
static const float DefaultRotationScale;
|
||||||
static const float MaxRotationDeadzone;
|
static const float MaxRotationDeadzone;
|
||||||
static const float DefaultRotationDeadzone;
|
static const float DefaultRotationDeadzone;
|
||||||
#if ENABLE_3DCONNEXION_Y_AS_ZOOM
|
|
||||||
static const double DefaultZoomScale;
|
static const double DefaultZoomScale;
|
||||||
#endif // ENABLE_3DCONNEXION_Y_AS_ZOOM
|
|
||||||
|
|
||||||
private:
|
private:
|
||||||
template <typename Number>
|
template <typename Number>
|
||||||
|
@ -71,9 +69,7 @@ class Mouse3DController
|
||||||
|
|
||||||
CustomParameters<double> m_translation_params;
|
CustomParameters<double> m_translation_params;
|
||||||
CustomParameters<float> m_rotation_params;
|
CustomParameters<float> m_rotation_params;
|
||||||
#if ENABLE_3DCONNEXION_Y_AS_ZOOM
|
|
||||||
CustomParameters<double> m_zoom_params;
|
CustomParameters<double> m_zoom_params;
|
||||||
#endif // ENABLE_3DCONNEXION_Y_AS_ZOOM
|
|
||||||
|
|
||||||
// When the 3Dconnexion driver is running the system gets, by default, mouse wheel events when rotations around the X axis are detected.
|
// When the 3Dconnexion driver is running the system gets, by default, mouse wheel events when rotations around the X axis are detected.
|
||||||
// We want to filter these out because we are getting the data directly from the device, bypassing the driver, and those mouse wheel events interfere
|
// We want to filter these out because we are getting the data directly from the device, bypassing the driver, and those mouse wheel events interfere
|
||||||
|
@ -109,10 +105,8 @@ class Mouse3DController
|
||||||
float get_rotation_scale() const { return m_rotation_params.scale; }
|
float get_rotation_scale() const { return m_rotation_params.scale; }
|
||||||
void set_rotation_scale(float scale) { m_rotation_params.scale = scale; }
|
void set_rotation_scale(float scale) { m_rotation_params.scale = scale; }
|
||||||
|
|
||||||
#if ENABLE_3DCONNEXION_Y_AS_ZOOM
|
|
||||||
double get_zoom_scale() const { return m_zoom_params.scale; }
|
double get_zoom_scale() const { return m_zoom_params.scale; }
|
||||||
void set_zoom_scale(double scale) { m_zoom_params.scale = scale; }
|
void set_zoom_scale(double scale) { m_zoom_params.scale = scale; }
|
||||||
#endif // ENABLE_3DCONNEXION_Y_AS_ZOOM
|
|
||||||
|
|
||||||
double get_translation_deadzone() const { return m_translation_params.deadzone; }
|
double get_translation_deadzone() const { return m_translation_params.deadzone; }
|
||||||
void set_translation_deadzone(double deadzone) { m_translation_params.deadzone = deadzone; }
|
void set_translation_deadzone(double deadzone) { m_translation_params.deadzone = deadzone; }
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue