1
0

Merge branch 'master' into SslWrappers

This commit is contained in:
madmaxoft 2014-04-29 15:41:24 +02:00
commit 7e972f6a5d
3 changed files with 29 additions and 12 deletions

View File

@ -13,11 +13,21 @@
// This wild construct allows us to pass a function argument and still have it inlined by the compiler :)
/// Merges two blocktypes and blockmetas of the specified sizes and offsets using the specified combinator function // Disable MSVC warnings: "conditional expression is constant"
#ifdef _MSC_VER
#pragma warning(push)
#pragma warning(disable:4127)
#endif
typedef void (CombinatorFunc)(BLOCKTYPE & a_DstType, BLOCKTYPE a_SrcType, NIBBLETYPE & a_DstMeta, NIBBLETYPE a_SrcMeta); typedef void (CombinatorFunc)(BLOCKTYPE & a_DstType, BLOCKTYPE a_SrcType, NIBBLETYPE & a_DstMeta, NIBBLETYPE a_SrcMeta);
// This wild construct allows us to pass a function argument and still have it inlined by the compiler :)
/// Merges two blocktypes and blockmetas of the specified sizes and offsets using the specified combinator function
template<bool MetasValid, CombinatorFunc Combinator> template<bool MetasValid, CombinatorFunc Combinator>
void InternalMergeBlocks( void InternalMergeBlocks(
BLOCKTYPE * a_DstTypes, const BLOCKTYPE * a_SrcTypes, BLOCKTYPE * a_DstTypes, const BLOCKTYPE * a_SrcTypes,
@ -61,6 +71,8 @@ void InternalMergeBlocks(
/// Combinator used for cBlockArea::msOverwrite merging /// Combinator used for cBlockArea::msOverwrite merging
template<bool MetaValid> template<bool MetaValid>
void MergeCombinatorOverwrite(BLOCKTYPE & a_DstType, BLOCKTYPE a_SrcType, NIBBLETYPE & a_DstMeta, NIBBLETYPE a_SrcMeta) void MergeCombinatorOverwrite(BLOCKTYPE & a_DstType, BLOCKTYPE a_SrcType, NIBBLETYPE & a_DstMeta, NIBBLETYPE a_SrcMeta)
@ -248,6 +260,11 @@ void MergeCombinatorMask(BLOCKTYPE & a_DstType, BLOCKTYPE a_SrcType, NIBBLETYPE
} }
} }
// Re-enable previously disabled MSVC warnings
#ifdef _MSC_VER
#pragma warning(pop)
#endif

View File

@ -246,8 +246,8 @@ public:
{ {
if ((x < Width) && (x > -1) && (y < Height) && (y > -1) && (z < Width) && (z > -1)) if ((x < Width) && (x > -1) && (y < Height) && (y > -1) && (z < Width) && (z > -1))
{ {
int Index = MakeIndexNoCheck(x, y, z); size_t Index = (size_t)MakeIndexNoCheck(x, y, z);
if ((size_t)(Index / 2) >= a_Buffer.size()) if ((Index / 2) >= a_Buffer.size())
{ {
return (a_IsSkyLightNibble ? 0xff : 0); return (a_IsSkyLightNibble ? 0xff : 0);
} }
@ -281,7 +281,7 @@ public:
{ {
a_Buffer.resize((size_t)((a_BlockIdx / 2) + 1)); a_Buffer.resize((size_t)((a_BlockIdx / 2) + 1));
} }
a_Buffer[(size_t)(a_BlockIdx / 2)] = PackNibble(a_Buffer, a_BlockIdx, a_Nibble); a_Buffer[(size_t)(a_BlockIdx / 2)] = PackNibble(a_Buffer, (size_t)a_BlockIdx, a_Nibble);
} }
@ -297,19 +297,19 @@ public:
return; return;
} }
int Index = MakeIndexNoCheck(x, y, z); size_t Index = (size_t)MakeIndexNoCheck(x, y, z);
if ((size_t)(Index / 2) >= a_Buffer.size()) if ((Index / 2) >= a_Buffer.size())
{ {
a_Buffer.resize((size_t)((Index / 2) + 1)); a_Buffer.resize(((Index / 2) + 1));
} }
a_Buffer[(size_t)(Index / 2)] = PackNibble(a_Buffer, Index, a_Nibble); a_Buffer[(Index / 2)] = PackNibble(a_Buffer, Index, a_Nibble);
} }
private: private:
inline static NIBBLETYPE PackNibble(const COMPRESSED_NIBBLETYPE & a_Buffer, int a_Index, NIBBLETYPE a_Nibble) inline static NIBBLETYPE PackNibble(const COMPRESSED_NIBBLETYPE & a_Buffer, size_t a_Index, NIBBLETYPE a_Nibble)
{ {
return static_cast<NIBBLETYPE>( return static_cast<NIBBLETYPE>(
(a_Buffer[a_Index / 2] & (0xf0 >> ((a_Index & 1) * 4))) | // The untouched nibble (a_Buffer[a_Index / 2] & (0xf0 >> ((a_Index & 1) * 4))) | // The untouched nibble
@ -318,7 +318,7 @@ private:
} }
inline static NIBBLETYPE ExpandNibble(const COMPRESSED_NIBBLETYPE & a_Buffer, int a_Index) inline static NIBBLETYPE ExpandNibble(const COMPRESSED_NIBBLETYPE & a_Buffer, size_t a_Index)
{ {
return (a_Buffer[a_Index / 2] >> ((a_Index & 1) * 4)) & 0x0f; return (a_Buffer[a_Index / 2] >> ((a_Index & 1) * 4)) & 0x0f;
} }

View File

@ -88,7 +88,7 @@ void cFallingBlock::Tick(float a_Dt, cChunk & a_Chunk)
AddPosition(GetSpeed() * MilliDt); AddPosition(GetSpeed() * MilliDt);
// If not static (One billionth precision) broadcast movement. // If not static (One billionth precision) broadcast movement.
static const float epsilon = 0.000000001; static const float epsilon = 0.000000001f;
if ((fabs(GetSpeedX()) > epsilon) || (fabs(GetSpeedZ()) > epsilon)) if ((fabs(GetSpeedX()) > epsilon) || (fabs(GetSpeedZ()) > epsilon))
{ {
BroadcastMovementUpdate(); BroadcastMovementUpdate();