First : TCastleTransformend.Exists:= false;
Secound : TCastleTransform.Update(const SecondsPassed: Single; var RemoveMe: TRemoveType); RemoveMe := rtRemove;
First = Second?
procedure TTowerManager.ClearAllTower;
var
i : Integer;
Tower : TTower;
begin
for i:= FTowerList.Count - 1 downto 0 do
begin
Tower := FTowerList.Items[i];
if Assigned(Tower) then
begin
if Tower.Exists then
begin
Tower.Exists := False; //need to TCastleViewport.Items.Remove(Tower) ?
end;
FreeAndNil(Tower);
end;
end;
end;
What is TTower ? how do you create them? If you pass an owner to constructor Create (I assume TTower is descendant of TCastleTransform), then Owner will be responsible for their Freeing. If you create them manually and do not pass Owner, but instead store in some List (FTowerList) then you need manually control what you do.
Items object of viewport is not responsible for freeing, it is about being a parent to them and showing them inside a viewport.