import enum gameLoSMode
{
	Invalid,
	Keep,
	Avoid,
}

importonly class LoSFinderParams extends IScriptable
{
	public import final function SetSeeker( seeker : weak< GameObject >, ignoredVisionBlockers : VisionBlockerTypeFlags );
	public import final function SetTarget( target : weak< VisibleObject >, ignoredVisionBlockers : VisionBlockerTypeFlags );
	public import final function SetMode( mode : gameLoSMode );
	public import final function SetOverrideCheckHeight( height : Float );
	public import final function SetTracesAmountMultiplier( multiplier : Uint32 );
}

importonly abstract class ILoSFinderSystem extends IGameSystem
{
	public import final function StartChecking( params : LoSFinderParams ) : Uint32;
	public import final function StopChecking( id : Uint32 ) : Bool;
	public import final function UpdateParams( id : Uint32, params : LoSFinderParams ) : Bool;
	public import final function GetLoSPosition( entityId : EntityID, position : ref< Vector3 >, currentSearchTime : ref< Float > ) : Bool;
	public import final function GetLoSMode( entityId : EntityID ) : gameLoSMode;
}

