| 303 | } |
| 304 | |
| 305 | void updateDrag(BaseGraphConnection* _connection) override |
| 306 | { |
| 307 | if (mIsDrug) |
| 308 | { |
| 309 | // нод откуда тянется не всегда может быть сендером |
| 310 | _connection = mConnectionStart; |
| 311 | |
| 312 | const MyGUI::IntPoint& mouse = MyGUI::InputManager::getInstance().getMousePosition(); |
| 313 | //const MyGUI::IntCoord& coord = _node->getAbsoluteCoord(); |
| 314 | mDrugLine.point_end.set(mouse.left - mCanvas->getAbsoluteLeft(), mouse.top - mCanvas->getAbsoluteTop()); |
| 315 | |
| 316 | // устанавлваем длинну загиба от дистанции |
| 317 | double distance = ((mDrugLine.point_end.left - mDrugLine.point_start.left) * |
| 318 | (mDrugLine.point_end.left - mDrugLine.point_start.left)) + |
| 319 | ((mDrugLine.point_end.top - mDrugLine.point_start.top) * |
| 320 | (mDrugLine.point_end.top - mDrugLine.point_start.top)); |
| 321 | distance = std::sqrt(distance); |
| 322 | |
| 323 | mDrugLine.start_offset = _connection->getOffset(); |
| 324 | |
| 325 | const int offset = 30; |
| 326 | distance *= 0.5; |
| 327 | if (distance < 1) |
| 328 | distance = 1; |
| 329 | else if (distance > offset) |
| 330 | distance = offset; |
| 331 | if (mDrugLine.start_offset.height != 0) |
| 332 | { |
| 333 | if (mDrugLine.start_offset.height < 0) |
| 334 | mDrugLine.start_offset.height = -(int)distance; |
| 335 | else |
| 336 | mDrugLine.start_offset.height = (int)distance; |
| 337 | } |
| 338 | if (mDrugLine.start_offset.width != 0) |
| 339 | { |
| 340 | if (mDrugLine.start_offset.width < 0) |
| 341 | mDrugLine.start_offset.width = -(int)distance; |
| 342 | else |
| 343 | mDrugLine.start_offset.width = (int)distance; |
| 344 | } |
| 345 | |
| 346 | // пикаем виджет под нами |
| 347 | MyGUI::Widget* widget = MyGUI::LayerManager::getInstance().getWidgetFromPoint(mouse.left, mouse.top); |
| 348 | if (widget != nullptr) |
| 349 | { |
| 350 | BaseGraphConnection** connection = widget->getUserData<BaseGraphConnection*>(false); |
| 351 | if (connection != nullptr) |
| 352 | { |
| 353 | bool accept = requestConnectToPoint(_connection, *connection); |
| 354 | if (accept) |
| 355 | mDrugLine.colour = MyGUI::Colour::Green; |
| 356 | else |
| 357 | mDrugLine.colour = MyGUI::Colour::Red; |
| 358 | } |
| 359 | else |
| 360 | { |
| 361 | mDrugLine.colour = MyGUI::Colour::White; |
| 362 | } |
no test coverage detected