 class ActivationInfo {
 
 	private var activations:Vector.<BindingInfo>;			// All activated bindings
+	private var activationGamepadIndexes:Vector.<int>;		// Gamepad that activated that binding
 	private var sensitiveValues:Dictionary;					// Dictionary with IBinding
+	private var sensitiveValuesGamepadIndexes:Dictionary;	// Gamepad int that activated that sensitive value
 
 	// Temp vars to avoid garbage collection
 	private var iiv:Number;									// Value buffer

		 * @see #getActionValue()
		 */
		public function isActionActivated(__action:String, __timeToleranceSeconds:Number = 0, __gamepadIndex:int = -1):Boolean {
			return actionsActivations.hasOwnProperty(__action) && (actionsActivations[__action] as ActivationInfo).getNumActivations(__timeToleranceSeconds) > 0;
		}

		/**


	public function addActivation(__bindingInfo:BindingInfo, __gamepadIndex:int = -1):void {
		activations.push(__bindingInfo);
		activationGamepadIndexes.push(__gamepadIndex);
	}

	public function removeActivation(__bindingInfo:BindingInfo):void {
		iix = activations.indexOf(__bindingInfo);
		if (iix > -1) {
			activations.splice(iix, 1);
			activationGamepadIndexes.splice(iix, 1);
		}
	}

	public function getNumActivations(__timeToleranceSeconds:Number = 0, __gamepadIndex:int = -1):int {
		// If not time-sensitive, just return it
		if ((__timeToleranceSeconds <= 0 && __gamepadIndex < 0) || activations.length == 0) return activations.length;
		// Otherwise, actually check for activation time and gamepad index
		iit = getTimer() - __timeToleranceSeconds * 1000;
		iic = 0;
		for (iii = 0; iii < activations.length; iii++) {
			if ((__timeToleranceSeconds <= 0 || activations[iii].lastActivatedTime >= iit) && (__gamepadIndex < 0 || activationGamepadIndexes[iii] == __gamepadIndex)) iic++;
		}
		return iic;
	}

	public function resetActivations():void {
		activations.length = 0;
		activationGamepadIndexes.length = 0;
	}

	public function addSensitiveValue(__actionId:String, __value:Number, __gamepadIndex:int = -1):void {
		sensitiveValues[__actionId] = __value;
		sensitiveValuesGamepadIndexes[__actionId] = __gamepadIndex;
	}

	public function getValue(__gamepadIndex:int = -1):Number {
		iiv = NaN;
		for (iis in sensitiveValues) {
			// NOTE: this may be a problem if two different axis control the same action, since -1 is not necessarily better than +0.5
			if ((__gamepadIndex < 0 || sensitiveValuesGamepadIndexes[iis] == __gamepadIndex) && (isNaN(iiv) || Math.abs(sensitiveValues[iis]) > Math.abs(iiv))) iiv = sensitiveValues[iis];
		}
		if (isNaN(iiv)) return getNumActivations(0, __gamepadIndex) == 0 ? 0 : 1;
		return iiv;
	}
}
