コード例 #1
0
ファイル: VirtualAnalog.cs プロジェクト: ArtReeX/memoria
 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;
 }
コード例 #2
0
ファイル: VirtualAnalog.cs プロジェクト: ArtReeX/memoria
 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);
     }
 }