Переглянути джерело

Add prevValues to hxd.Pad

Leonardo Jeanteur 1 рік тому
батько
коміт
782b2a1a8d
1 змінених файлів з 18 додано та 4 видалено
  1. 18 4
      hxd/Pad.hx

+ 18 - 4
hxd/Pad.hx

@@ -228,6 +228,7 @@ class Pad {
 	public var axisDeadZone : Float = 0.1;
 	public var buttons : Array<Bool> = [];
 	public var values : Array<Float> = [];
+	public var prevValues : Array<Float> = [];
 	var prevButtons : Array<Bool> = [];
 	var rawXAxis : Float = 0.;
 	var rawYAxis : Float = 0.;
@@ -275,6 +276,7 @@ class Pad {
 		for( i in 0...buttons.length ) buttons[i] = false;
 		for( i in 0...buttons.length ) prevButtons[i] = false;
 		for( i in 0...values.length ) values[i] = 0;
+		for( i in 0...values.length ) prevValues[i] = 0;
 	}
 
 	public function rumble( strength : Float, time_s : Float ){
@@ -420,9 +422,12 @@ class Pad {
 					}
 			});
 			flash.Lib.current.addEventListener(flash.events.Event.EXIT_FRAME, function(_){
-				for( p in pads )
+				for( p in pads ) {
 					for( i in 0...p.buttons.length )
 						p.prevButtons[i] = p.buttons[i];
+					for( i in 0...p.values.length )
+						p.prevValues[i] = p.values[i];
+				}
 			});
 			var count = flash.ui.GameInput.numDevices; // necessary to trigger added
 		}
@@ -553,9 +558,12 @@ class Pad {
 	}
 
 	static function syncPads(){
-		for( p in pads )
+		for( p in pads ) {
 			for( i in 0...p.buttons.length )
 				p.prevButtons[i] = p.buttons[i];
+			for( i in 0...p.values.length )
+				p.prevValues[i] = p.values[i];
+		}
 	}
 
 	#elseif (hldx || usesys)
@@ -567,6 +575,7 @@ class Pad {
 			var k = p.d.getButtons();
 			for( i in 0...GameController.NUM_BUTTONS ){
 				p.prevButtons[i] = p.buttons[i];
+				p.prevValues[i] = p.values[i];
 				p._setButton(i, k & (1 << i) != 0);
 			}
 
@@ -575,6 +584,7 @@ class Pad {
 				var v = p.d.getAxis(i);
 				p.prevButtons[ii] = p.buttons[ii];
 				p._detectAnalogButton(ii, v);
+				p.prevValues[ii] = p.values[ii];
 				p.values[ii] = v;
 				if( ii == GameController.CONFIG.analogX )
 					p.rawXAxis = v;
@@ -623,13 +633,17 @@ class Pad {
 			for( i in 0...p.d.buttons.length ) {
 				p.prevButtons[i] = p.buttons[i];
 				p.buttons[i] = p.d.buttons[i].pressed;
+				p.prevValues[i] = p.values[i];
 				p.values[i] = p.d.buttons[i].value;
 			}
 			for( i in 0...p.d.axes.length >> 1 ) {
 				var x = p.d.axes[i << 1];
 				var y = p.d.axes[(i << 1) + 1]; // y neg !;
-				p.values[(i << 1) + p.d.buttons.length] = x;
-				p.values[(i << 1) + p.d.buttons.length + 1] = -y;
+				var ii = (i << 1) + p.d.buttons.length;
+				p.prevValues[ii] = p.values[ii];
+				p.prevValues[ii + 1] = p.values[ii + 1];
+				p.values[ii] = x;
+				p.values[ii + 1] = -y;
 				if( i == 0 ) {
 					p.rawXAxis = x;
 					p.rawYAxis = y;