mirror of
https://github.com/OpenSpace/OpenSpace.git
synced 2026-02-21 12:29:04 -06:00
Remove mouse drag resizing functionality
This commit is contained in:
@@ -62,7 +62,6 @@ public:
|
||||
bool isTargetSelected();
|
||||
void fineTuneTarget(const glm::vec2& start, const glm::vec2& translation);
|
||||
void translateSelected(const glm::vec2& start, const glm::vec2& translation);
|
||||
void resizeBrowser(const glm::vec2& start, const glm::vec2& translation);
|
||||
|
||||
// Browser
|
||||
void sendIdToBrowser();
|
||||
@@ -75,7 +74,6 @@ public:
|
||||
|
||||
// Boolean functions
|
||||
bool hasFinishedFading(float goalState) const;
|
||||
bool isOnResizeArea(glm::vec2 mouseScreenSpaceCoords);
|
||||
|
||||
bool isEnabled() const;
|
||||
bool isLocked() const;
|
||||
|
||||
@@ -46,11 +46,6 @@ namespace openspace {
|
||||
void setCallbackBorderColor(std::function<void(const glm::ivec3&)> function);
|
||||
void setCallbackEnabled(std::function<void(bool)> function);
|
||||
|
||||
// Interaction. Resize
|
||||
void saveResizeStartSize();
|
||||
bool isOnResizeArea(glm::vec2 screenSpaceCoord);
|
||||
void resize(const glm::vec2& start, const glm::vec2& mouseDrag);
|
||||
|
||||
glm::dvec2 fineTuneVector(glm::dvec2 drag);
|
||||
void setIdInBrowser();
|
||||
|
||||
@@ -71,13 +66,6 @@ namespace openspace {
|
||||
// Animation of fieldOfView
|
||||
float _endVfov{ 0.f };
|
||||
|
||||
// Resizing
|
||||
float _originalScale;
|
||||
float _resizeAreaPercentage{ 0.1f };
|
||||
glm::vec2 _originalDimensions;
|
||||
glm::vec2 _originalScreenSpaceSize;
|
||||
glm::ivec2 _resizeDirection;
|
||||
|
||||
// Time variables
|
||||
// For capping the calls onchange properties from scrolling
|
||||
constexpr static const std::chrono::milliseconds _timeUpdateInterval{ 10 };
|
||||
|
||||
@@ -285,11 +285,7 @@ SkyBrowserModule::SkyBrowserModule()
|
||||
}
|
||||
else if (_interactionMode != MouseInteraction::Hover &&
|
||||
action == MouseAction::Release) {
|
||||
// Update browser size if it has been resized
|
||||
if (_interactionMode == MouseInteraction::Resize) {
|
||||
_mouseOnPair->updateBrowserSize();
|
||||
}
|
||||
|
||||
|
||||
_interactionMode = MouseInteraction::Hover;
|
||||
return true;
|
||||
}
|
||||
@@ -315,10 +311,6 @@ SkyBrowserModule::SkyBrowserModule()
|
||||
setSelectedObject();
|
||||
break;
|
||||
|
||||
case MouseInteraction::Resize:
|
||||
_mouseOnPair->resizeBrowser(_startDragPosition, translation);
|
||||
break;
|
||||
|
||||
case MouseInteraction::Drag:
|
||||
_mouseOnPair->translateSelected(_startDragPosition, translation);
|
||||
break;
|
||||
@@ -625,19 +617,8 @@ void SkyBrowserModule::handleMouseClick(const MouseButton& button)
|
||||
_startMousePosition = _mousePosition;
|
||||
_startDragPosition = _mouseOnPair->selectedScreenSpacePosition();
|
||||
|
||||
// If current object is browser, check for resizing
|
||||
bool shouldResize = _mouseOnPair->isBrowserSelected() &&
|
||||
_mouseOnPair->isOnResizeArea(_mousePosition);
|
||||
|
||||
if (shouldResize) {
|
||||
_mouseOnPair->getBrowser()->saveResizeStartSize();
|
||||
_interactionMode = MouseInteraction::Resize;
|
||||
return;
|
||||
}
|
||||
else {
|
||||
// If it's not resize mode, it's drag mode
|
||||
_interactionMode = MouseInteraction::Drag;
|
||||
}
|
||||
// If it's not resize mode, it's drag mode
|
||||
_interactionMode = MouseInteraction::Drag;
|
||||
|
||||
// If target is clicked, it should unlock
|
||||
if (_mouseOnPair->isTargetSelected()) {
|
||||
|
||||
@@ -48,7 +48,6 @@ enum class Transparency {
|
||||
|
||||
enum class MouseInteraction {
|
||||
Hover,
|
||||
Resize,
|
||||
Drag,
|
||||
FineTune,
|
||||
};
|
||||
|
||||
@@ -172,11 +172,6 @@ namespace openspace {
|
||||
_selected->translate(translation, start);
|
||||
}
|
||||
|
||||
void Pair::resizeBrowser(const glm::vec2& start, const glm::vec2& translation)
|
||||
{
|
||||
_browser->resize(start, translation);
|
||||
}
|
||||
|
||||
void Pair::setEnabled(bool enable)
|
||||
{
|
||||
_browser->setEnabled(enable);
|
||||
@@ -323,11 +318,6 @@ namespace openspace {
|
||||
return isTargetFadeFinished(goalState) && isBrowserFadeFinished(goalState);
|
||||
}
|
||||
|
||||
bool Pair::isOnResizeArea(glm::vec2 mouseScreenSpaceCoords)
|
||||
{
|
||||
return _browser->isOnResizeArea(mouseScreenSpaceCoords);
|
||||
}
|
||||
|
||||
ScreenSpaceSkyTarget* Pair::getTarget() {
|
||||
return _target;
|
||||
}
|
||||
|
||||
@@ -244,57 +244,6 @@ namespace openspace {
|
||||
_texture->bind();
|
||||
}
|
||||
|
||||
// Mouse interaction with the browser. Returns 1 or -1 at the coordinate in
|
||||
// image if the mouse is on a side of the browser
|
||||
// __1__
|
||||
// y| -1 |_____|1
|
||||
// |__x -1
|
||||
bool ScreenSpaceSkyBrowser::isOnResizeArea(glm::vec2 coord) {
|
||||
glm::ivec2 resizePosition = glm::ivec2{ 0 };
|
||||
// Make sure coordinate is on browser
|
||||
if (!intersection(coord)) return false;
|
||||
|
||||
// TO DO: turn this into a vector and use prettier vector arithmetic
|
||||
float resizeAreaY = screenSpaceDimensions().y * _resizeAreaPercentage;
|
||||
float resizeAreaX = screenSpaceDimensions().x * _resizeAreaPercentage;
|
||||
|
||||
const bool isOnTop = coord.y > upperRightCornerScreenSpace().y - resizeAreaY;
|
||||
const bool isOnBottom = coord.y < lowerLeftCornerScreenSpace().y + resizeAreaY;
|
||||
const bool isOnRight = coord.x > upperRightCornerScreenSpace().x - resizeAreaX;
|
||||
const bool isOnLeft = coord.x < lowerLeftCornerScreenSpace().x + resizeAreaX;
|
||||
|
||||
resizePosition.x = isOnRight ? 1 : isOnLeft ? -1 : 0;
|
||||
resizePosition.y = isOnTop ? 1 : isOnBottom ? -1 : 0;
|
||||
|
||||
_resizeDirection = resizePosition;
|
||||
|
||||
return isOnRight || isOnLeft || isOnTop || isOnBottom;
|
||||
}
|
||||
|
||||
void ScreenSpaceSkyBrowser::resize(const glm::vec2& start, const glm::vec2& mouseDrag)
|
||||
{
|
||||
glm::vec2 scaling = mouseDrag * glm::vec2(_resizeDirection);
|
||||
glm::vec2 newSizeRelToOld = (_originalScreenSpaceSize + (scaling)) /
|
||||
_originalScreenSpaceSize;
|
||||
|
||||
_scale = _originalScale * abs(newSizeRelToOld.y);
|
||||
// Resize the dimensions of the texture on the x axis
|
||||
glm::vec2 newDimensions = abs(newSizeRelToOld) * _originalDimensions;
|
||||
// Scale the browser
|
||||
// Scale on the y axis, this is to ensure that _scale = 1 is
|
||||
// equal to the height of the window
|
||||
_texture->setDimensions(glm::ivec3(newDimensions, 1));
|
||||
_objectSize = _texture->dimensions();
|
||||
|
||||
// For dragging functionality, translate so it looks like the
|
||||
// browser isn't moving. Make sure the browser doesn't move in
|
||||
// directions it's not supposed to
|
||||
glm::vec2 translation = 0.5f * mouseDrag * abs(
|
||||
glm::vec2(_resizeDirection)
|
||||
);
|
||||
translate(translation, start);
|
||||
}
|
||||
|
||||
glm::mat4 ScreenSpaceSkyBrowser::scaleMatrix() {
|
||||
// To ensure the plane has the right ratio
|
||||
// The _scale tells us how much of the windows height the
|
||||
@@ -308,12 +257,6 @@ namespace openspace {
|
||||
return scale;
|
||||
}
|
||||
|
||||
void ScreenSpaceSkyBrowser::saveResizeStartSize() {
|
||||
_originalScreenSpaceSize = screenSpaceDimensions();
|
||||
_originalDimensions = _browserPixeldimensions;
|
||||
_originalScale = _scale;
|
||||
}
|
||||
|
||||
void ScreenSpaceSkyBrowser::setCallbackEquatorialAim(
|
||||
std::function<void(const glm::dvec2&)> function)
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user