From 3138daa1f8902a9e57d8ff2aa2951a194808b8ae Mon Sep 17 00:00:00 2001 From: "madmaxoft@gmail.com" Date: Tue, 28 May 2013 18:50:44 +0000 Subject: Block entities now receive the cChunk param in their Tick() function They can safely access that chunk and any of its neighbors during ticking. git-svn-id: http://mc-server.googlecode.com/svn/trunk@1526 0a769ca7-a7f5-676a-18bf-c427514a06d6 --- source/BlockEntity.h | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) (limited to 'source/BlockEntity.h') diff --git a/source/BlockEntity.h b/source/BlockEntity.h index 05818437b..a1dba82a6 100644 --- a/source/BlockEntity.h +++ b/source/BlockEntity.h @@ -28,6 +28,8 @@ protected: m_PosX(a_BlockX), m_PosY(a_BlockY), m_PosZ(a_BlockZ), + m_RelX(a_BlockX - cChunkDef::Width * FAST_FLOOR_DIV(a_BlockX, cChunkDef::Width)), + m_RelZ(a_BlockZ - cChunkDef::Width * FAST_FLOOR_DIV(a_BlockZ, cChunkDef::Width)), m_BlockType(a_BlockType), m_World(a_World) { @@ -59,10 +61,14 @@ public: int GetChunkX(void) const { return FAST_FLOOR_DIV(m_PosX, cChunkDef::Width); } int GetChunkZ(void) const { return FAST_FLOOR_DIV(m_PosZ, cChunkDef::Width); } + int GetRelX(void) const { return m_RelX; } + int GetRelZ(void) const { return m_RelZ; } + // tolua_end virtual void SaveToJson (Json::Value & a_Value) = 0; + /// Called when a player uses this entity; should open the UI window virtual void UsedBy( cPlayer * a_Player ) = 0; /** Sends the packet defining the block entity to the client specified. @@ -71,12 +77,14 @@ public: virtual void SendTo(cClientHandle & a_Client) = 0; /// Ticks the entity; returns true if the chunk should be marked as dirty as a result of this ticking. By default does nothing. - virtual bool Tick(float a_Dt) { return false; } + virtual bool Tick(float a_Dt, cChunk & a_Chunk) { return false; } protected: - int m_PosX; // Position in absolute block coordinates - int m_PosY; - int m_PosZ; + /// Position in absolute block coordinates + int m_PosX, m_PosY, m_PosZ; + + /// Position relative to the chunk, used to speed up ticking + int m_RelX, m_RelZ; BLOCKTYPE m_BlockType; -- cgit v1.2.3