51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
*/
-#ifndef LIGHT_HEADER
-#define LIGHT_HEADER
-
+#pragma once
+#include <cassert>
#include "irrlichttypes.h"
/*
// This brightness is reserved for sunlight
#define LIGHT_SUN 15
-inline u8 diminish_light(u8 light)
-{
- if (light == 0)
- return 0;
- if (light >= LIGHT_MAX)
- return LIGHT_MAX - 1;
-
- return light - 1;
-}
-
-inline u8 diminish_light(u8 light, u8 distance)
-{
- if (distance >= light)
- return 0;
- return light - distance;
-}
-
-inline u8 undiminish_light(u8 light)
-{
- // We don't know if light should undiminish from this particular 0.
- // Thus, keep it at 0.
- if (light == 0)
- return 0;
- if (light == LIGHT_MAX)
- return light;
-
- return light + 1;
-}
-
#ifndef SERVER
/**
// 0 <= return value <= 255
inline u8 decode_light(u8 light)
{
- if (light > LIGHT_MAX)
- light = LIGHT_MAX;
-
+ // assert(light <= LIGHT_SUN);
+ if (light > LIGHT_SUN)
+ light = LIGHT_SUN;
return light_decode_table[light];
}
// 0.0 <= light <= 1.0
// 0.0 <= return value <= 1.0
-inline float decode_light_f(float light_f)
-{
- s32 i = (u32)(light_f * LIGHT_MAX + 0.5);
-
- if (i <= 0)
- return (float)light_decode_table[0] / 255.0;
- if (i >= LIGHT_MAX)
- return (float)light_decode_table[LIGHT_MAX] / 255.0;
-
- float v1 = (float)light_decode_table[i - 1] / 255.0;
- float v2 = (float)light_decode_table[i] / 255.0;
- float f0 = (float)i - 0.5;
- float f = light_f * LIGHT_MAX - f0;
- return f * v2 + (1.0 - f) * v1;
-}
+float decode_light_f(float light_f);
void set_light_table(float gamma);
l = LIGHT_SUN;
return l;
}
-
-#endif