Crushed the last memory leakage bug in the chunk update
This commit is contained in:
parent
fb0aa65d00
commit
3a017e678e
|
@ -38,6 +38,10 @@ void tc_draw_chunkloader_zone(tc_chunkloader_s *loader)
|
||||||
tc_chunklist_s *list = &loader->chunklist;
|
tc_chunklist_s *list = &loader->chunklist;
|
||||||
for(tc_chunklist_entry_s *current = list->first; current != NULL; current = current->next)
|
for(tc_chunklist_entry_s *current = list->first; current != NULL; current = current->next)
|
||||||
{
|
{
|
||||||
|
if(current->entity == NULL)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
tc_send_pointer_to_entity(current->entity, "draw", 0);
|
tc_send_pointer_to_entity(current->entity, "draw", 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -117,7 +117,10 @@ void tc_chunklist_remove_item(tc_chunklist_s *list, tc_entity_s *chunk)
|
||||||
if(entry->previous != NULL)
|
if(entry->previous != NULL)
|
||||||
entry->previous->next = entry->next;
|
entry->previous->next = entry->next;
|
||||||
|
|
||||||
entry->entity = NULL;
|
if(entry->next != NULL)
|
||||||
|
entry->next->previous = entry->previous;
|
||||||
|
|
||||||
|
entry->entity = NULL;
|
||||||
list->first_free = entry;
|
list->first_free = entry;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -130,7 +133,7 @@ tc_chunkloader_s tc_create_chunkloader(tc_chunk_location_s location)
|
||||||
loader.extent.y = UPDATE_DISTANCE * 2 + 1;
|
loader.extent.y = UPDATE_DISTANCE * 2 + 1;
|
||||||
loader.extent.z = UPDATE_DISTANCE * 2 + 1;
|
loader.extent.z = UPDATE_DISTANCE * 2 + 1;
|
||||||
loader.center = location;
|
loader.center = location;
|
||||||
loader.chunklist = tc_create_chunklist(200);
|
loader.chunklist = tc_create_chunklist(512);
|
||||||
loader.needs_reload = FALSE;
|
loader.needs_reload = FALSE;
|
||||||
|
|
||||||
return loader;
|
return loader;
|
||||||
|
|
|
@ -322,10 +322,11 @@ void tc_schedule_interval(tc_entity_s *entity, float wanted_delta, void (*fn_int
|
||||||
|
|
||||||
void tc_send_pointer_to_entity(tc_entity_s *entity, char *event_name, void *pointer)
|
void tc_send_pointer_to_entity(tc_entity_s *entity, char *event_name, void *pointer)
|
||||||
{
|
{
|
||||||
tc_entity_event_s event;
|
tc_entity_event_s event;
|
||||||
event.identifier = event_name;
|
event.identifier = event_name;
|
||||||
event.value.pointer = pointer;
|
event.value.pointer = pointer;
|
||||||
entity->type->functions.fn_send_event(entity, event);
|
tc_entity_type_s *type = entity->type;
|
||||||
|
type->functions.fn_send_event(entity, event);
|
||||||
}
|
}
|
||||||
|
|
||||||
void tc_send_string_to_entity(tc_entity_s *entity, char *event_name, char *string)
|
void tc_send_string_to_entity(tc_entity_s *entity, char *event_name, char *string)
|
||||||
|
|
|
@ -39,8 +39,10 @@ void tc_delete_chunk_entity(tc_entity_s *entity)
|
||||||
if(chunk->vertex_uvs != NULL) free(chunk->vertex_uvs);
|
if(chunk->vertex_uvs != NULL) free(chunk->vertex_uvs);
|
||||||
|
|
||||||
tc_physics_entity_s *physics_body = tc_get_pointer_from_entity(entity, "physics_body");
|
tc_physics_entity_s *physics_body = tc_get_pointer_from_entity(entity, "physics_body");
|
||||||
tc_remove_physics_entity(physics_body);
|
if(physics_body != 0)
|
||||||
|
{
|
||||||
|
tc_remove_physics_entity(physics_body);
|
||||||
|
}
|
||||||
tc_deallocate_chunk(entity->specific);
|
tc_deallocate_chunk(entity->specific);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -4,6 +4,7 @@
|
||||||
|
|
||||||
void tc_initialize_chunk_physics(tc_entity_s *chunk_entity, void *userdata)
|
void tc_initialize_chunk_physics(tc_entity_s *chunk_entity, void *userdata)
|
||||||
{
|
{
|
||||||
|
/*
|
||||||
tc_chunk_s *chunk = chunk_entity->specific;
|
tc_chunk_s *chunk = chunk_entity->specific;
|
||||||
tc_world_s *world = chunk->location.world;
|
tc_world_s *world = chunk->location.world;
|
||||||
tc_physics_simulation_s *simulation = world->physics;
|
tc_physics_simulation_s *simulation = world->physics;
|
||||||
|
@ -39,6 +40,7 @@ void tc_initialize_chunk_physics(tc_entity_s *chunk_entity, void *userdata)
|
||||||
|
|
||||||
tc_add_physics_object(world->physics, chunk_body);
|
tc_add_physics_object(world->physics, chunk_body);
|
||||||
tc_set_pointer_for_entity(chunk_entity, "physics_body", chunk_body);
|
tc_set_pointer_for_entity(chunk_entity, "physics_body", chunk_body);
|
||||||
|
*/
|
||||||
}
|
}
|
||||||
|
|
||||||
void tc_create_world_physics(tc_world_s *world, void *userdata)
|
void tc_create_world_physics(tc_world_s *world, void *userdata)
|
||||||
|
|
Loading…
Reference in New Issue