diff options
author | Perttu Ahola <celeron55@gmail.com> | 2010-11-27 01:02:21 +0200 |
---|---|---|
committer | Perttu Ahola <celeron55@gmail.com> | 2010-11-27 01:02:21 +0200 |
commit | 4e249fb3fbf75f0359758760d88e22aa5b14533c (patch) | |
tree | 323087d05efbd2ace27b316d4f017cf812a31992 /src/light.h | |
download | minetest-4e249fb3fbf75f0359758760d88e22aa5b14533c.tar.gz minetest-4e249fb3fbf75f0359758760d88e22aa5b14533c.tar.bz2 minetest-4e249fb3fbf75f0359758760d88e22aa5b14533c.zip |
Initial files
Diffstat (limited to 'src/light.h')
-rw-r--r-- | src/light.h | 54 |
1 files changed, 54 insertions, 0 deletions
diff --git a/src/light.h b/src/light.h new file mode 100644 index 000000000..b76ac3a5d --- /dev/null +++ b/src/light.h @@ -0,0 +1,54 @@ +#ifndef LIGHT_HEADER +#define LIGHT_HEADER + +#include "common_irrlicht.h" + +// This directly sets the range of light +#define LIGHT_MAX 14 +// 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; +} + +extern u8 light_decode_table[LIGHT_MAX+1]; + +inline u8 decode_light(u8 light) +{ + if(light == LIGHT_SUN) + return light_decode_table[LIGHT_MAX]; + + if(light > LIGHT_MAX) + throw; + + return light_decode_table[light]; +} + +#endif + |