void MainWindow::enterLocation() { auto player = world()->player(); if (!player) { qDebug("No player. Will not enter any location"); return; } auto global_pos = player->scenePos(); qDebug() << "Player global position:" << global_pos.x() << global_pos.y(); auto global_cell = world()->globalField()->cell(global_pos); auto local_pos = global_pos * global_cell->sceneMatrix().inverted(); qDebug() << "Player local position:" << local_pos.x() << local_pos.y(); if (global_cell) { //world()->globalField()->removeItem(player); auto v = global_cell->localField(); connect(v, SIGNAL(toggleInventory(Character*)), ui->m_inventory, SLOT(toggle(Character*))); ui->m_render_view->setScene(v); //auto s = GLOBAL_FIELD_SIZE / (float)GLOBAL_FIELD_CELL_REAL_SIZE; ui->m_render_view->resetTransform(); auto local_cell = v->cell(local_pos); local_pos = global_pos * local_cell->sceneMatrix().inverted(); //local_pos = local_pos * cell->sceneMatrix().inverted(); qDebug() << "Player local local position:" << local_pos.x() << local_pos.y(); world()->player()->setParentItem(local_cell); world()->player()->setPos(local_pos); world()->setLocalField(v); if (player) ui->m_render_view->centerOn(player); } }
void TControlNode::paintLinesToChildNodes(QPainter *painter) { QMatrix inverted = sceneMatrix().inverted(); painter->save(); painter->setPen(QPen(QColor(Qt::gray))); painter->setRenderHint(QPainter::Antialiasing, true); if (k->rightNode) { if (k->rightNode->isVisible()) painter->drawLine(inverted.map(pos()), inverted.map(k->rightNode->pos())); } if (k->leftNode) { if (k->leftNode->isVisible()) painter->drawLine(inverted.map(pos()), inverted.map(k->leftNode->pos())); } painter->restore(); }