Added (really horrible) dragging

This commit is contained in:
andreja6
2020-03-13 23:50:37 -07:00
parent 9217e78084
commit 520e7f1bef
3 changed files with 40 additions and 4 deletions

View File

@@ -5,6 +5,8 @@ ArrowTool::ArrowTool(void)
{ {
lctrlDown = false; lctrlDown = false;
rctrlDown = false; rctrlDown = false;
dragging = false;
mouseDown = false;
} }
ArrowTool::~ArrowTool(void) ArrowTool::~ArrowTool(void)
@@ -13,6 +15,7 @@ ArrowTool::~ArrowTool(void)
void ArrowTool::onButton1MouseDown(Mouse mouse) void ArrowTool::onButton1MouseDown(Mouse mouse)
{ {
mouseDown = true;
if(!lctrlDown && !rctrlDown) if(!lctrlDown && !rctrlDown)
g_selectedInstances.clear(); g_selectedInstances.clear();
PartInstance * target = mouse.getTarget(); PartInstance * target = mouse.getTarget();
@@ -22,8 +25,36 @@ void ArrowTool::onButton1MouseDown(Mouse mouse)
g_selectedInstances.push_back(g_dataModel); g_selectedInstances.push_back(g_dataModel);
g_usableApp->_propWindow->UpdateSelected(g_selectedInstances[0]); g_usableApp->_propWindow->UpdateSelected(g_selectedInstances[0]);
} }
void ArrowTool::onButton1MouseUp(Mouse mouse)
{
if(dragging)
this->setCursor(GetFileInPath("/content/images/ArrowCursor.png"));
mouseDown = false;
dragging = false;
}
void ArrowTool::onMouseMoved(Mouse mouse) void ArrowTool::onMouseMoved(Mouse mouse)
{ {
if(mouseDown)
{
if(!dragging)
{
if(abs(mouse.x-mouseDownStartx) > 5 || abs(mouse.y-mouseDownStarty) > 5)
{
this->setCursor(GetFileInPath("/content/images/GrabRotateCursor.png"));
dragging = true;
}
else return;
}
for(size_t i = 0; i < g_selectedInstances.size(); i++) //This will later decide primary and move all parts according to primary
{
if(PartInstance * part = dynamic_cast<PartInstance *>(g_selectedInstances[i]))
{
part->setPosition(mouse.getPosition());
}
}
return;
}
PartInstance * target = mouse.getTarget(); PartInstance * target = mouse.getTarget();
if(target == NULL) if(target == NULL)
this->setCursor(GetFileInPath("/content/images/ArrowCursor.png")); this->setCursor(GetFileInPath("/content/images/ArrowCursor.png"));

View File

@@ -8,6 +8,7 @@ public:
ArrowTool(void); //OnSelect? ArrowTool(void); //OnSelect?
~ArrowTool(void); //OnDeselect? ~ArrowTool(void); //OnDeselect?
virtual void onButton1MouseDown(Mouse); virtual void onButton1MouseDown(Mouse);
virtual void onButton1MouseUp(Mouse);
virtual void onMouseMoved(Mouse mouse); virtual void onMouseMoved(Mouse mouse);
virtual void onSelect(Mouse mouse); virtual void onSelect(Mouse mouse);
virtual void onKeyDown(int key); virtual void onKeyDown(int key);
@@ -15,4 +16,8 @@ public:
private: private:
bool lctrlDown; bool lctrlDown;
bool rctrlDown; bool rctrlDown;
int mouseDownStartx;
int mouseDownStarty;
bool dragging;
bool mouseDown;
}; };

View File

@@ -52,14 +52,14 @@ Vector3 Mouse::getPosition()
if(G3D::isFinite(testRay.intersectionTime(p->getBox()))) if(G3D::isFinite(testRay.intersectionTime(p->getBox())))
{ {
if (nearest>testRay.intersectionTime(p->getBox())) /*if (nearest>testRay.intersectionTime(p->getBox()))
{ {
// BROKEN // BROKEN
pos = (testRay.closestPoint(p->getPosition()/2)); pos = (testRay.closestPoint(p->getPosition()/2));
} }*/
/* // This would be an overall better solution // This would be an overall better solution
for(char i = 0; i < 6; i++) for(char i = 0; i < 6; i++)
{ {
Vector3 side1; Vector3 side1;
@@ -74,7 +74,7 @@ Vector3 Mouse::getPosition()
nearest = newdistance; nearest = newdistance;
pos = inter; pos = inter;
} }
}*/ }
} }
} }
return pos; return pos;