more reorganizing of map code

master
Perttu Ahola 2011-06-26 01:31:43 +03:00
parent cb130d9158
commit 2915bd5518
10 changed files with 38 additions and 40 deletions

View File

@ -206,8 +206,7 @@ else()
endif() endif()
set(CMAKE_CXX_FLAGS_RELEASE "-DNDEBUG ${RELEASE_WARNING_FLAGS} ${WARNING_FLAGS} -O3 -ffast-math -Wall -fomit-frame-pointer -pipe -funroll-loops") set(CMAKE_CXX_FLAGS_RELEASE "-DNDEBUG ${RELEASE_WARNING_FLAGS} ${WARNING_FLAGS} -O3 -ffast-math -Wall -fomit-frame-pointer -pipe -funroll-loops")
#set(CMAKE_CXX_FLAGS_DEBUG "-g -O1 -Wall ${WARNING_FLAGS}") set(CMAKE_CXX_FLAGS_DEBUG "-g -O1 -Wall ${WARNING_FLAGS}")
set(CMAKE_CXX_FLAGS_DEBUG "-g -O0 -Wall ${WARNING_FLAGS}")
if(USE_GPROF) if(USE_GPROF)
set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -pg") set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -pg")

View File

@ -126,7 +126,9 @@ MapSector * Map::getSectorNoGenerate(v2s16 p)
MapBlock * Map::getBlockNoCreateNoEx(v3s16 p3d) MapBlock * Map::getBlockNoCreateNoEx(v3s16 p3d)
{ {
v2s16 p2d(p3d.X, p3d.Z); v2s16 p2d(p3d.X, p3d.Z);
MapSector * sector = getSectorNoGenerate(p2d); MapSector * sector = getSectorNoGenerateNoEx(p2d);
if(sector == NULL)
return NULL;
MapBlock *block = sector->getBlockNoCreateNoEx(p3d.Y); MapBlock *block = sector->getBlockNoCreateNoEx(p3d.Y);
return block; return block;
} }

View File

@ -110,17 +110,17 @@ public:
virtual void onMapEditEvent(MapEditEvent *event) = 0; virtual void onMapEditEvent(MapEditEvent *event) = 0;
}; };
class Map : public NodeContainer class Map /*: public NodeContainer*/
{ {
public: public:
Map(std::ostream &dout); Map(std::ostream &dout);
virtual ~Map(); virtual ~Map();
virtual u16 nodeContainerId() const /*virtual u16 nodeContainerId() const
{ {
return NODECONTAINER_ID_MAP; return NODECONTAINER_ID_MAP;
} }*/
virtual s32 mapType() const virtual s32 mapType() const
{ {

View File

@ -28,7 +28,7 @@ with this program; if not, write to the Free Software Foundation, Inc.,
MapBlock MapBlock
*/ */
MapBlock::MapBlock(NodeContainer *parent, v3s16 pos, bool dummy): MapBlock::MapBlock(Map *parent, v3s16 pos, bool dummy):
m_parent(parent), m_parent(parent),
m_pos(pos), m_pos(pos),
m_modified(MOD_STATE_WRITE_NEEDED), m_modified(MOD_STATE_WRITE_NEEDED),

View File

@ -38,6 +38,7 @@ with this program; if not, write to the Free Software Foundation, Inc.,
#include "mapblock_mesh.h" #include "mapblock_mesh.h"
#endif #endif
class Map;
#define BLOCK_TIMESTAMP_UNDEFINED 0xffffffff #define BLOCK_TIMESTAMP_UNDEFINED 0xffffffff
@ -81,6 +82,7 @@ enum ModifiedState
BLOCKGEN_FULLY_GENERATED=6 BLOCKGEN_FULLY_GENERATED=6
};*/ };*/
#if 0
enum enum
{ {
NODECONTAINER_ID_MAPBLOCK, NODECONTAINER_ID_MAPBLOCK,
@ -108,23 +110,24 @@ public:
} }
} }
}; };
#endif
/* /*
MapBlock itself MapBlock itself
*/ */
class MapBlock : public NodeContainer class MapBlock /*: public NodeContainer*/
{ {
public: public:
MapBlock(NodeContainer *parent, v3s16 pos, bool dummy=false); MapBlock(Map *parent, v3s16 pos, bool dummy=false);
~MapBlock(); ~MapBlock();
virtual u16 nodeContainerId() const /*virtual u16 nodeContainerId() const
{ {
return NODECONTAINER_ID_MAPBLOCK; return NODECONTAINER_ID_MAPBLOCK;
} }*/
NodeContainer * getParent() Map * getParent()
{ {
return m_parent; return m_parent;
} }
@ -640,7 +643,7 @@ private:
*/ */
// NOTE: Lots of things rely on this being the Map // NOTE: Lots of things rely on this being the Map
NodeContainer *m_parent; Map *m_parent;
// Position in blocks on parent // Position in blocks on parent
v3s16 m_pos; v3s16 m_pos;

View File

@ -64,11 +64,7 @@ void MeshMakeData::fill(u32 daynight_ratio, MapBlock *block)
*/ */
// Get map // Get map
NodeContainer *parentcontainer = block->getParent(); Map *map = block->getParent();
// This will only work if the parent is the map
assert(parentcontainer->nodeContainerId() == NODECONTAINER_ID_MAP);
// OK, we have the map!
Map *map = (Map*)parentcontainer;
for(u16 i=0; i<6; i++) for(u16 i=0; i<6; i++)
{ {

View File

@ -856,16 +856,7 @@ bool MapBlockObjectList::wrapObject(MapBlockObject *object)
assert(m_objects.find(object->m_id) != NULL); assert(m_objects.find(object->m_id) != NULL);
assert(m_objects[object->m_id] == object); assert(m_objects[object->m_id] == object);
NodeContainer *parentcontainer = m_block->getParent(); Map *map = m_block->getParent();
// This will only work if the parent is the map
if(parentcontainer->nodeContainerId() != NODECONTAINER_ID_MAP)
{
dstream<<"WARNING: Wrapping object not possible: "
"MapBlock's parent is not map"<<std::endl;
return true;
}
// OK, we have the map!
Map *map = (Map*)parentcontainer;
// Calculate blockpos on map // Calculate blockpos on map
v3s16 oldblock_pos_i_on_map = m_block->getPosRelative(); v3s16 oldblock_pos_i_on_map = m_block->getPosRelative();

View File

@ -23,7 +23,7 @@ with this program; if not, write to the Free Software Foundation, Inc.,
#include "exceptions.h" #include "exceptions.h"
#include "mapblock.h" #include "mapblock.h"
MapSector::MapSector(NodeContainer *parent, v2s16 pos): MapSector::MapSector(Map *parent, v2s16 pos):
differs_from_disk(false), differs_from_disk(false),
m_parent(parent), m_parent(parent),
m_pos(pos), m_pos(pos),
@ -151,7 +151,7 @@ void MapSector::getBlocks(core::list<MapBlock*> &dest)
ServerMapSector ServerMapSector
*/ */
ServerMapSector::ServerMapSector(NodeContainer *parent, v2s16 pos): ServerMapSector::ServerMapSector(Map *parent, v2s16 pos):
MapSector(parent, pos) MapSector(parent, pos)
{ {
} }
@ -184,7 +184,7 @@ void ServerMapSector::serialize(std::ostream &os, u8 version)
ServerMapSector* ServerMapSector::deSerialize( ServerMapSector* ServerMapSector::deSerialize(
std::istream &is, std::istream &is,
NodeContainer *parent, Map *parent,
v2s16 p2d, v2s16 p2d,
core::map<v2s16, MapSector*> & sectors core::map<v2s16, MapSector*> & sectors
) )
@ -247,7 +247,7 @@ ServerMapSector* ServerMapSector::deSerialize(
ClientMapSector ClientMapSector
*/ */
ClientMapSector::ClientMapSector(NodeContainer *parent, v2s16 pos): ClientMapSector::ClientMapSector(Map *parent, v2s16 pos):
MapSector(parent, pos) MapSector(parent, pos)
{ {
} }

View File

@ -30,7 +30,7 @@ with this program; if not, write to the Free Software Foundation, Inc.,
#include <ostream> #include <ostream>
class MapBlock; class MapBlock;
class NodeContainer; class Map;
/* /*
This is an Y-wise stack of MapBlocks. This is an Y-wise stack of MapBlocks.
@ -43,7 +43,7 @@ class MapSector
{ {
public: public:
MapSector(NodeContainer *parent, v2s16 pos); MapSector(Map *parent, v2s16 pos);
virtual ~MapSector(); virtual ~MapSector();
virtual u32 getId() const = 0; virtual u32 getId() const = 0;
@ -73,7 +73,7 @@ protected:
// The pile of MapBlocks // The pile of MapBlocks
core::map<s16, MapBlock*> m_blocks; core::map<s16, MapBlock*> m_blocks;
NodeContainer *m_parent; Map *m_parent;
// Position on parent (in MapBlock widths) // Position on parent (in MapBlock widths)
v2s16 m_pos; v2s16 m_pos;
@ -92,7 +92,7 @@ protected:
class ServerMapSector : public MapSector class ServerMapSector : public MapSector
{ {
public: public:
ServerMapSector(NodeContainer *parent, v2s16 pos); ServerMapSector(Map *parent, v2s16 pos);
~ServerMapSector(); ~ServerMapSector();
u32 getId() const u32 getId() const
@ -109,7 +109,7 @@ public:
static ServerMapSector* deSerialize( static ServerMapSector* deSerialize(
std::istream &is, std::istream &is,
NodeContainer *parent, Map *parent,
v2s16 p2d, v2s16 p2d,
core::map<v2s16, MapSector*> & sectors core::map<v2s16, MapSector*> & sectors
); );
@ -121,7 +121,7 @@ private:
class ClientMapSector : public MapSector class ClientMapSector : public MapSector
{ {
public: public:
ClientMapSector(NodeContainer *parent, v2s16 pos); ClientMapSector(Map *parent, v2s16 pos);
~ClientMapSector(); ~ClientMapSector();
u32 getId() const u32 getId() const

View File

@ -340,6 +340,12 @@ struct TestVoxelManipulator
} }
}; };
/*
NOTE: These tests became non-working then NodeContainer was removed.
These should be redone, utilizing some kind of a virtual
interface for Map (IMap would be fine).
*/
#if 0
struct TestMapBlock struct TestMapBlock
{ {
class TC : public NodeContainer class TC : public NodeContainer
@ -663,6 +669,7 @@ struct TestMapSector
} }
}; };
#endif
struct TestSocket struct TestSocket
{ {
@ -1029,8 +1036,8 @@ void run_tests()
TEST(TestCompress); TEST(TestCompress);
TEST(TestMapNode); TEST(TestMapNode);
TEST(TestVoxelManipulator); TEST(TestVoxelManipulator);
TEST(TestMapBlock); //TEST(TestMapBlock);
TEST(TestMapSector); //TEST(TestMapSector);
if(INTERNET_SIMULATOR == false){ if(INTERNET_SIMULATOR == false){
TEST(TestSocket); TEST(TestSocket);
dout_con<<"=== BEGIN RUNNING UNIT TESTS FOR CONNECTION ==="<<std::endl; dout_con<<"=== BEGIN RUNNING UNIT TESTS FOR CONNECTION ==="<<std::endl;