예제 #1
0
void BlockMap::CutTie(const Vector2& vec1, const Vector2& vec2) {
  // Check if vec1 & vec2 are adjacent
  if (vec1.DistTo(vec2) != 1) {
    return;
  }

  Block* blockPtr1 = &GetBlock(vec1);
  Block* blockPtr2 = &GetBlock(vec2);
  if (vec1.r > vec2.r || vec1.c > vec2.c) {
    blockPtr1 = &GetBlock(vec2);
    blockPtr2 = &GetBlock(vec1);
  }

  if (blockPtr1->coord.r == blockPtr2->coord.r) {
    blockPtr1->neighborOffsets.erase(Vector2(0, 1));
    blockPtr2->neighborOffsets.erase(Vector2(0, -1));
  }
  else {
    blockPtr1->neighborOffsets.erase(Vector2(1, 0));
    blockPtr2->neighborOffsets.erase(Vector2(-1, 0));
  }
}