#include <stdbool.h>
#include <unistd.h>
#include <math.h>
-#include <endian.h>
+#include <endian.h/endian.h>
#include <string.h>
#include "map.h"
#include "util.h"
Map *map = malloc(sizeof(Map));
pthread_rwlock_init(&map->rwlck, NULL);
pthread_rwlock_init(&map->cached_rwlck, NULL);
- map->sectors = bintree_create(sizeof(v2s32));
+ map->sectors = bintree_create(sizeof(v2s32), NULL);
map->cached = NULL;
map->callbacks = callbacks;
return map;
}
-static void free_block(void *value, void *arg)
+static void free_block(BintreeNode *node, void *arg)
{
Map *map = arg;
if (map->callbacks.delete_block)
- map->callbacks.delete_block(value);
+ map->callbacks.delete_block(node->value);
- map_free_block(value);
+ map_free_block(node->value);
}
-static void free_sector(void *value, void *arg)
+static void free_sector(BintreeNode *node, void *arg)
{
- MapSector *sector = value;
+ MapSector *sector = node->value;
bintree_clear(§or->blocks, &free_block, arg);
pthread_rwlock_destroy(§or->rwlck);
sector = malloc(sizeof(MapSector));
pthread_rwlock_init(§or->rwlck, NULL);
sector->pos = pos;
- sector->blocks = bintree_create(sizeof(s32));
+ sector->blocks = bintree_create(sizeof(s32), NULL);
bintree_add_node(&map->sectors, nodeptr, &pos, sector);
}
return false;
if (type >= NODE_UNLOADED)
- type = NODE_INVALID;
+ type = NODE_UNKNOWN;
*node = map_node_create(type);
node.type = be32toh(node.type);
if (node.type >= NODE_UNLOADED)
- node.type = NODE_INVALID;
+ node.type = NODE_UNKNOWN;
if (node_definitions[node.type].deserialize)
node_definitions[node.type].deserialize(&node);
if (block) {
pthread_mutex_lock(&block->mtx);
if (! map->callbacks.set_node || map->callbacks.set_node(block, offset, &node, arg)) {
+ block->data[offset.x][offset.y][offset.z] = node;
if (map->callbacks.after_set_node)
map->callbacks.after_set_node(block, offset, arg);
- block->data[offset.x][offset.y][offset.z] = node;
}
pthread_mutex_unlock(&block->mtx);
}
{
MapNode node;
node.type = type;
- memset(&node.state, 0, sizeof(NodeState));
if (node.type != NODE_UNLOADED && node_definitions[node.type].create)
node_definitions[node.type].create(&node);