mirror of
https://github.com/HarbourMasters/Shipwright.git
synced 2025-02-16 15:20:11 -05:00
fix rainbow popping (#2441)
This commit is contained in:
parent
fdf9d51444
commit
df1e26d4cd
@ -384,13 +384,14 @@ int hue = 0;
|
|||||||
// Runs every frame to update rainbow hue, a potential future optimization is to only run this a once or twice a second and increase the speed of the rainbow hue rotation.
|
// Runs every frame to update rainbow hue, a potential future optimization is to only run this a once or twice a second and increase the speed of the rainbow hue rotation.
|
||||||
void CosmeticsUpdateTick(bool& open) {
|
void CosmeticsUpdateTick(bool& open) {
|
||||||
int index = 0;
|
int index = 0;
|
||||||
|
float rainbowSpeed = CVarGetFloat("gCosmetics.RainbowSpeed", 0.6f);
|
||||||
for (auto& [id, cosmeticOption] : cosmeticOptions) {
|
for (auto& [id, cosmeticOption] : cosmeticOptions) {
|
||||||
if (cosmeticOption.supportsRainbow && CVarGetInteger(cosmeticOption.rainbowCvar, 0)) {
|
if (cosmeticOption.supportsRainbow && CVarGetInteger(cosmeticOption.rainbowCvar, 0)) {
|
||||||
float frequency = 2 * M_PI / (360 * CVarGetFloat("gCosmetics.RainbowSpeed", 0.6f));
|
float frequency = 2 * M_PI / (360 * rainbowSpeed);
|
||||||
Color_RGBA8 newColor;
|
Color_RGBA8 newColor;
|
||||||
newColor.r = sin(frequency * ((hue + index)) + 0) * 127 + 128;
|
newColor.r = sin(frequency * (hue + index) + 0) * 127 + 128;
|
||||||
newColor.g = sin(frequency * ((hue + index)) + (2 * M_PI / 3)) * 127 + 128;
|
newColor.g = sin(frequency * (hue + index) + (2 * M_PI / 3)) * 127 + 128;
|
||||||
newColor.b = sin(frequency * ((hue + index)) + (4 * M_PI / 3)) * 127 + 128;
|
newColor.b = sin(frequency * (hue + index) + (4 * M_PI / 3)) * 127 + 128;
|
||||||
newColor.a = 255;
|
newColor.a = 255;
|
||||||
|
|
||||||
cosmeticOption.currentColor.x = newColor.r / 255.0;
|
cosmeticOption.currentColor.x = newColor.r / 255.0;
|
||||||
@ -404,12 +405,12 @@ void CosmeticsUpdateTick(bool& open) {
|
|||||||
// Technically this would work if you replaced "60" with 1 but the hue would be so close it's
|
// Technically this would work if you replaced "60" with 1 but the hue would be so close it's
|
||||||
// indistinguishable, 60 gives us a big enough gap to notice the difference.
|
// indistinguishable, 60 gives us a big enough gap to notice the difference.
|
||||||
if (!CVarGetInteger("gCosmetics.RainbowSync", 0)) {
|
if (!CVarGetInteger("gCosmetics.RainbowSync", 0)) {
|
||||||
index+= (60 * CVarGetFloat("gCosmetics.RainbowSpeed", 0.6f));
|
index+= (60 * rainbowSpeed);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
ApplyOrResetCustomGfxPatches(false);
|
ApplyOrResetCustomGfxPatches(false);
|
||||||
hue++;
|
hue++;
|
||||||
if (hue >= 360) hue = 0;
|
if (hue >= (360 * rainbowSpeed)) hue = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
Loading…
Reference in New Issue
Block a user