代码拉取完成,页面将自动刷新
#include "../include/engine_view.h"
#include "../include/engine_sim_application.h"
EngineView::EngineView() {
m_pan = { 0, units::distance(-6, units::inch) };
m_checkMouse = true;
m_lastScroll = 0;
m_zoom = 1.0f;
m_drawFrame = true;
}
EngineView::~EngineView() {
/* void */
}
void EngineView::update(float dt) {
m_mouseBounds = m_bounds;
}
void EngineView::render() {
if (m_drawFrame) {
drawFrame(m_bounds, 1.0f, m_app->getForegroundColor(), m_app->getBackgroundColor(), false);
}
}
void EngineView::onMouseDown(const Point &mouseLocal) {
UiElement::onMouseDown(mouseLocal);
m_dragStart = m_pan;
}
void EngineView::onDrag(const Point &p0, const Point &mouse0, const Point &mouse) {
const Point delta = mouse - mouse0;
const Point deltaUnits = {
m_app->pixelsToUnits(delta.x),
m_app->pixelsToUnits(delta.y)
};
m_pan = m_dragStart + deltaUnits;
}
void EngineView::onMouseScroll(int scroll) {
const float f = std::powf(2.0, (float)scroll / 500.0f);
const Point prevCenter = getCenter();
m_zoom *= f;
const Point newCenter = getCenter();
Point diff = newCenter - prevCenter;
m_pan += diff * m_zoom;
m_dragStart += diff * m_zoom;
}
void EngineView::setBounds(const Bounds &bounds) {
m_bounds = bounds;
}
Point EngineView::getCenter() const {
return getCameraPosition();
}
Point EngineView::getCameraPosition() const {
return Point(-m_pan / m_zoom);
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。