Kinda sorta works
This commit is contained in:
43
main.cpp
43
main.cpp
@@ -994,10 +994,44 @@ void Demo::onUserInput(UserInput* ui) {
|
||||
part = (PartInstance*) g_selectedInstances.at(0);
|
||||
Ray dragRay = cameraController.getCamera()->worldRay(dataModel->mousex, dataModel->mousey, renderDevice->getViewport());
|
||||
std::vector<Instance*> instances = dataModel->getWorkspace()->getAllChildren();
|
||||
|
||||
PartInstance* moveTo;
|
||||
for(size_t i = 0; i < instances.size(); i++)
|
||||
{
|
||||
if(PartInstance* moveTo = dynamic_cast<PartInstance*>(instances.at(i)))
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
float nearest=std::numeric_limits<float>::infinity();
|
||||
Vector3 camPos = cameraController.getCamera()->getCoordinateFrame().translation;
|
||||
for(size_t i = 0; i < instances.size(); i++)
|
||||
{
|
||||
if(PartInstance* test = dynamic_cast<PartInstance*>(instances.at(i)))
|
||||
{
|
||||
float time = dragRay.intersectionTime(test->getBox());
|
||||
|
||||
if (time != inf())
|
||||
{
|
||||
if (nearest>time && test != part)
|
||||
{
|
||||
nearest=time;
|
||||
moveTo = test;
|
||||
//message = "Dragging = true.";
|
||||
//messageTime = System::time();
|
||||
//dragging = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
if(moveTo != NULL)
|
||||
{
|
||||
Vector3 outLocation=Vector3(0,0,0);
|
||||
Vector3 outNormal=Vector3(0,0,0);
|
||||
@@ -1006,7 +1040,7 @@ void Demo::onUserInput(UserInput* ui) {
|
||||
if (CollisionDetection::collisionTimeForMovingPointFixedBox(dragRay.origin,dragRay.direction*100,moveTo->getBox(),outLocation,outNormal)!=inf())
|
||||
{
|
||||
part->setPosition(Vector3(floor(outLocation.x),floor(outLocation.y+1),floor(outLocation.z)));
|
||||
break;
|
||||
//break;
|
||||
}
|
||||
}
|
||||
/*
|
||||
@@ -1023,7 +1057,8 @@ void Demo::onUserInput(UserInput* ui) {
|
||||
}
|
||||
*/
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Sleep(10);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user