public int GetNearestWallIndex(FurnitureItem lastBuilding, out FurnitureDirect dir) { int x, y; GetIndex2D(lastBuilding.PosIndex, out x, out y); dir = lastBuilding.TheInfo.direction; switch (dir) { case FurnitureDirect.east: if (y == 0 || !HasFurniture(x, y - 1)) { dir = FurnitureDirect.sourth; } else { y--; } break; case FurnitureDirect.sourth: if (x == 0 || !HasFurniture(x - 1, y)) { dir = FurnitureDirect.west; } else { x--; } break; case FurnitureDirect.west: if (y == height - 1 || !HasFurniture(x, y + 1)) { dir = FurnitureDirect.north; } else { y++; } break; case FurnitureDirect.north: if (x == width - 1 || !HasFurniture(x + 1, y)) { dir = FurnitureDirect.east; } else { x++; } break; } return(y * width + x); }
private void MoveFurniture(Vector3 hitPos) { int index = placeMgr.GetPosIndex(hitPos); switch (buildingFurniture.TheInfo.furnitureType) { case FurnitureType.wall: FurnitureDirect tempDir = placeMgr.GetTargetWallDir(index, hitPos); buildingFurniture.Direction = (int)tempDir; break; } SetFurnitureIndex(buildingFurniture, index); }