Skip to content

Commit 003f95f

Browse files
Shader function rework
reworks all of the functions for adding shaders to each camera! i'm not sure if this is a good enough change, but it makes the code for all the shader functions more simple and possibly fixes a bug I found where you could crash the game (no errors) by triggering a Rainbow Eyesore and adding a 2nd shader to any camera at the same time
1 parent baa250a commit 003f95f

File tree

1 file changed

+54
-87
lines changed

1 file changed

+54
-87
lines changed

source/PlayState.hx

Lines changed: 54 additions & 87 deletions
Original file line numberDiff line numberDiff line change
@@ -43,10 +43,6 @@ class PlayState extends MusicBeatState
4343

4444
private var tauntKey:Array<FlxKey>;
4545

46-
public var camGameShaders:Array<ShaderEffect> = [];
47-
public var camHUDShaders:Array<ShaderEffect> = [];
48-
public var camOtherShaders:Array<ShaderEffect> = [];
49-
5046
var lastUpdateTime:Float = 0.0;
5147

5248
//event variables
@@ -1714,31 +1710,16 @@ class PlayState extends MusicBeatState
17141710
}
17151711

17161712
public function addShaderToCamera(cam:String,effect:Dynamic){//STOLE FROM ANDROMEDA // actually i got it from old psych engine
1717-
#if SHADERS_ALLOWED
1718-
if (!ClientPrefs.shaders)
1719-
return;
17201713
switch(cam.toLowerCase()) {
17211714
case 'camhud' | 'hud':
1722-
camHUDShaders.push(effect);
1723-
var newCamEffects:Array<BitmapFilter>=[]; // IT SHUTS HAXE UP IDK WHY BUT WHATEVER IDK WHY I CANT JUST ARRAY<SHADERFILTER>
1724-
for(i in camHUDShaders){
1725-
newCamEffects.push(new ShaderFilter(i.shader));
1726-
}
1727-
camHUD.filters = newCamEffects;
1715+
if (camHUD.filters == null) camHUD.filters = [];
1716+
camHUD.filters?.push(new ShaderFilter(effect.shader));
17281717
case 'camother' | 'other':
1729-
camOtherShaders.push(effect);
1730-
var newCamEffects:Array<BitmapFilter>=[]; // IT SHUTS HAXE UP IDK WHY BUT WHATEVER IDK WHY I CANT JUST ARRAY<SHADERFILTER>
1731-
for(i in camOtherShaders){
1732-
newCamEffects.push(new ShaderFilter(i.shader));
1733-
}
1734-
camOther.filters = newCamEffects;
1718+
if (camOther.filters == null) camOther.filters = [];
1719+
camOther.filters?.push(new ShaderFilter(effect.shader));
17351720
case 'camgame' | 'game':
1736-
camGameShaders.push(effect);
1737-
var newCamEffects:Array<BitmapFilter>=[]; // IT SHUTS HAXE UP IDK WHY BUT WHATEVER IDK WHY I CANT JUST ARRAY<SHADERFILTER>
1738-
for(i in camGameShaders){
1739-
newCamEffects.push(new ShaderFilter(i.shader));
1740-
}
1741-
camGame.filters = newCamEffects;
1721+
if (camGame.filters == null) camGame.filters = [];
1722+
camGame.filters?.push(new ShaderFilter(effect.shader));
17421723
default:
17431724
if(modchartSprites.exists(cam)) {
17441725
Reflect.setProperty(modchartSprites.get(cam),"shader",effect.shader);
@@ -1749,64 +1730,47 @@ class PlayState extends MusicBeatState
17491730
Reflect.setProperty(OBJ,"shader", effect.shader);
17501731
}
17511732
}
1752-
#end
1753-
}
1733+
}
17541734

1755-
public function removeShaderFromCamera(cam:String,effect:ShaderEffect){
1756-
#if SHADERS_ALLOWED
1757-
if (!ClientPrefs.shaders)
1758-
return;
1759-
switch(cam.toLowerCase()) {
1760-
case 'camhud' | 'hud':
1761-
camHUDShaders.remove(effect);
1762-
var newCamEffects:Array<BitmapFilter>=[];
1763-
for(i in camHUDShaders){
1764-
newCamEffects.push(new ShaderFilter(i.shader));
1765-
}
1766-
camHUD.filters = newCamEffects;
1767-
case 'camother' | 'other':
1768-
camOtherShaders.remove(effect);
1769-
var newCamEffects:Array<BitmapFilter>=[];
1770-
for(i in camOtherShaders){
1771-
newCamEffects.push(new ShaderFilter(i.shader));
1772-
}
1773-
camOther.filters = newCamEffects;
1774-
default:
1775-
if(modchartSprites.exists(cam)) {
1776-
Reflect.setProperty(modchartSprites.get(cam),"shader",null);
1777-
} else if(modchartTexts.exists(cam)) {
1778-
Reflect.setProperty(modchartTexts.get(cam),"shader",null);
1779-
} else {
1780-
var OBJ = Reflect.getProperty(PlayState.instance,cam);
1781-
Reflect.setProperty(OBJ,"shader", null);
1735+
public function removeShaderFromCamera(cam:String,effect:Dynamic){
1736+
var filter = new ShaderFilter(effect.shader);
1737+
switch(cam.toLowerCase()) {
1738+
case 'camhud' | 'hud':
1739+
camHUD.filters?.remove(filter);
1740+
case 'camother' | 'other':
1741+
camOther.filters?.remove(filter);
1742+
case 'camgame' | 'game':
1743+
camGame.filters?.remove(filter);
1744+
default:
1745+
if(modchartSprites.exists(cam)) {
1746+
Reflect.setProperty(modchartSprites.get(cam),"shader",null);
1747+
} else if(modchartTexts.exists(cam)) {
1748+
Reflect.setProperty(modchartTexts.get(cam),"shader",null);
1749+
} else {
1750+
var OBJ = Reflect.getProperty(PlayState.instance,cam);
1751+
Reflect.setProperty(OBJ,"shader", null);
1752+
}
17821753
}
1754+
}
1755+
public function clearShaderFromCamera(cam:String){
1756+
switch(cam.toLowerCase()) {
1757+
case 'camhud' | 'hud':
1758+
camHUD.filters = [];
1759+
case 'camother' | 'other':
1760+
camOther.filters = [];
1761+
case 'camgame' | 'game':
1762+
camGame.filters = [];
1763+
default:
1764+
camGame.filters = [];
17831765
}
1784-
#end
1785-
}
1786-
public function clearShaderFromCamera(cam:String){
1787-
#if SHADERS_ALLOWED
1788-
if (!ClientPrefs.shaders)
1789-
return;
1790-
switch(cam.toLowerCase()) {
1791-
case 'camhud' | 'hud':
1792-
camHUDShaders = [];
1793-
var newCamEffects:Array<BitmapFilter>=[];
1794-
camHUD.filters = newCamEffects;
1795-
case 'camother' | 'other':
1796-
camOtherShaders = [];
1797-
var newCamEffects:Array<BitmapFilter>=[];
1798-
camOther.filters = newCamEffects;
1799-
case 'camgame' | 'game':
1800-
camGameShaders = [];
1801-
var newCamEffects:Array<BitmapFilter>=[];
1802-
camGame.filters = newCamEffects;
1803-
default:
1804-
camGameShaders = [];
1805-
var newCamEffects:Array<BitmapFilter>=[];
1806-
camGame.filters = newCamEffects;
18071766
}
1808-
#end
1809-
}
1767+
1768+
public function getLuaObject(tag:String, text:Bool=true):FlxSprite {
1769+
if(modchartSprites.exists(tag)) return modchartSprites.get(tag);
1770+
if(text && modchartTexts.exists(tag)) return modchartTexts.get(tag);
1771+
if(variables.exists(tag)) return variables.get(tag);
1772+
return null;
1773+
}
18101774

18111775
public function getLuaObject(tag:String, text:Bool=true):FlxSprite {
18121776
if(modchartSprites.exists(tag)) return modchartSprites.get(tag);
@@ -3075,12 +3039,17 @@ class PlayState extends MusicBeatState
30753039
if(disableTheTripperAt <= curStep || isDead)
30763040
disableTheTripper = true;
30773041

3078-
FlxG.camera.filters = [new ShaderFilter(screenshader.shader)];
3079-
screenshader.update(elapsed);
30803042
if(disableTheTripper)
30813043
{
30823044
screenshader.shader.uampmul.value[0] -= (elapsed / 2);
30833045
}
3046+
3047+
if (screenshader?.shader?.uampmul?.value[0] > 0)
3048+
screenshader.update(elapsed);
3049+
else {
3050+
removeShaderFromCamera('camGame', screenshader);
3051+
screenshader.Enabled = false;
3052+
}
30843053
}
30853054

30863055
if (!cpuControlled && canUseBotEnergy)
@@ -4128,16 +4097,14 @@ class PlayState extends MusicBeatState
41284097
return;
41294098
#end
41304099
#if SHADERS_ALLOWED
4131-
if(ClientPrefs.flashing && ClientPrefs.shaders) {
4132-
var timeRainbow:Int = Std.parseInt(value1);
4133-
var speedRainbow:Float = Std.parseFloat(value2);
4100+
if(ClientPrefs.flashing && ClientPrefs.shaders && curStep < Std.parseInt(value1)) {
41344101
disableTheTripper = false;
4135-
disableTheTripperAt = timeRainbow;
4102+
disableTheTripperAt = Std.parseInt(value1);
41364103
FlxG.camera.filters = [new ShaderFilter(screenshader.shader)];
41374104
screenshader.waveAmplitude = 1;
41384105
screenshader.waveFrequency = 2;
4139-
screenshader.waveSpeed = speedRainbow * playbackRate;
4140-
screenshader.shader.uTime.value[0] = new flixel.math.FlxRandom().float(-100000, 100000);
4106+
screenshader.waveSpeed = Std.parseFloat(value2) * playbackRate;
4107+
screenshader.shader.uTime.value[0] = new flixel.math.FlxRandom().float(-1e3, 1e3);
41414108
screenshader.shader.uampmul.value[0] = 1;
41424109
screenshader.Enabled = true;
41434110
}

0 commit comments

Comments
 (0)