about summary refs log tree commit diff
path: root/src/game/server
diff options
context:
space:
mode:
Diffstat (limited to 'src/game/server')
-rw-r--r--src/game/server/gs_common.h1
-rw-r--r--src/game/server/gs_server.cpp8
2 files changed, 9 insertions, 0 deletions
diff --git a/src/game/server/gs_common.h b/src/game/server/gs_common.h
index 8913dd8a..1dd60e81 100644
--- a/src/game/server/gs_common.h
+++ b/src/game/server/gs_common.h
@@ -98,6 +98,7 @@ public:
 	world_core core;
 	
 	game_world();
+	~game_world();
 	int find_entities(vec2 pos, float radius, entity **ents, int max);
 	int find_entities(vec2 pos, float radius, entity **ents, int max, const int* types, int maxtypes);
 
diff --git a/src/game/server/gs_server.cpp b/src/game/server/gs_server.cpp
index c42872b1..fcb03f02 100644
--- a/src/game/server/gs_server.cpp
+++ b/src/game/server/gs_server.cpp
@@ -181,6 +181,7 @@ entity::entity(int objtype)
 
 entity::~entity()
 {
+	world->remove_entity(this);
 	snap_free_id(id);
 }
 
@@ -196,6 +197,13 @@ game_world::game_world()
 		first_entity_types[i] = 0;
 }
 
+game_world::~game_world()
+{
+	// delete all entities
+	while(first_entity)
+		delete first_entity;
+}
+
 int game_world::find_entities(vec2 pos, float radius, entity **ents, int max)
 {
 	int num = 0;