diff --git a/Assets/DemoSceneScripts/PanelManager.cs b/Assets/DemoSceneScripts/PanelManager.cs index 915a4e9..7eec123 100644 --- a/Assets/DemoSceneScripts/PanelManager.cs +++ b/Assets/DemoSceneScripts/PanelManager.cs @@ -6,6 +6,9 @@ public class PanelManager : MonoBehaviour { void Start() { + + Debug.LogError("PanelManager.Start()"); + // IMPORTANT: depth is 1 on top higher numbers on the bottom. This means the lower the number is the closer it gets to the camera. var playButton = UIButton.create( "playUp.png", "playDown.png", 0, 0 ); diff --git a/Assets/DemoSceneScripts/TextManager.cs b/Assets/DemoSceneScripts/TextManager.cs index d08e7c0..43d92ac 100644 --- a/Assets/DemoSceneScripts/TextManager.cs +++ b/Assets/DemoSceneScripts/TextManager.cs @@ -68,7 +68,7 @@ void Start() textWrap2 = wrapText.addTextInstance( "This should be hyphenated. Check baseline - tytyt", 0, 0, 0.5f, 1, Color.green, UITextAlignMode.Center, UITextVerticalAlignMode.Bottom ); textWrap2.positionFromBottom( 0f ); - StartCoroutine( modifyTextInstances() ); + //StartCoroutine( modifyTextInstances() ); } diff --git a/Assets/DemoScenes/ExtendedTextTest.unity b/Assets/DemoScenes/ExtendedTextTest.unity index a2882f4..e09dbf7 100644 Binary files a/Assets/DemoScenes/ExtendedTextTest.unity and b/Assets/DemoScenes/ExtendedTextTest.unity differ diff --git a/Assets/Plugins/UIToolkit/BaseElements/ITouchable.cs b/Assets/Plugins/UIToolkit/BaseElements/ITouchable.cs index 1e3a404..533deac 100644 --- a/Assets/Plugins/UIToolkit/BaseElements/ITouchable.cs +++ b/Assets/Plugins/UIToolkit/BaseElements/ITouchable.cs @@ -17,12 +17,12 @@ public interface ITouchable bool hitTest( Vector2 point ); - void onTouchBegan( Touch touch, Vector2 touchPos ); + void onTouchBegan( UITouchWrapper touch, Vector2 touchPos ); - void onTouchMoved( Touch touch, Vector2 touchPos ); + void onTouchMoved( UITouchWrapper touch, Vector2 touchPos ); - void onTouchEnded( Touch touch, Vector2 touchPos, bool touchWasInsideTouchFrame ); + void onTouchEnded( UITouchWrapper touch, Vector2 touchPos, bool touchWasInsideTouchFrame ); } diff --git a/Assets/Plugins/UIToolkit/BaseElements/UIAbstractContainer.cs b/Assets/Plugins/UIToolkit/BaseElements/UIAbstractContainer.cs index 97f989b..bcd430f 100644 --- a/Assets/Plugins/UIToolkit/BaseElements/UIAbstractContainer.cs +++ b/Assets/Plugins/UIToolkit/BaseElements/UIAbstractContainer.cs @@ -105,7 +105,19 @@ public void removeChild( UISprite child, bool removeFromManager ) if( removeFromManager ) child.manager.removeElement( child ); } - + + /// + /// A way to remove a container and all it holds. + /// + public void destroy() + { + while(_children.Count > 0) + { + removeChild(_children[0], true); + } + + Object.Destroy(client); + } /// /// Call this when changing multiple properties at once that result in autolayout. Must be diff --git a/Assets/Plugins/UIToolkit/BaseElements/UIAbstractTouchableContainer.cs b/Assets/Plugins/UIToolkit/BaseElements/UIAbstractTouchableContainer.cs index 1a418ae..555f9ce 100644 --- a/Assets/Plugins/UIToolkit/BaseElements/UIAbstractTouchableContainer.cs +++ b/Assets/Plugins/UIToolkit/BaseElements/UIAbstractTouchableContainer.cs @@ -25,7 +25,7 @@ public abstract class UIAbstractTouchableContainer : UIAbstractContainer, ITouch // touch handling helpers protected float _deltaTouch; - protected Touch _lastTouch; + protected UITouchWrapper _lastTouch; protected Vector2 _lastTouchPosition; protected ITouchable _activeTouchable; @@ -392,8 +392,8 @@ public bool hitTest( Vector2 point ) } - // Touch handlers. Subclasses should override onTouchMoved - public virtual void onTouchBegan( Touch touch, Vector2 touchPos ) + // UITouchWrapper handlers. Subclasses should override onTouchMoved + public virtual void onTouchBegan( UITouchWrapper touch, Vector2 touchPos ) { // sanity check in case we lost a touch (happens with Unity on occassion) if( _activeTouchable != null ) @@ -412,13 +412,13 @@ public virtual void onTouchBegan( Touch touch, Vector2 touchPos ) } - public virtual void onTouchMoved( Touch touch, Vector2 touchPos ) + public virtual void onTouchMoved( UITouchWrapper touch, Vector2 touchPos ) { } - public virtual void onTouchEnded( Touch touch, Vector2 touchPos, bool touchWasInsideTouchFrame ) + public virtual void onTouchEnded( UITouchWrapper touch, Vector2 touchPos, bool touchWasInsideTouchFrame ) { _isDragging = false; diff --git a/Assets/Plugins/UIToolkit/BaseElements/UIControlTemplate.cs b/Assets/Plugins/UIToolkit/BaseElements/UIControlTemplate.cs index 220340f..5a3c933 100644 --- a/Assets/Plugins/UIToolkit/BaseElements/UIControlTemplate.cs +++ b/Assets/Plugins/UIToolkit/BaseElements/UIControlTemplate.cs @@ -66,20 +66,20 @@ public override bool highlighted } - // Touch handlers - public override void onTouchBegan( Touch touch, Vector2 touchPos ) + // UITouchWrapper handlers + public override void onTouchBegan( UITouchWrapper touch, Vector2 touchPos ) { highlighted = true; } -public virtual void onTouchMoved( Touch touch, Vector2 touchPos ) +public virtual void onTouchMoved( UITouchWrapper touch, Vector2 touchPos ) { highlighted = true; } - public override void onTouchEnded( Touch touch, Vector2 touchPos, bool touchWasInsideTouchFrame ) + public override void onTouchEnded( UITouchWrapper touch, Vector2 touchPos, bool touchWasInsideTouchFrame ) { highlighted = false; } diff --git a/Assets/Plugins/UIToolkit/BaseElements/UITouchableSprite.cs b/Assets/Plugins/UIToolkit/BaseElements/UITouchableSprite.cs index ea4982d..d6be898 100644 --- a/Assets/Plugins/UIToolkit/BaseElements/UITouchableSprite.cs +++ b/Assets/Plugins/UIToolkit/BaseElements/UITouchableSprite.cs @@ -213,20 +213,20 @@ public override void centerize() #region ITouchable - // Touch handlers. Subclasses should override these to get their specific behaviour - public virtual void onTouchBegan( Touch touch, Vector2 touchPos ) + // UITouchWrapper handlers. Subclasses should override these to get their specific behaviour + public virtual void onTouchBegan( UITouchWrapper touch, Vector2 touchPos ) { highlighted = true; } - public virtual void onTouchMoved( Touch touch, Vector2 touchPos ) + public virtual void onTouchMoved( UITouchWrapper touch, Vector2 touchPos ) { } - public virtual void onTouchEnded( Touch touch, Vector2 touchPos, bool touchWasInsideTouchFrame ) + public virtual void onTouchEnded( UITouchWrapper touch, Vector2 touchPos, bool touchWasInsideTouchFrame ) { highlighted = false; } diff --git a/Assets/Plugins/UIToolkit/Containers/UIScrollableHorizontalLayout.cs b/Assets/Plugins/UIToolkit/Containers/UIScrollableHorizontalLayout.cs index bda7608..0521a53 100644 --- a/Assets/Plugins/UIToolkit/Containers/UIScrollableHorizontalLayout.cs +++ b/Assets/Plugins/UIToolkit/Containers/UIScrollableHorizontalLayout.cs @@ -62,7 +62,7 @@ protected override void clipChild( UISprite child ) #region ITouchable - public override void onTouchMoved( Touch touch, Vector2 touchPos ) + public override void onTouchMoved( UITouchWrapper touch, Vector2 touchPos ) { // increment deltaTouch so we can pass on the touch if necessary _deltaTouch += touch.deltaPosition.x; diff --git a/Assets/Plugins/UIToolkit/Containers/UIScrollableVerticalLayout.cs b/Assets/Plugins/UIToolkit/Containers/UIScrollableVerticalLayout.cs index 89f1767..d8b4830 100644 --- a/Assets/Plugins/UIToolkit/Containers/UIScrollableVerticalLayout.cs +++ b/Assets/Plugins/UIToolkit/Containers/UIScrollableVerticalLayout.cs @@ -62,7 +62,7 @@ protected override void clipChild( UISprite child ) #region ITouchable - public override void onTouchMoved( Touch touch, Vector2 touchPos ) + public override void onTouchMoved( UITouchWrapper touch, Vector2 touchPos ) { // increment deltaTouch so we can pass on the touch if necessary _deltaTouch += touch.deltaPosition.y; diff --git a/Assets/Plugins/UIToolkit/Materials/UIToolkitMaterial.mat b/Assets/Plugins/UIToolkit/Materials/UIToolkitMaterial.mat index dd2a85d..1afcc6d 100644 Binary files a/Assets/Plugins/UIToolkit/Materials/UIToolkitMaterial.mat and b/Assets/Plugins/UIToolkit/Materials/UIToolkitMaterial.mat differ diff --git a/Assets/Plugins/UIToolkit/Structs/UITouchMaker.cs b/Assets/Plugins/UIToolkit/Structs/UITouchMaker.cs index b0516db..92b68b6 100644 --- a/Assets/Plugins/UIToolkit/Structs/UITouchMaker.cs +++ b/Assets/Plugins/UIToolkit/Structs/UITouchMaker.cs @@ -15,16 +15,16 @@ public enum UIMouseState /// -/// this class now exists only to allow standalones/web players to create Touch objects +/// this class now exists only to allow standalones/web players to create UITouchWrapper objects /// public struct UITouchMaker { - public static Touch createTouch( int finderId, int tapCount, Vector2 position, Vector2 deltaPos, float timeDelta, TouchPhase phase ) + public static UITouchWrapper createTouch( int finderId, int tapCount, Vector2 position, Vector2 deltaPos, float timeDelta, TouchPhase phase ) { - var self = new Touch(); - ValueType valueSelf = self; - var type = typeof( Touch ); - + var self = new UITouchWrapper(); + //ValueType valueSelf = self; + //var type = typeof( UITouchWrapper ); + /* type.GetField( "m_FingerId", BindingFlags.Instance | BindingFlags.NonPublic ).SetValue( valueSelf, finderId ); type.GetField( "m_TapCount", BindingFlags.Instance | BindingFlags.NonPublic ).SetValue( valueSelf, tapCount ); type.GetField( "m_Position", BindingFlags.Instance | BindingFlags.NonPublic ).SetValue( valueSelf, position ); @@ -32,41 +32,58 @@ public static Touch createTouch( int finderId, int tapCount, Vector2 position, V type.GetField( "m_TimeDelta", BindingFlags.Instance | BindingFlags.NonPublic ).SetValue( valueSelf, timeDelta ); type.GetField( "m_Phase", BindingFlags.Instance | BindingFlags.NonPublic ).SetValue( valueSelf, phase ); - return (Touch)valueSelf; + return (UITouchWrapper)valueSelf; + */ + + self.fingerId = finderId; + self.tapCount = tapCount; + self.position = position; + self.deltaPosition = deltaPos; + self.deltaTime = timeDelta; + self.phase = phase; + return self; } - public static Touch createTouchFromInput( UIMouseState mouseState, ref Vector2? lastMousePosition ) + public static UITouchWrapper createTouchFromInput( UIMouseState mouseState, ref Vector2? lastMousePosition ) { - var self = new Touch(); - ValueType valueSelf = self; - var type = typeof( Touch ); + //var self = new UITouchWrapper(); + //ValueType valueSelf = self; + //var type = typeof( UITouchWrapper ); + + var self = new UITouchWrapper(); var currentMousePosition = new Vector2( Input.mousePosition.x, Input.mousePosition.y ); + if(lastMousePosition.HasValue) // if we have a lastMousePosition use it to get a delta - if( lastMousePosition.HasValue ) - type.GetField( "m_PositionDelta", BindingFlags.Instance | BindingFlags.NonPublic ).SetValue( valueSelf, currentMousePosition - lastMousePosition ); + if( lastMousePosition.HasValue ) self.deltaPosition = currentMousePosition - (Vector2)lastMousePosition; + //type.GetField( "m_PositionDelta", BindingFlags.Instance | BindingFlags.NonPublic ).SetValue( valueSelf, currentMousePosition - lastMousePosition ); if( mouseState == UIMouseState.DownThisFrame ) // equivalent to touchBegan { - type.GetField( "m_Phase", BindingFlags.Instance | BindingFlags.NonPublic ).SetValue( valueSelf, TouchPhase.Began ); + //type.GetField( "m_Phase", BindingFlags.Instance | BindingFlags.NonPublic ).SetValue( valueSelf, TouchPhase.Began ); + self.phase = TouchPhase.Began; lastMousePosition = Input.mousePosition; } else if( mouseState == UIMouseState.UpThisFrame ) // equivalent to touchEnded { - type.GetField( "m_Phase", BindingFlags.Instance | BindingFlags.NonPublic ).SetValue( valueSelf, TouchPhase.Ended ); + //type.GetField( "m_Phase", BindingFlags.Instance | BindingFlags.NonPublic ).SetValue( valueSelf, TouchPhase.Ended ); + self.phase = TouchPhase.Ended; lastMousePosition = null; } else // UIMouseState.HeldDown - equivalent to touchMoved/Stationary { - type.GetField( "m_Phase", BindingFlags.Instance | BindingFlags.NonPublic ).SetValue( valueSelf, TouchPhase.Moved ); + //type.GetField( "m_Phase", BindingFlags.Instance | BindingFlags.NonPublic ).SetValue( valueSelf, TouchPhase.Moved ); + self.phase = TouchPhase.Moved; lastMousePosition = Input.mousePosition; } - type.GetField( "m_Position", BindingFlags.Instance | BindingFlags.NonPublic ).SetValue( valueSelf, currentMousePosition ); + //type.GetField( "m_Position", BindingFlags.Instance | BindingFlags.NonPublic ).SetValue( valueSelf, currentMousePosition ); + self.position = currentMousePosition; - return (Touch)valueSelf; + return self; + //return (UITouchWrapper)valueSelf; } } #endif \ No newline at end of file diff --git a/Assets/Plugins/UIToolkit/Structs/UITouchWrapper.cs b/Assets/Plugins/UIToolkit/Structs/UITouchWrapper.cs new file mode 100644 index 0000000..ba7fcf7 --- /dev/null +++ b/Assets/Plugins/UIToolkit/Structs/UITouchWrapper.cs @@ -0,0 +1,104 @@ +using System; +using UnityEngine; + +public class UITouchWrapper +{ + + private int m_FingerId = 0; + private Vector2 m_Position = new Vector2(); + private Vector2 m_PositionDelta = new Vector2(); + private float m_TimeDelta = 0f; + private int m_TapCount = 0; + private TouchPhase m_Phase = TouchPhase.Stationary; + + private bool m_Locked = false; + + public UITouchWrapper() + { + } + + + public bool locked + { + get + { + return m_Locked; + } + + set + { + if(value == true) m_Locked = true; + } + } + + public int fingerId + { + get + { + return this.m_FingerId; + } + set + { + if(!locked) this.m_FingerId = value; + } + } + + public Vector2 position + { + get + { + return this.m_Position; + } + set + { + if(!locked) this.m_Position = value; + } + } + public Vector2 deltaPosition + { + get + { + return this.m_PositionDelta; + } + set + { + if(!locked) this.m_PositionDelta = value; + } + } + + public float deltaTime + { + get + { + return this.m_TimeDelta; + } + set + { + if(!locked) this.m_TimeDelta = value; + } + } + public int tapCount + { + get + { + return this.m_TapCount; + } + set + { + if(!locked) this.m_TapCount = value; + } + } + public TouchPhase phase + { + get + { + return this.m_Phase; + } + set + { + if(!locked) this.m_Phase = value; + } + } + +} + diff --git a/Assets/Plugins/UIToolkit/Structs/UITouchWrapper.cs.meta b/Assets/Plugins/UIToolkit/Structs/UITouchWrapper.cs.meta new file mode 100644 index 0000000..454f0a0 --- /dev/null +++ b/Assets/Plugins/UIToolkit/Structs/UITouchWrapper.cs.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: ce2281f7173bf46bfb43ef84feb3fb9f +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} diff --git a/Assets/Plugins/UIToolkit/UIElements/TouchInfo.cs b/Assets/Plugins/UIToolkit/UIElements/TouchInfo.cs index 182e3d2..cb1306f 100644 --- a/Assets/Plugins/UIToolkit/UIElements/TouchInfo.cs +++ b/Assets/Plugins/UIToolkit/UIElements/TouchInfo.cs @@ -43,7 +43,7 @@ public TouchInfo( SwipeDirection swipesToDetect ) } - public void resetWithTouch( Touch touch ) + public void resetWithTouch( UITouchWrapper touch ) { // Initialize the detectionState only with the swipe types we want to listen for swipeDetectionState = swipesToDetect; diff --git a/Assets/Plugins/UIToolkit/UIElements/UIButton.cs b/Assets/Plugins/UIToolkit/UIElements/UIButton.cs index ff4193c..8b324e0 100644 --- a/Assets/Plugins/UIToolkit/UIElements/UIButton.cs +++ b/Assets/Plugins/UIToolkit/UIElements/UIButton.cs @@ -85,8 +85,8 @@ public override bool highlighted } - // Touch handlers - public override void onTouchBegan( Touch touch, Vector2 touchPos ) + // UITouchWrapper handlers + public override void onTouchBegan( UITouchWrapper touch, Vector2 touchPos ) { highlighted = true; @@ -101,7 +101,7 @@ public override void onTouchBegan( Touch touch, Vector2 touchPos ) - public override void onTouchEnded( Touch touch, Vector2 touchPos, bool touchWasInsideTouchFrame ) + public override void onTouchEnded( UITouchWrapper touch, Vector2 touchPos, bool touchWasInsideTouchFrame ) { // If someone has un-highlighted us through code we are deactivated // and should not fire the event diff --git a/Assets/Plugins/UIToolkit/UIElements/UIColorPicker.cs b/Assets/Plugins/UIToolkit/UIElements/UIColorPicker.cs index cf946d4..25395e8 100644 --- a/Assets/Plugins/UIToolkit/UIElements/UIColorPicker.cs +++ b/Assets/Plugins/UIToolkit/UIElements/UIColorPicker.cs @@ -53,8 +53,8 @@ public Color colorPicked } - // Touch handlers - public override void onTouchBegan( Touch touch, Vector2 touchPos ) + // UITouchWrapper handlers + public override void onTouchBegan( UITouchWrapper touch, Vector2 touchPos ) { highlighted = true; @@ -67,7 +67,7 @@ public override void onTouchBegan( Touch touch, Vector2 touchPos ) } - public override void onTouchMoved( Touch touch, Vector2 touchPos ) + public override void onTouchMoved( UITouchWrapper touch, Vector2 touchPos ) { Color oldColor = colorPicked; Vector2 textureCoord = getTouchTextureCoords(touchPos); diff --git a/Assets/Plugins/UIToolkit/UIElements/UIContinuousButton.cs b/Assets/Plugins/UIToolkit/UIElements/UIContinuousButton.cs index ed07d36..24d6eed 100644 --- a/Assets/Plugins/UIToolkit/UIElements/UIContinuousButton.cs +++ b/Assets/Plugins/UIToolkit/UIElements/UIContinuousButton.cs @@ -43,8 +43,8 @@ public UIContinuousButton( UIToolkit manager, Rect frame, int depth, UIUVRect uv } - // Touch handlers - public override void onTouchBegan( Touch touch, Vector2 touchPos ) + // UITouchWrapper handlers + public override void onTouchBegan( UITouchWrapper touch, Vector2 touchPos ) { base.onTouchBegan( touch, touchPos ); @@ -53,7 +53,7 @@ public override void onTouchBegan( Touch touch, Vector2 touchPos ) } - public override void onTouchMoved( Touch touch, Vector2 touchPos ) + public override void onTouchMoved( UITouchWrapper touch, Vector2 touchPos ) { // dont fire this continously if we were asked to only fire start and end if( !onlyFireStartAndEndEvents && onTouchIsDown != null ) @@ -61,7 +61,7 @@ public override void onTouchMoved( Touch touch, Vector2 touchPos ) } - public override void onTouchEnded( Touch touch, Vector2 touchPos, bool touchWasInsideTouchFrame ) + public override void onTouchEnded( UITouchWrapper touch, Vector2 touchPos, bool touchWasInsideTouchFrame ) { base.onTouchEnded( touch, touchPos, touchWasInsideTouchFrame ); diff --git a/Assets/Plugins/UIToolkit/UIElements/UIGhostJoystick.cs b/Assets/Plugins/UIToolkit/UIElements/UIGhostJoystick.cs index dfe9307..374be1e 100644 --- a/Assets/Plugins/UIToolkit/UIElements/UIGhostJoystick.cs +++ b/Assets/Plugins/UIToolkit/UIElements/UIGhostJoystick.cs @@ -163,7 +163,7 @@ private void layoutJoystick( Vector2 localTouchPosition ) } - public override void onTouchBegan( Touch touch, Vector2 touchPos ) + public override void onTouchBegan( UITouchWrapper touch, Vector2 touchPos ) { if (currentTouchId != -1) return; @@ -185,7 +185,7 @@ public override void onTouchBegan( Touch touch, Vector2 touchPos ) } - public override void onTouchMoved( Touch touch, Vector2 touchPos ) + public override void onTouchMoved( UITouchWrapper touch, Vector2 touchPos ) { if (touch.fingerId != currentTouchId) return; @@ -196,7 +196,7 @@ public override void onTouchMoved( Touch touch, Vector2 touchPos ) } - public override void onTouchEnded( Touch touch, Vector2 touchPos, bool touchWasInsideTouchFrame ) + public override void onTouchEnded( UITouchWrapper touch, Vector2 touchPos, bool touchWasInsideTouchFrame ) { if (touch.fingerId != currentTouchId) return; diff --git a/Assets/Plugins/UIToolkit/UIElements/UIJoystick.cs b/Assets/Plugins/UIToolkit/UIElements/UIJoystick.cs index 634b0ac..41f31b0 100644 --- a/Assets/Plugins/UIToolkit/UIElements/UIJoystick.cs +++ b/Assets/Plugins/UIToolkit/UIElements/UIJoystick.cs @@ -185,7 +185,7 @@ private void layoutJoystick( Vector2 localTouchPosition ) } - public override void onTouchBegan( Touch touch, Vector2 touchPos ) + public override void onTouchBegan( UITouchWrapper touch, Vector2 touchPos ) { highlighted = true; @@ -197,13 +197,13 @@ public override void onTouchBegan( Touch touch, Vector2 touchPos ) } - public override void onTouchMoved( Touch touch, Vector2 touchPos ) + public override void onTouchMoved( UITouchWrapper touch, Vector2 touchPos ) { this.layoutJoystick( this.inverseTranformPoint( touchPos ) ); } - public override void onTouchEnded( Touch touch, Vector2 touchPos, bool touchWasInsideTouchFrame ) + public override void onTouchEnded( UITouchWrapper touch, Vector2 touchPos, bool touchWasInsideTouchFrame ) { // Set highlighted to avoid calling super highlighted = false; diff --git a/Assets/Plugins/UIToolkit/UIElements/UIKnob.cs b/Assets/Plugins/UIToolkit/UIElements/UIKnob.cs index d67627b..3188e73 100644 --- a/Assets/Plugins/UIToolkit/UIElements/UIKnob.cs +++ b/Assets/Plugins/UIToolkit/UIElements/UIKnob.cs @@ -125,9 +125,9 @@ private void updateKnobForTouchPosition( Vector2 touchPos ) } - #region Touch Handlers + #region UITouchWrapper Handlers - public override void onTouchBegan( Touch touch, Vector2 touchPos ) + public override void onTouchBegan( UITouchWrapper touch, Vector2 touchPos ) { highlighted = true; @@ -135,13 +135,13 @@ public override void onTouchBegan( Touch touch, Vector2 touchPos ) } - public override void onTouchMoved( Touch touch, Vector2 touchPos ) + public override void onTouchMoved( UITouchWrapper touch, Vector2 touchPos ) { this.updateKnobForTouchPosition( touchPos ); } - public override void onTouchEnded( Touch touch, Vector2 touchPos, bool touchWasInsideTouchFrame ) + public override void onTouchEnded( UITouchWrapper touch, Vector2 touchPos, bool touchWasInsideTouchFrame ) { highlighted = false; diff --git a/Assets/Plugins/UIToolkit/UIElements/UISlider.cs b/Assets/Plugins/UIToolkit/UIElements/UISlider.cs index 0fabac8..81c4d7e 100644 --- a/Assets/Plugins/UIToolkit/UIElements/UISlider.cs +++ b/Assets/Plugins/UIToolkit/UIElements/UISlider.cs @@ -185,8 +185,8 @@ private void updateSliderKnobForTouchPosition( Vector2 touchPos ) } - // Touch handlers - public override void onTouchBegan( Touch touch, Vector2 touchPos ) + // UITouchWrapper handlers + public override void onTouchBegan( UITouchWrapper touch, Vector2 touchPos ) { highlighted = true; @@ -194,13 +194,13 @@ public override void onTouchBegan( Touch touch, Vector2 touchPos ) } - public override void onTouchMoved( Touch touch, Vector2 touchPos ) + public override void onTouchMoved( UITouchWrapper touch, Vector2 touchPos ) { this.updateSliderKnobForTouchPosition( touchPos ); } - public override void onTouchEnded( Touch touch, Vector2 touchPos, bool touchWasInsideTouchFrame ) + public override void onTouchEnded( UITouchWrapper touch, Vector2 touchPos, bool touchWasInsideTouchFrame ) { if( touchCount == 0 ) highlighted = false; diff --git a/Assets/Plugins/UIToolkit/UIElements/UIStateButton.cs b/Assets/Plugins/UIToolkit/UIElements/UIStateButton.cs index d21a2a7..98d4669 100755 --- a/Assets/Plugins/UIToolkit/UIElements/UIStateButton.cs +++ b/Assets/Plugins/UIToolkit/UIElements/UIStateButton.cs @@ -146,7 +146,7 @@ public void addFrames( UIUVRect[] normal, UIUVRect[] highlighted ) } - public override void onTouchEnded( Touch touch, Vector2 touchPos, bool touchWasInsideTouchFrame ) + public override void onTouchEnded( UITouchWrapper touch, Vector2 touchPos, bool touchWasInsideTouchFrame ) { if( touchWasInsideTouchFrame ) { diff --git a/Assets/Plugins/UIToolkit/UIElements/UISwipeDetector.cs b/Assets/Plugins/UIToolkit/UIElements/UISwipeDetector.cs index b4e4518..267e271 100644 --- a/Assets/Plugins/UIToolkit/UIElements/UISwipeDetector.cs +++ b/Assets/Plugins/UIToolkit/UIElements/UISwipeDetector.cs @@ -61,7 +61,7 @@ public UISwipeDetector( Rect frame, int depth, UIUVRect uvFrame ):base( frame, d } - public override void onTouchBegan( Touch touch, Vector2 touchPos ) + public override void onTouchBegan( UITouchWrapper touch, Vector2 touchPos ) { if( touchInfoArray[touch.fingerId] == null ) touchInfoArray[touch.fingerId] = new TouchInfo( swipesToDetect ); @@ -71,7 +71,7 @@ public override void onTouchBegan( Touch touch, Vector2 touchPos ) } - public override void onTouchMoved( Touch touch, Vector2 touchPos ) + public override void onTouchMoved( UITouchWrapper touch, Vector2 touchPos ) { if( processTouchInfoWithTouch( touchInfoArray[touch.fingerId], touch ) ) { @@ -84,7 +84,7 @@ public override void onTouchMoved( Touch touch, Vector2 touchPos ) /* Only used for debugging - public override void onTouchEnded( Touch touch, Vector2 touchPos, bool touchWasInsideTouchFrame ) + public override void onTouchEnded( UITouchWrapper touch, Vector2 touchPos, bool touchWasInsideTouchFrame ) { //Debug.Log( "TOUCH ENDED" ); //Debug.Log( string.Format( "x: {0}, y: {1}", touch.position.x, touch.position.y ) ); @@ -92,7 +92,7 @@ public override void onTouchEnded( Touch touch, Vector2 touchPos, bool touchWasI */ - private bool processTouchInfoWithTouch( TouchInfo touchInfo, Touch touch ) + private bool processTouchInfoWithTouch( TouchInfo touchInfo, UITouchWrapper touch ) { // If we already completed the swipe detection or if none are availalbe get out of here if( touchInfo.swipeDetectionStatus != SwipeDetectionStatus.Waiting ) diff --git a/Assets/Plugins/UIToolkit/UIElements/UIToggleButton.cs b/Assets/Plugins/UIToolkit/UIElements/UIToggleButton.cs index d68d178..d6d6588 100644 --- a/Assets/Plugins/UIToolkit/UIElements/UIToggleButton.cs +++ b/Assets/Plugins/UIToolkit/UIElements/UIToggleButton.cs @@ -126,8 +126,8 @@ public bool selected } - // Touch handlers - public override void onTouchEnded( Touch touch, Vector2 touchPos, bool touchWasInsideTouchFrame ) + // UITouchWrapper handlers + public override void onTouchEnded( UITouchWrapper touch, Vector2 touchPos, bool touchWasInsideTouchFrame ) { highlighted = false; diff --git a/Assets/Plugins/UIToolkit/UIElements/UIZoomButton.cs b/Assets/Plugins/UIToolkit/UIElements/UIZoomButton.cs index 95e6a5a..7b8c69f 100644 --- a/Assets/Plugins/UIToolkit/UIElements/UIZoomButton.cs +++ b/Assets/Plugins/UIToolkit/UIElements/UIZoomButton.cs @@ -68,8 +68,8 @@ public UIZoomButton( UIToolkit manager, Rect frame, int depth, UIUVRect uvFrame, - // Touch handlers - public override void onTouchBegan( Touch touch, Vector2 touchPos ) + // UITouchWrapper handlers + public override void onTouchBegan( UITouchWrapper touch, Vector2 touchPos ) { base.onTouchBegan( touch, touchPos ); @@ -79,7 +79,7 @@ public override void onTouchBegan( Touch touch, Vector2 touchPos ) - public override void onTouchEnded( Touch touch, Vector2 touchPos, bool touchWasInsideTouchFrame ) + public override void onTouchEnded( UITouchWrapper touch, Vector2 touchPos, bool touchWasInsideTouchFrame ) { base.onTouchEnded( touch, touchPos, touchWasInsideTouchFrame ); diff --git a/Assets/Plugins/UIToolkit/UIToolkit.cs b/Assets/Plugins/UIToolkit/UIToolkit.cs index baa01c1..fac7e64 100644 --- a/Assets/Plugins/UIToolkit/UIToolkit.cs +++ b/Assets/Plugins/UIToolkit/UIToolkit.cs @@ -54,7 +54,7 @@ protected void Update() // Examine all current touches for( int i = 0; i < Input.touchCount; i++ ) { - lookAtTouch( Input.GetTouch( i ) ); + lookAtTouch( wrapTouchInput(Input.GetTouch( i )) ); } } // end if Input.touchCount #if UNITY_EDITOR || UNITY_STANDALONE_OSX || UNITY_STANDALONE_WIN || UNITY_WEBPLAYER @@ -97,7 +97,20 @@ protected void Update() #endif } - + + protected UITouchWrapper wrapTouchInput(Touch input) + { + var newTouch = new UITouchWrapper(); + newTouch.deltaTime = input.deltaTime; + newTouch.deltaPosition = input.deltaPosition; + newTouch.position = input.position; + newTouch.phase = input.phase; + newTouch.fingerId = input.fingerId; + newTouch.tapCount = input.tapCount; + newTouch.locked = true; + return newTouch; + } + protected void LateUpdate() { // take care of updating our UVs, colors or bounds if necessary @@ -217,10 +230,10 @@ public void addToTouchables( ITouchable touchable ) #endregion - #region Touch management and analysis helpers + #region UITouchWrapper management and analysis helpers // examines a touch and sends off began, moved and ended events - private void lookAtTouch( Touch touch ) + private void lookAtTouch( UITouchWrapper touch ) { // tranform the touch position so the origin is in the top left var fixedTouchPosition = new Vector2( touch.position.x, Screen.height - touch.position.y );