Ich hatte gestern nen Fehler in AdPhysics.pas in Zeile 474-496:
r.Left war 0, aber als die for-schleife, die anstatt der "while (ax <= r.Right) and (ax < r.Left) do" steht, beim letzten Durchlauf war, wurde ax auf 65000 oda so gesetzt, dann gab es ne Exeption
Als ich es so "korrigiert" hatte hat es funktioniert, aber ich weiß nicht warum es vorher falsch war, bzw. nicht funktionert hat...
Delphi-Quellcode:
procedure TPhysicalSprite.ActivateNeighbours;
var r:TRect;
ax,ay,i:integer;
List:TSpriteList;
begin
r := GetCollisionField;
ax := r.Left;
while (ax <= r.Right) and (ax < r.Left) do
begin
for ay := r.Top to r.Bottom do
begin
List := Parent.SpriteField.Items[ax,ay];
for i := 0 to List.Count - 1 do
begin
if (List[i] <> self) and (List[i] is TPhysicalSprite) and
(TPhysicalSprite(List[i]).Typ <> ptStatic) then
begin
TPhysicalSprite(List[i]).Active := true;
end;
end;
end;
end;
end;