diff options
author | Mattes D <github@xoft.cz> | 2017-06-15 17:06:50 +0200 |
---|---|---|
committer | worktycho <work.tycho@gmail.com> | 2017-06-15 17:06:50 +0200 |
commit | 885d80ccdb97c984abe85eaeaecf1aedc3e36d25 (patch) | |
tree | a601ae53a96c7aae83900571af1d38bc0cd1b33a /src | |
parent | Replace evdns with getaddrinfo and getnameinfo (#3766) (diff) | |
download | cuberite-885d80ccdb97c984abe85eaeaecf1aedc3e36d25.tar cuberite-885d80ccdb97c984abe85eaeaecf1aedc3e36d25.tar.gz cuberite-885d80ccdb97c984abe85eaeaecf1aedc3e36d25.tar.bz2 cuberite-885d80ccdb97c984abe85eaeaecf1aedc3e36d25.tar.lz cuberite-885d80ccdb97c984abe85eaeaecf1aedc3e36d25.tar.xz cuberite-885d80ccdb97c984abe85eaeaecf1aedc3e36d25.tar.zst cuberite-885d80ccdb97c984abe85eaeaecf1aedc3e36d25.zip |
Diffstat (limited to '')
-rw-r--r-- | src/Entities/Entity.cpp | 16 | ||||
-rw-r--r-- | src/Entities/Entity.h | 10 |
2 files changed, 15 insertions, 11 deletions
diff --git a/src/Entities/Entity.cpp b/src/Entities/Entity.cpp index 5d26f501b..9ff57602e 100644 --- a/src/Entities/Entity.cpp +++ b/src/Entities/Entity.cpp @@ -19,15 +19,21 @@ -UInt32 cEntity::m_EntityCount = 0; -cCriticalSection cEntity::m_CSCount; +static UInt32 GetNextUniqueID(void) +{ + static std::atomic<UInt32> counter(1); + return counter.fetch_add(1); +} +//////////////////////////////////////////////////////////////////////////////// +// cEntity: + cEntity::cEntity(eEntityType a_EntityType, double a_X, double a_Y, double a_Z, double a_Width, double a_Height): - m_UniqueID(INVALID_ID), // Proper ID will be assigned later in the constructor code + m_UniqueID(GetNextUniqueID()), m_Health(1), m_MaxHealth(1), m_AttachedTo(nullptr), @@ -65,10 +71,6 @@ cEntity::cEntity(eEntityType a_EntityType, double a_X, double a_Y, double a_Z, d m_Height(a_Height), m_InvulnerableTicks(0) { - // Assign a proper ID: - cCSLock Lock(m_CSCount); - m_EntityCount++; - m_UniqueID = m_EntityCount; } diff --git a/src/Entities/Entity.h b/src/Entities/Entity.h index b7778e797..4310b1567 100644 --- a/src/Entities/Entity.h +++ b/src/Entities/Entity.h @@ -32,7 +32,12 @@ #define POSZ_TOINT FloorC(GetPosZ()) #define POS_TOINT GetPosition().Floor() -#define GET_AND_VERIFY_CURRENT_CHUNK(ChunkVarName, X, Z) cChunk * ChunkVarName = a_Chunk.GetNeighborChunk(X, Z); if ((ChunkVarName == nullptr) || !ChunkVarName->IsValid()) { return; } +#define GET_AND_VERIFY_CURRENT_CHUNK(ChunkVarName, X, Z) \ + cChunk * ChunkVarName = a_Chunk.GetNeighborChunk(X, Z); \ + if ((ChunkVarName == nullptr) || !ChunkVarName->IsValid()) \ + { \ + return; \ + } @@ -518,9 +523,6 @@ protected: bool m_ShouldPreventTeleportation; }; - static cCriticalSection m_CSCount; - static UInt32 m_EntityCount; - /** Measured in meters / second (m / s) */ Vector3d m_Speed; |