Added (really horrible) dragging
This commit is contained in:
@@ -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"));
|
||||||
|
|||||||
@@ -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;
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|||||||
Reference in New Issue
Block a user