diff options
| author | jacksonmj <mj-pt@jacksonmj.co.uk> | 2013-04-30 21:29:52 (GMT) |
|---|---|---|
| committer | jacksonmj <mj-pt@jacksonmj.co.uk> | 2013-04-30 21:34:06 (GMT) |
| commit | 526e93204ad6622ed6319ece1c74ba96daf261ec (patch) | |
| tree | 7b3d5c8eba842aa51a41f1c27e3ed9fa29aaf654 /src/simulation/Simulation.cpp | |
| parent | b83043e2a6293e83d5d7fbad70a7e20b131ba33b (diff) | |
| download | powder-526e93204ad6622ed6319ece1c74ba96daf261ec.zip powder-526e93204ad6622ed6319ece1c74ba96daf261ec.tar.gz | |
INST flood fill change so that vertical conduction is only prevented for 1px wire crossings. Needs thorough testing
Fixes #129 , and prevents INST diodes when using a 2px vertical crossing a
1px horizontal.
Diffstat (limited to 'src/simulation/Simulation.cpp')
| -rw-r--r-- | src/simulation/Simulation.cpp | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/src/simulation/Simulation.cpp b/src/simulation/Simulation.cpp index 7e076ad..c738fce 100644 --- a/src/simulation/Simulation.cpp +++ b/src/simulation/Simulation.cpp @@ -602,9 +602,9 @@ int Simulation::FloodINST(int x, int y, int fullc, int cm) { if ((pmap[y-1][x]&0xFF)==cm && !parts[pmap[y-1][x]>>8].life) { - if (x==x1 || x==x2 || y>=YRES-CELL-1 || !PMAP_CMP_CONDUCTIVE(pmap[y+1][x], cm)) + if (x==x1 || x==x2 || y>=YRES-CELL-1 || !PMAP_CMP_CONDUCTIVE(pmap[y+1][x], cm) || PMAP_CMP_CONDUCTIVE(pmap[y+1][x+1], cm) || PMAP_CMP_CONDUCTIVE(pmap[y+1][x-1], cm)) { - // if at the end of a horizontal section, or if it's a T junction + // if at the end of a horizontal section, or if it's a T junction or not a 1px wire crossing coord_stack[coord_stack_size][0] = x; coord_stack[coord_stack_size][1] = y-1; coord_stack_size++; @@ -641,9 +641,9 @@ int Simulation::FloodINST(int x, int y, int fullc, int cm) { if ((pmap[y+1][x]&0xFF)==cm && !parts[pmap[y+1][x]>>8].life) { - if (x==x1 || x==x2 || y<0 || !PMAP_CMP_CONDUCTIVE(pmap[y-1][x], cm)) + if (x==x1 || x==x2 || y<0 || !PMAP_CMP_CONDUCTIVE(pmap[y-1][x], cm) || PMAP_CMP_CONDUCTIVE(pmap[y-1][x+1], cm) || PMAP_CMP_CONDUCTIVE(pmap[y-1][x-1], cm)) { - // if at the end of a horizontal section, or if it's a T junction + // if at the end of a horizontal section, or if it's a T junction or not a 1px wire crossing coord_stack[coord_stack_size][0] = x; coord_stack[coord_stack_size][1] = y+1; coord_stack_size++; |
