How you manage object deletion?

Lets say im creating game objects and putting them into list and some time later i decide to delete them all and create new ones in same list. In some cases i had sidekick because game objects doesn’t deletes in same frame where i call delete them and clear list entry.

So how do you ensure that game objects are deleted and list of objects are empty? Right now im delaying delete callback like below:

local function delete(self)
  for i = 1, #self.objects do
    go.delete(self.objects [i])
    self.objects[i] = nil
  end
end

local function create(self, amount)
  for i = 1, amount do
    self.objects[i] = factory.create("#factory")
  end
end

function init(self)
  create(self, 10)
  timer.delay(0.01, false, function()
    delete(self)
  end)
end

I would do it something like this. It deletes the table each time though and creates a new one, so it may not suit your usage case.

local function deleteobjects(self)
	for _,v in pairs(self.obj) do
		go.delete(v)
	end
	self.obj = {}
end

local function createobjects(self, total)
	for n = 1, total do
		local url = factory.create("#factory")
		table.insert(self.obj, url)
	end
end

function init(self)
	self.obj = {}
	createobjects(self, 10)
	
	deleteobjects(self)
end
1 Like