Lines Matching refs:Trace

92 static bool SightCheckPlane(sight_trace_t& Trace, const sec_plane_t* Plane)  in SightCheckPlane()  argument
101 float OrgDist = DotProduct(Trace.LineStart, Plane->normal) - Plane->dist; in SightCheckPlane()
108 float HitDist = DotProduct(Trace.LineEnd, Plane->normal) - Plane->dist; in SightCheckPlane()
132 static bool SightCheckPlanes(sight_trace_t& Trace, sector_t* Sec) in SightCheckPlanes() argument
141 sec_region_t* StartReg = SV_PointInRegion(Sec, Trace.LineStart); in SightCheckPlanes()
145 if (!SightCheckPlane(Trace, Reg->floor)) in SightCheckPlanes()
150 if (!SightCheckPlane(Trace, Reg->ceiling)) in SightCheckPlanes()
159 if (!SightCheckPlane(Trace, Reg->floor)) in SightCheckPlanes()
164 if (!SightCheckPlane(Trace, Reg->ceiling)) in SightCheckPlanes()
181 static bool SightTraverse(sight_trace_t& Trace, intercept_t* in) in SightTraverse() argument
186 int s1 = li->PointOnSide2(Trace.Start); in SightTraverse()
197 TVec hit_point = Trace.Start + in->frac * Trace.Delta; in SightTraverse()
198 Trace.LineEnd = hit_point; in SightTraverse()
199 if (!SightCheckPlanes(Trace, front)) in SightTraverse()
203 Trace.LineStart = Trace.LineEnd; in SightTraverse()
230 static bool SightTraverseIntercepts(sight_trace_t& Trace, VThinker* Self, in SightTraverseIntercepts() argument
239 count = Trace.Intercepts.Num(); in SightTraverseIntercepts()
244 scan = Trace.Intercepts.Ptr(); in SightTraverseIntercepts()
245 for (int i = 0; i < Trace.Intercepts.Num(); i++, scan++) in SightTraverseIntercepts()
247 float den = DotProduct(scan->line->normal, Trace.Delta); in SightTraverseIntercepts()
249 DotProduct(Trace.Start, scan->line->normal); in SightTraverseIntercepts()
261 scan = Trace.Intercepts.Ptr(); in SightTraverseIntercepts()
262 for (int i = 0; i < Trace.Intercepts.Num(); i++, scan++) in SightTraverseIntercepts()
270 if (!SightTraverse(Trace, in)) in SightTraverseIntercepts()
277 Trace.LineEnd = Trace.End; in SightTraverseIntercepts()
278 return SightCheckPlanes(Trace, EndSector); in SightTraverseIntercepts()
288 static bool SightCheckLine(sight_trace_t& Trace, line_t *ld) in SightCheckLine() argument
297 float dot1 = DotProduct(*ld->v1, Trace.Plane.normal) - Trace.Plane.dist; in SightCheckLine()
298 float dot2 = DotProduct(*ld->v2, Trace.Plane.normal) - Trace.Plane.dist; in SightCheckLine()
305 dot1 = DotProduct(Trace.Start, ld->normal) - ld->dist; in SightCheckLine()
306 dot2 = DotProduct(Trace.End, ld->normal) - ld->dist; in SightCheckLine()
320 intercept_t& In = Trace.Intercepts.Alloc(); in SightCheckLine()
332 static bool SightBlockLinesIterator(sight_trace_t& Trace, VThinker* Self, in SightBlockLinesIterator() argument
355 if (!SightCheckLine(Trace, (*segList)->linedef)) in SightBlockLinesIterator()
368 if (!SightCheckLine(Trace, &Self->XLevel->Lines[*list])) in SightBlockLinesIterator()
385 static bool SightPathTraverse(sight_trace_t& Trace, VThinker* Self, in SightPathTraverse() argument
389 float x1 = Trace.Start.x; in SightPathTraverse()
390 float y1 = Trace.Start.y; in SightPathTraverse()
391 float x2 = Trace.End.x; in SightPathTraverse()
392 float y2 = Trace.End.y; in SightPathTraverse()
400 Trace.Intercepts.Clear(); in SightPathTraverse()
410 Trace.Delta = Trace.End - Trace.Start; in SightPathTraverse()
411 Trace.Plane.SetPointDir(Trace.Start, Trace.Delta); in SightPathTraverse()
412 Trace.EarlyOut = false; in SightPathTraverse()
413 Trace.LineStart = Trace.Start; in SightPathTraverse()
430 Trace.EarlyOut = true; in SightPathTraverse()
502 if (!SightBlockLinesIterator(Trace, Self, mapx, mapy)) in SightPathTraverse()
504 Trace.EarlyOut = true; in SightPathTraverse()
533 if (!SightBlockLinesIterator(Trace, Self, mapx + mapxstep, mapy) || in SightPathTraverse()
534 !SightBlockLinesIterator(Trace, Self, mapx, mapy + mapystep)) in SightPathTraverse()
556 return SightTraverseIntercepts(Trace, Self, EndSector); in SightPathTraverse()
568 static bool SightPathTraverse2(sight_trace_t& Trace, VThinker* Self, in SightPathTraverse2() argument
572 Trace.Delta = Trace.End - Trace.Start; in SightPathTraverse2()
573 Trace.LineStart = Trace.Start; in SightPathTraverse2()
575 return SightTraverseIntercepts(Trace, Self, EndSector); in SightPathTraverse2()
598 linetrace_t Trace; in CanSee() local
600 sight_trace_t Trace; in CanSee() local
656 Trace.Start = Origin; in CanSee()
657 Trace.Start.z += Height * 0.75; in CanSee()
658 Trace.End = Other->Origin; in CanSee()
659 Trace.End.z += Other->Height * 0.5; in CanSee()
663 if (XLevel->TraceLine(Trace, Trace.Start, Trace.End, SPF_NOBLOCKSIGHT)) in CanSee()
665 if (SightPathTraverse(Trace, this, Other->SubSector->sector)) in CanSee()
671 if (Trace.SightEarlyOut) in CanSee()
673 if (Trace.EarlyOut) in CanSee()
680 Trace.End = Other->Origin; in CanSee()
681 Trace.End.z += Other->Height; in CanSee()
683 if (XLevel->TraceLine(Trace, Trace.Start, Trace.End, SPF_NOBLOCKSIGHT)) in CanSee()
685 if (SightPathTraverse2(Trace, this, Other->SubSector->sector)) in CanSee()
692 Trace.End = Other->Origin; in CanSee()
693 Trace.End.z -= Other->FloorClip; in CanSee()
695 return XLevel->TraceLine(Trace, Trace.Start, Trace.End, SPF_NOBLOCKSIGHT); in CanSee()
697 return SightPathTraverse2(Trace, this, Other->SubSector->sector); in CanSee()