equal
deleted
inserted
replaced
1001 rY:= sqr(rY); |
1001 rY:= sqr(rY); |
1002 |
1002 |
1003 while t <> nil do |
1003 while t <> nil do |
1004 begin |
1004 begin |
1005 if (t <> Gear) and (t^.Kind = Kind) then |
1005 if (t <> Gear) and (t^.Kind = Kind) then |
1006 if not((hwSqr(Gear^.X - t^.X) / rX + hwSqr(Gear^.Y - t^.Y) / rY) > _1) then |
1006 if (not ((hwSqr(Gear^.X - t^.X) / rX + hwSqr(Gear^.Y - t^.Y) / rY) > _1)) or |
|
1007 ((WorldEdge = weWrap) and ( |
|
1008 (not ((hwSqr(Gear^.X - int2hwFloat(RightX-LeftX) - t^.X) / rX + hwSqr(Gear^.Y - t^.Y) / rY) > _1)) or |
|
1009 (not ((hwSqr(Gear^.X + int2hwFloat(RightX-LeftX) - t^.X) / rX + hwSqr(Gear^.Y - t^.Y) / rY) > _1)))) then |
1007 begin |
1010 begin |
1008 CheckGearNear:= t; |
1011 CheckGearNear:= t; |
1009 exit; |
1012 exit; |
1010 end; |
1013 end; |
1011 t:= t^.NextGear |
1014 t:= t^.NextGear |
1390 var GearsNearArray : TPGearArray; |
1393 var GearsNearArray : TPGearArray; |
1391 function GearsNear(X, Y: hwFloat; Kind: TGearType; r: LongInt): PGearArrayS; |
1394 function GearsNear(X, Y: hwFloat; Kind: TGearType; r: LongInt): PGearArrayS; |
1392 var |
1395 var |
1393 t: PGear; |
1396 t: PGear; |
1394 s: Longword; |
1397 s: Longword; |
|
1398 xc, xc_left, xc_right, yc: hwFloat; |
1395 begin |
1399 begin |
1396 r:= r*r; |
1400 r:= r*r; |
1397 s:= 0; |
1401 s:= 0; |
1398 SetLength(GearsNearArray, s); |
1402 SetLength(GearsNearArray, s); |
1399 t := GearsList; |
1403 t := GearsList; |
1400 while t <> nil do |
1404 while t <> nil do |
1401 begin |
1405 begin |
1402 if (t^.Kind = Kind) |
1406 xc:= (X - t^.X)*(X - t^.X); |
1403 and ((X - t^.X)*(X - t^.X) + (Y - t^.Y)*(Y-t^.Y) < int2hwFloat(r)) then |
1407 xc_left:= ((X - int2hwFloat(RightX-LeftX)) - t^.X)*((X - int2hwFloat(RightX-LeftX)) - t^.X); |
1404 begin |
1408 xc_right := ((X + int2hwFloat(RightX-LeftX)) - t^.X)*((X + int2hwFloat(RightX-LeftX)) - t^.X); |
1405 inc(s); |
1409 yc:= (Y - t^.Y)*(Y - t^.Y); |
1406 SetLength(GearsNearArray, s); |
1410 if (t^.Kind = Kind) |
1407 GearsNearArray[s - 1] := t; |
1411 and ((xc + yc < int2hwFloat(r)) |
1408 end; |
1412 or ((WorldEdge = weWrap) and |
1409 t := t^.NextGear; |
1413 ((xc_left + yc < int2hwFloat(r)) or |
1410 end; |
1414 (xc_right + yc < int2hwFloat(r))))) then |
|
1415 begin |
|
1416 inc(s); |
|
1417 SetLength(GearsNearArray, s); |
|
1418 GearsNearArray[s - 1] := t; |
|
1419 end; |
|
1420 t := t^.NextGear; |
|
1421 end; |
1411 |
1422 |
1412 GearsNear.size:= s; |
1423 GearsNear.size:= s; |
1413 GearsNear.ar:= @GearsNearArray |
1424 GearsNear.ar:= @GearsNearArray |
1414 end; |
1425 end; |
1415 |
1426 |