From 50a7722242197f9a3b4300e154c1e66d1177839a Mon Sep 17 00:00:00 2001 From: faketruth Date: Thu, 19 Jan 2012 18:12:39 +0000 Subject: Terrain generation is synchronous again, async generation has bugs. Made some funky smart pointer things for chunks. Fixed a bug where the client would override the player position on the server and back again, resulting in sending too many chunks to the client which it doesn't even need. Fixed some compiler warnings in cPickup.cpp git-svn-id: http://mc-server.googlecode.com/svn/trunk@164 0a769ca7-a7f5-676a-18bf-c427514a06d6 --- source/ptr_cChunk.h | 37 +++++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100644 source/ptr_cChunk.h (limited to 'source/ptr_cChunk.h') diff --git a/source/ptr_cChunk.h b/source/ptr_cChunk.h new file mode 100644 index 000000000..c3556839c --- /dev/null +++ b/source/ptr_cChunk.h @@ -0,0 +1,37 @@ +#pragma once + +#include "cChunk.h" + +class ptr_cChunk +{ +public: + ptr_cChunk( cChunk* a_Ptr ) + : m_Ptr( a_Ptr ) + { + if( m_Ptr ) m_Ptr->AddReference(); + } + + ptr_cChunk( const ptr_cChunk& a_Clone ) + : m_Ptr( a_Clone.m_Ptr ) + { + if( m_Ptr ) m_Ptr->AddReference(); + } + + ~ptr_cChunk() + { + if( m_Ptr ) m_Ptr->RemoveReference(); + } + + cChunk* operator-> () + { + return m_Ptr; + } + + cChunk& operator* () { return *m_Ptr; } + bool operator!() { return !m_Ptr; } + bool operator==( const ptr_cChunk& a_Other ) { return m_Ptr == a_Other.m_Ptr; } + operator bool() { return m_Ptr != 0; } + operator cChunk*() { return m_Ptr; } +private: + cChunk* m_Ptr; +}; \ No newline at end of file -- cgit v1.2.3