private void RunMechanic() { if (!this.IsActive) { this.curTouch.fingerId = -1; this.hasMoved = false; return; } this.IsShown = this.hasMoved; this.GenerateTouches(); for (Int32 i = 0; i < this.touches.Count; i++) { VirtualAnalog.TouchWritable touchWritable = this.touches[i]; if (touchWritable.phase == TouchPhase.Began && !this.hasMoved) { this.curTouch = touchWritable; this.centerPos = this.curTouch.position; } if (touchWritable.fingerId == this.curTouch.fingerId) { this.curTouch = touchWritable; } } if (this.touches.Count == 0 || this.curTouch.phase == TouchPhase.Ended || this.curTouch.phase == TouchPhase.Canceled) { this.centerPos = this.position; return; } if (this.curTouch.phase == TouchPhase.Moved || this.curTouch.phase == TouchPhase.Stationary) { this.centerPos = this.curTouch.position; Vector2 vector = this.centerPos - this.position; Single num = this.maxRadius * this.maxRadius; if (vector.sqrMagnitude >= num) { vector.Normalize(); vector *= this.maxRadius; this.centerPos = this.position + vector; } } if (!this.hasMoved) { Vector2 vector2 = this.centerPos - this.position; Single num2 = this.deadZoneRadius * this.deadZoneRadius; if (vector2.sqrMagnitude >= num2) { this.hasMoved = true; } } this.Center.transform.localPosition = this.centerPos; }
private void GenerateTouches() { this.touches.Clear(); if (Application.platform != RuntimePlatform.Android && Application.platform != RuntimePlatform.IPhonePlayer) { if (Input.GetMouseButtonDown(0)) { this.hasMouseInput = true; VirtualAnalog.TouchWritable touchWritable = new VirtualAnalog.TouchWritable(); touchWritable.position = this.ConvertPosition(Input.mousePosition); touchWritable.phase = TouchPhase.Began; touchWritable.fingerId = -999; this.touches.Add(touchWritable); } else if (Input.GetMouseButtonUp(0)) { this.hasMouseInput = false; VirtualAnalog.TouchWritable touchWritable2 = new VirtualAnalog.TouchWritable(); touchWritable2.position = this.ConvertPosition(Input.mousePosition); touchWritable2.phase = TouchPhase.Ended; touchWritable2.fingerId = -999; this.touches.Add(touchWritable2); } else if (this.hasMouseInput) { VirtualAnalog.TouchWritable touchWritable3 = new VirtualAnalog.TouchWritable(); touchWritable3.position = this.ConvertPosition(Input.mousePosition); touchWritable3.phase = TouchPhase.Moved; touchWritable3.fingerId = -999; this.touches.Add(touchWritable3); } } for (Int32 i = 0; i < Input.touchCount; i++) { VirtualAnalog.TouchWritable touchWritable4 = new VirtualAnalog.TouchWritable(); touchWritable4.CopyFrom(Input.GetTouch(i)); touchWritable4.position = this.ConvertPosition(touchWritable4.position); this.touches.Add(touchWritable4); } }