- function TQuake3BSP.CheckCollisionEntitys2(Pos : TVector3f) : boolean;
- var
- i,x,y,z : integer;
- Min,Max : TVector3f;
- EntityObject : TEntityObject;
- begin
- Result := false;
- for i := 0 to numOfBSPCollisionEntitys-1 do
- if not CollisionEntitys[i].passable then
- begin
- if CollisionEntitys[i].EoId > -1 then
- begin
- EntityObject := EntityObjects.EntityObject[CollisionEntitys[i].EoId];
- Max := AddVector(AddVector(Models[EntityObject.ModelId].Max,EntityObject.Position),EntityObject.ParentOffset);
- Min := AddVector(AddVector(Models[EntityObject.ModelId].Min,EntityObject.Position),EntityObject.ParentOffset);
- end
- else
- begin
- Max := CollisionEntitys[i].Max;
- Min := CollisionEntitys[i].Min;
- end;
- for x := trunc(Pos.X-Player_Box.X) to trunc(Pos.X+Player_Box.X) do
- If (x > Min.X) and (x < Max.X) then
- for z := trunc(Pos.Z-Player_Box.Z) to trunc(Pos.Z+Player_Box.Z) do
- If (z > Min.Z) and (z < Max.Z) then
- for y := trunc(Pos.Y-Player_Box.Y) to trunc(Pos.Y) do
- If (y > Min.Y) and (y < Max.Y) then
- begin
- Result := true;
- if CollisionEntitys[i].TouchEnabled then
- CollisionEntitys[i].Touch(CollisionEntitys[i],nil); // touching it
- exit;
- end;
- end;
- end;