add ctype-based filt shift modes (#351)
This commit is contained in:
parent
57f5d0f84f
commit
63b2227802
@ -2290,8 +2290,8 @@ void GameView::OnDraw()
|
|||||||
else if (type == PT_FILT)
|
else if (type == PT_FILT)
|
||||||
{
|
{
|
||||||
sampleInfo << c->ElementResolve(type, ctype);
|
sampleInfo << c->ElementResolve(type, ctype);
|
||||||
const char* filtModes[] = {"set colour", "AND", "OR", "subtract colour", "red shift", "blue shift", "no effect", "XOR", "NOT", "old QRTZ scattering"};
|
const char* filtModes[] = {"set colour", "AND", "OR", "subtract colour", "red shift", "blue shift", "no effect", "XOR", "NOT", "old QRTZ scattering", "variable red shift", "variable blue shift"};
|
||||||
if (sample.particle.tmp>=0 && sample.particle.tmp<=9)
|
if (sample.particle.tmp>=0 && sample.particle.tmp<=11)
|
||||||
sampleInfo << " (" << filtModes[sample.particle.tmp] << ")";
|
sampleInfo << " (" << filtModes[sample.particle.tmp] << ")";
|
||||||
else
|
else
|
||||||
sampleInfo << " (unknown mode)";
|
sampleInfo << " (unknown mode)";
|
||||||
|
@ -89,17 +89,17 @@ int Element_FILT::interactWavelengths(Particle* cpart, int origWl)
|
|||||||
case 3:
|
case 3:
|
||||||
return origWl & (~filtWl); //Subtract colour of filt from colour of photon
|
return origWl & (~filtWl); //Subtract colour of filt from colour of photon
|
||||||
case 4:
|
case 4:
|
||||||
{
|
{
|
||||||
int shift = int((cpart->temp-273.0f)*0.025f);
|
int shift = int((cpart->temp-273.0f)*0.025f);
|
||||||
if (shift<=0) shift = 1;
|
if (shift<=0) shift = 1;
|
||||||
return (origWl << shift) & mask; // red shift
|
return (origWl << shift) & mask; // red shift
|
||||||
}
|
}
|
||||||
case 5:
|
case 5:
|
||||||
{
|
{
|
||||||
int shift = int((cpart->temp-273.0f)*0.025f);
|
int shift = int((cpart->temp-273.0f)*0.025f);
|
||||||
if (shift<=0) shift = 1;
|
if (shift<=0) shift = 1;
|
||||||
return (origWl >> shift) & mask; // blue shift
|
return (origWl >> shift) & mask; // blue shift
|
||||||
}
|
}
|
||||||
case 6:
|
case 6:
|
||||||
return origWl; // No change
|
return origWl; // No change
|
||||||
case 7:
|
case 7:
|
||||||
@ -113,6 +113,16 @@ int Element_FILT::interactWavelengths(Particle* cpart, int origWl)
|
|||||||
int t3 = ((origWl & 0xFF0000)>>16)+(rand()%5)-2;
|
int t3 = ((origWl & 0xFF0000)>>16)+(rand()%5)-2;
|
||||||
return (origWl & 0xFF000000) | (t3<<16) | (t2<<8) | t1;
|
return (origWl & 0xFF000000) | (t3<<16) | (t2<<8) | t1;
|
||||||
}
|
}
|
||||||
|
case 10:
|
||||||
|
{
|
||||||
|
long long int lsb = filtWl & (-filtWl);
|
||||||
|
return (origWl * lsb) & 0x3FFFFFFF; //red shift
|
||||||
|
}
|
||||||
|
case 11:
|
||||||
|
{
|
||||||
|
long long int lsb = filtWl & (-filtWl);
|
||||||
|
return (origWl / lsb) & 0x3FFFFFFF; // blue shift
|
||||||
|
}
|
||||||
default:
|
default:
|
||||||
return filtWl;
|
return filtWl;
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user