diff --git a/qad_blockview/blockview.cpp b/qad_blockview/blockview.cpp index 7ad33e3..5cac43a 100644 --- a/qad_blockview/blockview.cpp +++ b/qad_blockview/blockview.cpp @@ -289,6 +289,7 @@ bool BlockView::eventFilter(QObject * o, QEvent * e) { tmp_bus.clear(); tmp_bus.show(); new_bus = true; + newBusStarted(tmp_bus.busType()); markPins(tmp_bus.busType()); if (qgraphicsitem_cast(mm_ci)->alignment() == Qt::AlignLeft || qgraphicsitem_cast(mm_ci)->alignment() == Qt::AlignRight) @@ -1201,6 +1202,7 @@ void BlockView::adjustThumb() { void BlockView::newBranch(BlockBusItem * item) { bus_from = item; + newBusStarted(item->busType()); markPins(item->busType()); new_branch = true; tmp_bus.setBusType(item->busType()); diff --git a/qad_blockview/blockview.h b/qad_blockview/blockview.h index 7bc871f..4925eba 100644 --- a/qad_blockview/blockview.h +++ b/qad_blockview/blockview.h @@ -104,7 +104,8 @@ protected: virtual void loadBus(BlockBusItem * bus) {} virtual void copyBlocks(QList items, QPointF offset) {} - + virtual void newBusStarted(int bus_type) {} + QGraphicsScene * scene_; QGraphicsRectItem sel_rect; QGraphicsItem * mm_ci; diff --git a/qglview/water_system.h b/qglview/water_system.h index 4e30342..c0a04c3 100644 --- a/qglview/water_system.h +++ b/qglview/water_system.h @@ -67,10 +67,12 @@ protected: ~BigChunk() {for (int i = 0; i < BIG_CHUNK_SIZE; ++i) for (int j = 0; j < BIG_CHUNK_SIZE; ++j) for (int k = 0; k < BIG_CHUNK_SIZE; ++k) if (chunks[i][j][k] != 0) delete chunks[i][j][k];} void saveState() {for (int i = 0; i < BIG_CHUNK_SIZE; ++i) for (int j = 0; j < BIG_CHUNK_SIZE; ++j) for (int k = 0; k < BIG_CHUNK_SIZE; ++k) if (chunks[i][j][k] != 0) chunks[i][j][k]->saveState();} Chunk * newChunk(const Vector3i & i) { - int _i = i.p0 % BIG_CHUNK_SIZE, _j = i.p1 % BIG_CHUNK_SIZE, _k = i.p2 % BIG_CHUNK_SIZE; - if (_i < 0) _i += BIG_CHUNK_SIZE; if (_j < 0) _j += BIG_CHUNK_SIZE; if (_k < 0) _k += BIG_CHUNK_SIZE; - if (chunks[_i][_j][_k] == 0) {qDebug() << "insert" << _i << _j << _k; chunks[_i][_j][_k] = new Chunk();} - return chunks[_i][_j][_k];} + int ii = i.p0 % BIG_CHUNK_SIZE, jj = i.p1 % BIG_CHUNK_SIZE, kk = i.p2 % BIG_CHUNK_SIZE; + if (ii < 0) ii += BIG_CHUNK_SIZE; + if (jj < 0) jj += BIG_CHUNK_SIZE; + if (kk < 0) kk += BIG_CHUNK_SIZE; + if (chunks[ii][jj][kk] == 0) {qDebug() << "insert" << ii << jj << kk; chunks[ii][jj][kk] = new Chunk();} + return chunks[ii][jj][kk];} Vector3i index; Chunk * chunks[BIG_CHUNK_SIZE][BIG_CHUNK_SIZE][BIG_CHUNK_SIZE]; };