1
0
Fork 0
mirror of https://github.com/luanti-org/luanti.git synced 2025-06-27 16:36:03 +00:00

implemented rats in new system to verify that it works

This commit is contained in:
Perttu Ahola 2011-04-10 15:16:27 +03:00
parent 08bbf96877
commit 5a4d8ffad3
14 changed files with 974 additions and 85 deletions

View file

@ -95,8 +95,6 @@ inline u8 readU8(u8 *data)
return (data[0]<<0);
}
// Signed variants of the above
inline void writeS32(u8 *data, s32 i){
writeU32(data, (u32)i);
}
@ -104,6 +102,13 @@ inline s32 readS32(u8 *data){
return (s32)readU32(data);
}
inline void writeF1000(u8 *data, f32 i){
writeS32(data, i*1000);
}
inline f32 readF1000(u8 *data){
return (f32)readS32(data)/1000.;
}
inline void writeS16(u8 *data, s16 i){
writeU16(data, (u16)i);
}
@ -117,7 +122,6 @@ inline void writeV3S32(u8 *data, v3s32 p)
writeS32(&data[4], p.Y);
writeS32(&data[8], p.Z);
}
inline v3s32 readV3S32(u8 *data)
{
v3s32 p;
@ -127,6 +131,21 @@ inline v3s32 readV3S32(u8 *data)
return p;
}
inline void writeV3F1000(u8 *data, v3f p)
{
writeF1000(&data[0], p.X);
writeF1000(&data[4], p.Y);
writeF1000(&data[8], p.Z);
}
inline v3f readV3F1000(u8 *data)
{
v3f p;
p.X = (float)readF1000(&data[0]);
p.Y = (float)readF1000(&data[4]);
p.Z = (float)readF1000(&data[8]);
return p;
}
inline void writeV2S16(u8 *data, v2s16 p)
{
writeS16(&data[0], p.X);
@ -171,6 +190,62 @@ inline v3s16 readV3S16(u8 *data)
return p;
}
/*
The above stuff directly interfaced to iostream
*/
inline void writeU8(std::ostream &os, u8 p)
{
char buf[1];
writeU8((u8*)buf, p);
os.write(buf, 1);
}
inline u8 readU8(std::istream &is)
{
char buf[1];
is.read(buf, 1);
return readU8((u8*)buf);
}
inline void writeU16(std::ostream &os, u16 p)
{
char buf[2];
writeU16((u8*)buf, p);
os.write(buf, 2);
}
inline u16 readU16(std::istream &is)
{
char buf[12];
is.read(buf, 12);
return readU16((u8*)buf);
}
inline void writeF1000(std::ostream &os, f32 p)
{
char buf[2];
writeF1000((u8*)buf, p);
os.write(buf, 2);
}
inline f32 readF1000(std::istream &is)
{
char buf[12];
is.read(buf, 12);
return readF1000((u8*)buf);
}
inline void writeV3F1000(std::ostream &os, v3f p)
{
char buf[12];
writeV3F1000((u8*)buf, p);
os.write(buf, 12);
}
inline v3f readV3F1000(std::istream &is)
{
char buf[12];
is.read(buf, 12);
return readV3F1000((u8*)buf);
}
/*
None of these are used at the moment
*/