summaryrefslogtreecommitdiff
path: root/src/simulation/Simulation.cpp
diff options
context:
space:
mode:
authorjacksonmj <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)
commit526e93204ad6622ed6319ece1c74ba96daf261ec (patch)
tree7b3d5c8eba842aa51a41f1c27e3ed9fa29aaf654 /src/simulation/Simulation.cpp
parentb83043e2a6293e83d5d7fbad70a7e20b131ba33b (diff)
downloadpowder-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.cpp8
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++;