Multitouch for Windows Phone
Monkey Targets Forums/XNA/Multitouch for Windows Phone
| ||
I've managed to implement multitouch for Windows Phone. You need to do the following: In program.cs (targets\xna\MonkeyGame\MonkeyGame) add the following: using Microsoft.Xna.Framework.Input.Touch; You will also need to add a reference to Microsoft.Xna.Framework.Input.Touch In mojo.xna.cs (modules\mojo\native) add the following: Line 841: public TouchCollection touchState; Line 851: public int[] touches=new int[32]; public float[] touchX=new float[32]; public float[] touchY=new float[32]; Line 965: //Update touch touchState = TouchPanel.GetState(); for (int i = 0; i < 32; ++i) { touches[i] = -1; touchX[i] = (i == 0 ? mouseState.X : 0); touchY[i] = (i == 0 ? mouseState.Y : 0); keyStates[KEY_TOUCH0 + i] = 0; if (i <= touchState.Count - 1) { TouchLocation tl = touchState[i]; if ((tl.State == TouchLocationState.Pressed) || (tl.State == TouchLocationState.Moved)) { touches[i] = tl.Id; touchX[i] = tl.Position.X; touchY[i] = tl.Position.Y; keyStates[KEY_TOUCH0 + i] = 0x101; } } } Line 1118(Replace the following): public virtual float TouchX( int index ){ return touchX[index]; //return mouseState.X; } public virtual float TouchY( int index ){ return touchY[index]; //return mouseState.Y; } At this stage the touches array probably isn't used - was trying to code what I thought based on some other modules. Also probably missed something somewhere! You can test it out with the following (edited TouchDown function example from the on-line help): Import mojo Class MyApp Extends App Field touching Method OnCreate() SetUpdateRate 30 End Method OnUpdate() touching=0 For Local i=0 Until 32 If TouchDown( i ) touching+=1 Next End Method OnRender() Cls DrawText touching,0,0 For Local i=0 Until 32 If (TouchDown(i)) Then DrawCircle(TouchX(i),TouchY(i),30) EndIf Next End End Function Main() New MyApp End |