// create a new squirrel table for the sector
using namespace Scripting;
+ sq_collectgarbage(global_vm);
+
sq_newtable(global_vm);
sq_pushroottable(global_vm);
if(SQ_FAILED(sq_setdelegate(global_vm, -2)))
sq_release(global_vm, &object);
}
sq_release(global_vm, §or_table);
+ sq_collectgarbage(global_vm);
update_game_objects();
assert(gameobjects_new.size() == 0);
- for(GameObjects::iterator i = gameobjects.begin(); i != gameobjects.end();
- ++i) {
- before_object_remove(*i);
- delete *i;
+ for(GameObjects::iterator i = gameobjects.begin();
+ i != gameobjects.end(); ++i) {
+ GameObject* object = *i;
+ before_object_remove(object);
+ object->unref();
}
for(SpawnPoints::iterator i = spawnpoints.begin(); i != spawnpoints.end();
}
#endif
+ object->ref();
gameobjects_new.push_back(object);
}
_current->deactivate();
_current = this;
- // register sectortable as current_sector in scripting
+ // register sectortable as sector in scripting
HSQUIRRELVM vm = Scripting::global_vm;
sq_pushroottable(vm);
sq_pushstring(vm, "sector", -1);
before_object_remove(object);
- delete *i;
+ object->unref();
i = gameobjects.erase(i);
}