Example #1
0
 public Guide(ZoomCircle zoomCircle)
 {
     this.ParentZoomCircle = zoomCircle;
     this.IsUpsideDown = false;
     this.CurrentState = GuideState.CLOSED;
     this.selectedInfoPanel = 0;
 }
 // Check each ZoomedCircle to see if cursor pressed a button
 /// <summary>
 /// Check all ZoomCircles to see if cursor pressed a button
 /// </summary>
 /// <param name="tcur">The cursor to check against all ZoomCircles and their buttons</param>
 /// <returns>Returns a tuple consisting of a ZoomCircle, and a text description of which button on that ZoomCircle the cursor would press. Otherwise, null and emptry string.</returns>
 public void WouldPushButton(TuioPoint tPoint, out ZoomCircle outZoomCircle, out string outButtonName)
 {
     // Check each ZoomedCircle to see if cursor pressed a button
     Vector2 cursorPosition = new Vector2(tPoint.getScreenX(Settings.RESOLUTION_X), tPoint.getScreenY(Settings.RESOLUTION_Y));
     foreach (ZoomCircle zoomedCircle in zoomedCircles.Values)
     {
         Vector2 openButtonPosition, closeButtonPosition, tab1, tab2, tab3, tab4;
         if (zoomedCircle.AttachedGuide.IsLeftward)
         {
             openButtonPosition = Settings.CALLOUT_OPEN_BUTTON_LEFT;
             closeButtonPosition = Settings.CALLOUT_CLOSE_BUTTON_LEFT;
             if (zoomedCircle.AttachedGuide.IsUpsideDown)
             {
                 tab1 = -Settings.CALLOUT_TAB1_BUTTON;
                 tab2 = -Settings.CALLOUT_TAB2_BUTTON;
                 tab3 = -Settings.CALLOUT_TAB3_BUTTON;
                 tab4 = -Settings.CALLOUT_TAB4_BUTTON;
             }
             else
             {
                 tab1 = Settings.CALLOUT_TAB1_BUTTON_LEFT;
                 tab2 = Settings.CALLOUT_TAB2_BUTTON_LEFT;
                 tab3 = Settings.CALLOUT_TAB3_BUTTON_LEFT;
                 tab4 = Settings.CALLOUT_TAB4_BUTTON_LEFT;
             }
         }
         else
         {
             openButtonPosition = Settings.CALLOUT_OPEN_BUTTON;
             closeButtonPosition = Settings.CALLOUT_CLOSE_BUTTON;
             if (zoomedCircle.AttachedGuide.IsUpsideDown)
             {
                 tab1 = -Settings.CALLOUT_TAB1_BUTTON_LEFT;
                 tab2 = -Settings.CALLOUT_TAB2_BUTTON_LEFT;
                 tab3 = -Settings.CALLOUT_TAB3_BUTTON_LEFT;
                 tab4 = -Settings.CALLOUT_TAB4_BUTTON_LEFT;
             }
             else
             {
                 tab1 = Settings.CALLOUT_TAB1_BUTTON;
                 tab2 = Settings.CALLOUT_TAB2_BUTTON;
                 tab3 = Settings.CALLOUT_TAB3_BUTTON;
                 tab4 = Settings.CALLOUT_TAB4_BUTTON;
             }
         }
         if (zoomedCircle.AttachedGuide.CurrentState == Guide.GuideState.CLOSED)
         {
             Vector2 differenceVector = cursorPosition - zoomedCircle.position - openButtonPosition;
             // If within a certain radius, trigger callout opening for the matched circle
             if ((int)differenceVector.Length() <= Settings.CALLOUT_DETECTION_RADIUS)
             {
                 outZoomCircle = zoomedCircle;
                 outButtonName = "open";
                 return;
             }
             //Debug.WriteLine(differenceVector.Length());
         }
         else if (zoomedCircle.AttachedGuide.CurrentState == Guide.GuideState.OPEN)
         {
             Vector2 differenceVector = cursorPosition - zoomedCircle.position - closeButtonPosition;
             if ((int)differenceVector.Length() <= Settings.CALLOUT_DETECTION_RADIUS)
             {
                 outZoomCircle = zoomedCircle;
                 outButtonName = "close";
                 return;
             }
             differenceVector = cursorPosition - zoomedCircle.position - tab1;
             if ((Math.Abs(differenceVector.X) <= (Settings.CALLOUT_TAB_WIDTH / 2)) && (Math.Abs(differenceVector.Y) <= (Settings.CALLOUT_TAB_HEIGHT / 2)))
             {
                 outZoomCircle = zoomedCircle;
                 outButtonName = "tab1";
                 return;
             }
             differenceVector = cursorPosition - zoomedCircle.position - tab2;
             if ((Math.Abs(differenceVector.X) <= (Settings.CALLOUT_TAB_WIDTH / 2)) && (Math.Abs(differenceVector.Y) <= (Settings.CALLOUT_TAB_HEIGHT / 2)))
             {
                 outZoomCircle = zoomedCircle;
                 outButtonName = "tab2";
                 return;
             }
             differenceVector = cursorPosition - zoomedCircle.position - tab3;
             if ((Math.Abs(differenceVector.X) <= (Settings.CALLOUT_TAB_WIDTH / 2)) && (Math.Abs(differenceVector.Y) <= (Settings.CALLOUT_TAB_HEIGHT / 2)))
             {
                 outZoomCircle = zoomedCircle;
                 outButtonName = "tab3";
                 return;
             }
             differenceVector = cursorPosition - zoomedCircle.position - tab4;
             if ((Math.Abs(differenceVector.X) <= (Settings.CALLOUT_TAB_WIDTH / 2)) && (Math.Abs(differenceVector.Y) <= (Settings.CALLOUT_TAB_HEIGHT / 2)))
             {
                 outZoomCircle = zoomedCircle;
                 outButtonName = "tab4";
                 return;
             }
         }
     }
     outZoomCircle = null;
     outButtonName = "";
 }
 public ZoomCircle addZoomedCircle(int mouseX, int mouseY, long id, float angle = 0f)
 {
     ZoomCircle zoomedCircle = new ZoomCircle(gameTime, id);
     zoomedCircle.OpenAt(mouseX, mouseY, angle, this.GetMovieTimestamp(), this.GetMovieTimestampRaw());
     zoomedCircle.UpdateTextures();
     zoomedCircles.AddOrUpdate(id, zoomedCircle, (k, v) => v);
     return zoomedCircle;
 }