<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
		<id>https://wiki.soldat.pl/index.php?action=history&amp;feed=atom&amp;title=TMap.RayCast</id>
		<title>TMap.RayCast - Revision history</title>
		<link rel="self" type="application/atom+xml" href="https://wiki.soldat.pl/index.php?action=history&amp;feed=atom&amp;title=TMap.RayCast"/>
		<link rel="alternate" type="text/html" href="https://wiki.soldat.pl/index.php?title=TMap.RayCast&amp;action=history"/>
		<updated>2026-05-26T03:32:20Z</updated>
		<subtitle>Revision history for this page on the wiki</subtitle>
		<generator>MediaWiki 1.30.0</generator>

	<entry>
		<id>https://wiki.soldat.pl/index.php?title=TMap.RayCast&amp;diff=1091&amp;oldid=prev</id>
		<title>Mighty: new page</title>
		<link rel="alternate" type="text/html" href="https://wiki.soldat.pl/index.php?title=TMap.RayCast&amp;diff=1091&amp;oldid=prev"/>
				<updated>2013-08-22T16:44:59Z</updated>
		
		<summary type="html">&lt;p&gt;new page&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt; '''function RayCast(x1, y1, x2, y2: Single; Player, Flag, Bullet, CheckCollider: Boolean; Team: Byte): Boolean'''&lt;br /&gt;
  x1,y1: Coordinates of a starting point&lt;br /&gt;
  x2,y2: Coordinates of another point&lt;br /&gt;
  Player: if TRUE, Player collide polygons will be checked&lt;br /&gt;
  Flag: if TRUE, Flag collide polygons will be checked&lt;br /&gt;
  Bullet: if TRUE, Bullet collide polygons will be checked&lt;br /&gt;
  CheckCollider: if TRUE, colliders will be checked&lt;br /&gt;
  Team: if ''Player'' or ''Flag'' are TRUE, Team defines which team colliders are checked&lt;br /&gt;
  Result: FALSE if there are no colliders between the points, TRUE if there are&lt;br /&gt;
&lt;br /&gt;
==Description==&lt;br /&gt;
This function will check whether there are colliders between two coordinates on the map.&lt;br /&gt;
&lt;br /&gt;
==Example==&lt;br /&gt;
Below example check whether there is vision between a specified point and a player.&amp;lt;br&amp;gt;&lt;br /&gt;
Works only for player with ID = 1.&amp;lt;br&amp;gt;&lt;br /&gt;
To define 1st point, type &amp;quot;mark&amp;quot;. To stop displaying, type &amp;quot;stop&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;pascal&amp;quot;&amp;gt;&lt;br /&gt;
const&lt;br /&gt;
  TICKINTERVAL = 4;&lt;br /&gt;
&lt;br /&gt;
var&lt;br /&gt;
  newObj: TNewMapObject;&lt;br /&gt;
  newX,newY: single;&lt;br /&gt;
  pX,pY: single;&lt;br /&gt;
  lastObj: byte;&lt;br /&gt;
  count: integer;&lt;br /&gt;
  &lt;br /&gt;
procedure OnTick(t: integer);&lt;br /&gt;
begin&lt;br /&gt;
  // create new object if X,Y not 0;&lt;br /&gt;
  if newX &amp;lt;&amp;gt; 0 then&lt;br /&gt;
  begin&lt;br /&gt;
    newObj := TNewMapObject.Create;&lt;br /&gt;
    newObj.Style := 16;&lt;br /&gt;
    newObj.X := newX;&lt;br /&gt;
    newObj.Y := newY;&lt;br /&gt;
    if lastObj &amp;gt; 0 then &lt;br /&gt;
      if Map.Objects[lastObj].Active then &lt;br /&gt;
        Map.Objects[lastObj].Kill;&lt;br /&gt;
    lastObj := Map.AddObject(newObj).ID;&lt;br /&gt;
    newObj.Free;&lt;br /&gt;
  end;&lt;br /&gt;
  // display result in bigtext for player 1&lt;br /&gt;
  if Players[1].Active then&lt;br /&gt;
  begin&lt;br /&gt;
    if newX &amp;lt;&amp;gt; 0 then&lt;br /&gt;
    begin&lt;br /&gt;
      pX := Players[1].X;&lt;br /&gt;
      pY := Players[1].Y;&lt;br /&gt;
      try&lt;br /&gt;
        if Map.RayCast(newX,newY,pX,pY,FALSE,FALSE,FALSE,FALSE,1) then&lt;br /&gt;
          Players[1].BigText(11,inttostr(count)+': TRUE',200,$FFFFFF,0.08,100,100)&lt;br /&gt;
        else&lt;br /&gt;
          Players[1].BigText(11,inttostr(count)+': FALSE',200,$FFFFFF,0.08,100,100);&lt;br /&gt;
      except&lt;br /&gt;
        Players[1].BigText(11,inttostr(count)+': ERROR',200,$FF0000,0.08,100,100);&lt;br /&gt;
        break;&lt;br /&gt;
      end;&lt;br /&gt;
      count := count + 1;&lt;br /&gt;
    end;&lt;br /&gt;
  end&lt;br /&gt;
  else // stop if player became inactive&lt;br /&gt;
    newX := 0;&lt;br /&gt;
end;&lt;br /&gt;
  &lt;br /&gt;
procedure OnSpeak(P: TActivePlayer; Text: string);&lt;br /&gt;
begin&lt;br /&gt;
  if lowercase(Text) = 'mark' then&lt;br /&gt;
  begin&lt;br /&gt;
    newX := P.X;&lt;br /&gt;
    newY := P.Y;&lt;br /&gt;
    P.BigText(10,'Done',200,$666666,0.08,100,80);&lt;br /&gt;
  end&lt;br /&gt;
  else if lowercase(Text) = 'stop' then&lt;br /&gt;
  begin&lt;br /&gt;
    newX := 0;&lt;br /&gt;
    newY := 0;&lt;br /&gt;
    if lastObj &amp;gt; 0 then&lt;br /&gt;
      if Map.Objects[lastObj].Active then&lt;br /&gt;
        Map.Objects[lastObj].Kill;&lt;br /&gt;
    count := 1;&lt;br /&gt;
  end;&lt;br /&gt;
  &lt;br /&gt;
end;&lt;br /&gt;
  &lt;br /&gt;
begin&lt;br /&gt;
  newX := 0;&lt;br /&gt;
  newY := 0;&lt;br /&gt;
  lastObj := 0;&lt;br /&gt;
  count := 1;&lt;br /&gt;
  &lt;br /&gt;
  Game.OnClockTick := @OnTick;&lt;br /&gt;
  Game.TickThreshold := TICKINTERVAL;&lt;br /&gt;
  Players[1].OnSpeak := @OnSpeak;&lt;br /&gt;
end.&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:TMap]]&lt;/div&gt;</summary>
		<author><name>Mighty</name></author>	</entry>

	</feed>