import enum gamesmartGunTargetState
{
	Visible,
	Targetable,
	Locking,
	Locked,
	Unlocking,
}

importonly struct smartGunUITargetParameters
{
	import var pos : Vector2;
	import var state : gamesmartGunTargetState;
	import var distance : Float;
	import var accuracy : Float;
	import var isLocked : Bool;
	import var timeLocking : Float;
	import var timeUnlocking : Float;
	import var entityID : EntityID;
	import var attachedBoneName : CName;
}

importonly struct smartGunUISightParameters
{
	import var center : Vector2;
	import var targetableRegionSize : Vector2;
	import var reticleSize : Vector2;
}

importonly class smartGunUIParameters extends IScriptable
{
	import var targets : array< smartGunUITargetParameters >;
	import var sight : smartGunUISightParameters;
	import var crosshairPos : Vector2;
	import var hasRequiredCyberware : Bool;
	import var timeToRemoveOccludedTarget : Float;
	import var timeToLock : Float;
	import var timeToUnlock : Float;
	import var smartAudioEvents : array< CName >;
	import var smartAudioEventsDelays : array< Float >;
}

import enum gameBreachUITrackingChange
{
	NoChange,
	StartedNew,
	StoppedOnTimeout,
	StoppedOnTargetDeath,
	StoppedOnDestroyed,
	StoppedForced,
	Hidden,
	Unhidden,
}

importonly class BreachUIParameters extends IScriptable
{
	import var trackingChange : gameBreachUITrackingChange;
	import var tracking : Bool;
	import var visible : Bool;
	import var almostTimeout : Bool;
	import var position : Vector2;
	import var radius : Float;
	import var distance : Float;
	import var health : Float;
	import var maxHealth : Float;
}

importonly struct gameuiWeaponShootParams
{
	import var fromWorldPosition : Vector4;
	import var forward : Vector4;
}

import enum gamedataChargeStep
{
	Idle,
	Charging,
	Charged,
	Overcharging,
	Discharging,
}

