import enum gameGrenadeThrowStartType
{
	Invalid,
	LeftSide,
	RightSide,
	Top,
	Count,
}

importonly struct gameGrenadeThrowQueryParams
{
	import editable var requester : weak< GameObject >;
	import editable var target : weak< GameObject >;
	import editable var targetPositionProvider : IPositionProvider;
	import editable var minRadius : Float;
	import editable var maxRadius : Float;
	import editable var friendlyAvoidanceRadius : Float;
	import editable var throwAngleDegrees : Float;
	import editable var gravitySimulation : Float;
	import editable var minTargetAngleDegrees : Float;
	import editable var maxTargetAngleDegrees : Float;
}

importonly abstract class gameICombatQueriesSystem extends IGameSystem
{
	public import function StartGrenadeThrowQuery( queryParams : gameGrenadeThrowQueryParams ) : Int32;
	public import function StopGrenadeThrowQuery( requester : GameObject, queryId : Int32 );
	public import function StopGrenadeThrowQueries( requester : GameObject );
	public import function StopAllGrenadeThrowQueries();
	public import function CheckGrenadeThrowQuery( requester : GameObject, refQueryId : Int32, outTargetPosition : Vector4, outThrowAngleDegrees : Float, outStartPos : gameGrenadeThrowStartType ) : Bool;
}

class CombatQueriesRequest extends SignalUserData
{
}

