Refine and fix up numeric response node
This commit is contained in:
@@ -3512,33 +3512,35 @@ void ifthen_spec(const runtime_state& ctx) {
|
|||||||
spec.pic = minmax(0,2,spec.pic);
|
spec.pic = minmax(0,2,spec.pic);
|
||||||
switch(spec.pic) { // Comparison mode
|
switch(spec.pic) { // Comparison mode
|
||||||
case 0: // Is in range?
|
case 0: // Is in range?
|
||||||
if(spec.ex1a < spec.ex1b && i == minmax(spec.ex1a,spec.ex1b,i)) j += 1;
|
if(spec.ex1a >= 0 && spec.ex1a < spec.ex1b && i == minmax(spec.ex1a,spec.ex1b,i)) j += 1;
|
||||||
if(spec.ex2a < spec.ex2b && i == minmax(spec.ex2a,spec.ex2b,i)) j += 2;
|
if(spec.ex2a >= 0 && spec.ex2a < spec.ex2b && i == minmax(spec.ex2a,spec.ex2b,i)) j += 2;
|
||||||
break;
|
break;
|
||||||
case 1: // Not in range?
|
case 1: // Not in range?
|
||||||
if(spec.ex1a < spec.ex1b && i != minmax(spec.ex1a,spec.ex1b,i)) j += 1;
|
if(spec.ex1a >= 0 && spec.ex1a < spec.ex1b && i != minmax(spec.ex1a,spec.ex1b,i)) j += 1;
|
||||||
if(spec.ex2a < spec.ex2b && i != minmax(spec.ex2a,spec.ex2b,i)) j += 2;
|
if(spec.ex2a >= 0 && spec.ex2a < spec.ex2b && i != minmax(spec.ex2a,spec.ex2b,i)) j += 2;
|
||||||
break;
|
break;
|
||||||
case 2: // Simple comparison?
|
case 2: // Simple comparison?
|
||||||
switch(spec.ex1b) {
|
switch(spec.ex1b) {
|
||||||
case -2: if(i <= spec.ex1a) j += 1; break;
|
case -2: if(spec.ex1a >= 0 && i <= spec.ex1a) j += 1; break;
|
||||||
case -1: if(i < spec.ex1a) j += 1; break;
|
case -1: if(spec.ex1a >= 0 && i < spec.ex1a) j += 1; break;
|
||||||
case 0: if(i == spec.ex1a) j += 1; break;
|
case 0: if(spec.ex1a >= 0 && i == spec.ex1a) j += 1; break;
|
||||||
case 1: if(i > spec.ex1a) j += 1; break;
|
case 1: if(spec.ex1a >= 0 && i > spec.ex1a) j += 1; break;
|
||||||
case 2: if(i >= spec.ex1a) j += 1; break;
|
case 2: if(spec.ex1a >= 0 && i >= spec.ex1a) j += 1; break;
|
||||||
}
|
}
|
||||||
switch(spec.ex2b) {
|
switch(spec.ex2b) {
|
||||||
case -2: if(i <= spec.ex2a) j += 1; break;
|
case -2: if(spec.ex2a >= 0 && i <= spec.ex2a) j += 2; break;
|
||||||
case -1: if(i < spec.ex2a) j += 1; break;
|
case -1: if(spec.ex2a >= 0 && i < spec.ex2a) j += 2; break;
|
||||||
case 0: if(i == spec.ex2a) j += 1; break;
|
case 0: if(spec.ex2a >= 0 && i == spec.ex2a) j += 2; break;
|
||||||
case 1: if(i > spec.ex2a) j += 1; break;
|
case 1: if(spec.ex2a >= 0 && i > spec.ex2a) j += 2; break;
|
||||||
case 2: if(i >= spec.ex2a) j += 1; break;
|
case 2: if(spec.ex2a >= 0 && i >= spec.ex2a) j += 2; break;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
if(j == 1) ctx.next_spec = spec.ex1c;
|
switch(j) {
|
||||||
if(j == 2) ctx.next_spec = spec.ex2c;
|
case 1: ctx.next_spec = spec.ex1c; break;
|
||||||
if(j == 3) ctx.next_spec = spec.pictype;
|
case 2: ctx.next_spec = spec.ex2c; break;
|
||||||
|
case 3: ctx.next_spec = spec.pictype; break;
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case eSpecType::IF_SDF_EQ:
|
case eSpecType::IF_SDF_EQ:
|
||||||
|
Reference in New Issue
Block a user