git-svn-id: svn://db.shs.com.ru/libs@153 a8b55f48-bf90-11e4-a774-851b48703e85

This commit is contained in:
2017-01-10 14:05:18 +00:00
parent f7ad7696ef
commit a1a58713f1
3 changed files with 10 additions and 5 deletions

View File

@@ -289,6 +289,7 @@ bool BlockView::eventFilter(QObject * o, QEvent * e) {
tmp_bus.clear(); tmp_bus.clear();
tmp_bus.show(); tmp_bus.show();
new_bus = true; new_bus = true;
newBusStarted(tmp_bus.busType());
markPins(tmp_bus.busType()); markPins(tmp_bus.busType());
if (qgraphicsitem_cast<BlockItemPin*>(mm_ci)->alignment() == Qt::AlignLeft || if (qgraphicsitem_cast<BlockItemPin*>(mm_ci)->alignment() == Qt::AlignLeft ||
qgraphicsitem_cast<BlockItemPin*>(mm_ci)->alignment() == Qt::AlignRight) qgraphicsitem_cast<BlockItemPin*>(mm_ci)->alignment() == Qt::AlignRight)
@@ -1201,6 +1202,7 @@ void BlockView::adjustThumb() {
void BlockView::newBranch(BlockBusItem * item) { void BlockView::newBranch(BlockBusItem * item) {
bus_from = item; bus_from = item;
newBusStarted(item->busType());
markPins(item->busType()); markPins(item->busType());
new_branch = true; new_branch = true;
tmp_bus.setBusType(item->busType()); tmp_bus.setBusType(item->busType());

View File

@@ -104,7 +104,8 @@ protected:
virtual void loadBus(BlockBusItem * bus) {} virtual void loadBus(BlockBusItem * bus) {}
virtual void copyBlocks(QList<BlockItem * > items, QPointF offset) {} virtual void copyBlocks(QList<BlockItem * > items, QPointF offset) {}
virtual void newBusStarted(int bus_type) {}
QGraphicsScene * scene_; QGraphicsScene * scene_;
QGraphicsRectItem sel_rect; QGraphicsRectItem sel_rect;
QGraphicsItem * mm_ci; QGraphicsItem * mm_ci;

View File

@@ -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];} ~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();} 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) { Chunk * newChunk(const Vector3i & i) {
int _i = i.p0 % BIG_CHUNK_SIZE, _j = i.p1 % BIG_CHUNK_SIZE, _k = i.p2 % BIG_CHUNK_SIZE; int ii = i.p0 % BIG_CHUNK_SIZE, jj = i.p1 % BIG_CHUNK_SIZE, kk = 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 (ii < 0) ii += BIG_CHUNK_SIZE;
if (chunks[_i][_j][_k] == 0) {qDebug() << "insert" << _i << _j << _k; chunks[_i][_j][_k] = new Chunk();} if (jj < 0) jj += BIG_CHUNK_SIZE;
return chunks[_i][_j][_k];} 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; Vector3i index;
Chunk * chunks[BIG_CHUNK_SIZE][BIG_CHUNK_SIZE][BIG_CHUNK_SIZE]; Chunk * chunks[BIG_CHUNK_SIZE][BIG_CHUNK_SIZE][BIG_CHUNK_SIZE];
}; };