Example #1
0
        public void Invoke(Manipulator manip)
        {
            foreach (Instruction instr in Instrs)
            {
                if (instr.Operand is Instruction target)
                {
                    instr.Operand = new ILLabel(this, target);
                }
                else if (instr.Operand is Instruction[] targets)
                {
                    instr.Operand = targets.Select(t => new ILLabel(this, t)).ToArray();
                }
            }

            manip(this);

            foreach (Instruction instr in Instrs)
            {
                if (instr.Operand is ILLabel label)
                {
                    instr.Operand = label.Target;
                }
                else if (instr.Operand is ILLabel[] targets)
                {
                    instr.Operand = targets.Select(l => l.Target).ToArray();
                }
            }

            Method.ConvertShortLongOps();
        }
        public PageCompletionViewModel()
        {
            try
            {
                var Image = Manipulator.GetResourceImage("Image", "CompletionBanner");
                if (Image != null)
                {
                    completionImage = Image;
                }

                var HeadlineText = Manipulator.GetResourceString("Text", "Page5_Headline");
                if (HeadlineText != null)
                {
                    headline = HeadlineText;
                }

                var Text = Manipulator.GetResourceString("Text", "Page5_Text");
                if (Text != null)
                {
                    text = Text;
                }
            }
            catch { }

            this.PropertyChanged += Page5ViewModel_PropertyChanged;
        }
 private string AddImagePartFromFile(string absoluteImageFilePath)
 {
     using (var stream = new FileStream(absoluteImageFilePath, FileMode.Open, FileAccess.Read, FileShare.Read))
     {
         return(Manipulator.AddImagePart(stream));
     }
 }
Example #4
0
        public PageTargetDirectoryViewModel()
        {
            try
            {
                var Image = Manipulator.GetResourceImage("Image", "TargetDirectoryBanner");
                if (Image != null)
                {
                    targetDirectoryImage = Image;
                }

                var HeadlineText = Manipulator.GetResourceString("Text", "Page3_Headline");
                if (HeadlineText != null)
                {
                    headline = HeadlineText;
                }

                var Text = Manipulator.GetResourceString("Text", "Page3_Text");
                if (Text != null)
                {
                    text = Text;
                }
            }
            catch { }

            this.PropertyChanged += ViewModel_PropertyChanged;
        }
Example #5
0
        public PageIntroViewModel()
        {
            try
            {
                var Image = Manipulator.GetResourceImage("Image", "WelcomeBanner");
                if (Image != null)
                {
                    welcomeImage = Image;
                }

                var HeadlineText = Manipulator.GetResourceString("Text", "Page0_Headline");
                if (HeadlineText != null)
                {
                    headline = HeadlineText;
                }

                var SubHeadlineText = Manipulator.GetResourceString("Text", "Page0_SubHeadline");
                if (SubHeadlineText != null)
                {
                    subHeadline = SubHeadlineText;
                }

                var Text = Manipulator.GetResourceString("Text", "Page0_Text");
                if (Text != null)
                {
                    text = Text;
                }
            }
            catch { }

            this.PropertyChanged += ViewModel_PropertyChanged;
        }
Example #6
0
    void SwitchTool(MouseUpEvent e)
    {
        var  toggle   = e.target as Toggle;
        Type toolType = Type.GetType(toggle.name);

        if (m_Tool != null && m_Tool.GetType() == toolType)
        {
            return;
        }
        foreach (var tool in m_ToolButtons)
        {
            tool.value = tool == toggle;
        }
        if (m_Tool != null)
        {
            m_Root.RemoveManipulator(m_Tool);
        }
        toggle.value = true;
        toggle.Focus();
        // toggle.Blur();
        if (toolType != null)
        {
            Manipulator tool;
            if (m_Tools.TryGetValue(toolType, out tool))
            {
                m_Tool = m_Tools[toolType];
            }
            else
            {
                m_Tool = System.Activator.CreateInstanceFrom(toolType.Assembly.CodeBase, toolType.FullName).Unwrap() as Manipulator;
                m_Tools.Add(toolType, m_Tool);
            }
            m_Root.Q(name: "canvas").AddManipulator(m_Tool);
        }
    }
Example #7
0
        public AssociativeTable(Manipulator Agent, int entries)
        {
            Table = new Dictionary <double, double[]>();
            double[] q_init = new double[IKP.ParamNum];
            Array.Copy(Agent.q, q_init, IKP.ParamNum);

            Random rng    = new Random();
            IKP    Solver = new IKP(0.02, Agent.Links.Length, 10, 0.2, 50);

            for (int i = 0; i < 3600; i++)
            {
                double d = 0.04, a = i;  //a = Math.Round(-Math.PI + 2 * Math.PI * rng.NextDouble(), 2);
                Vector v = new Vector(d * Math.Cos(a / 10), d * Math.Sin(a / 10));

                var res = Solver.Execute(Agent.GripperPos + v);
                Array.Copy(q_init, Agent.q, IKP.ParamNum);
                while (!res.Item1)
                {
                    res = Solver.Execute(Agent.GripperPos + v);
                    Array.Copy(q_init, Agent.q, IKP.ParamNum);
                }

                Table.Add(a, res.Item3);
            }
        }
Example #8
0
        public void Trim(Manipulator manipulator, InverseKinematicsSolver solver)
        {
            switch (Mode)
            {
            case TreeBehaviour.Cyclic:
                var source = new Queue <Node>();
                source.Enqueue(Root);
                while (source.Count != 0)
                {
                    var childs = new List <Node>(source.Dequeue().Childs);
                    foreach (var child in childs)
                    {
                        manipulator.q = child.q;
                        if (manipulator.CollisionTest().Contains(true))
                        {
                            RemoveNode(child);
                        }
                        else
                        {
                            source.Enqueue(child);
                        }
                    }
                }
                break;

            case TreeBehaviour.Recursive:
                foreach (var child in Root.Childs)
                {
                    TrimRecursive(manipulator, solver, child);
                }
                break;
            }
        }
Example #9
0
        public static Signal Transform(Signal signal, Context context, MathIdentifier transformationTypeId, bool ignoreHold)
        {
            TransformationTypeTable           transTable = context.Library.LookupTransformationTheoremType(transformationTypeId);
            TransformationManipulationVisitor visitor    = new TransformationManipulationVisitor(transTable);

            return(Manipulator.Manipulate(signal, visitor, ignoreHold));
        }
Example #10
0
        public static void Initialize(Manipulator agent, Obstacle[] obstacles)
        {
            Rng = new Random();

            Agent     = new Manipulator(agent);
            Obstacles = obstacles;
        }
        /// <summary>
        /// Connections the specified object.
        /// </summary>
        /// <param name="obj">The object.</param>
        private void Connection(object obj)
        {
            if (null != obj)
            {
                var state = (bool)obj;
                if (!state)
                {
                    Manipulator?.Disconnect();
                }
                else
                {
                    if (string.IsNullOrEmpty(SelectedCOMPort))
                    {
                        BadgeText = "!";
                        ConnectionToggleIsChecked = false;
                        return;
                    }

                    ConnectionToggleIsChecked = true;
                    Manipulator = new E3JManipulator(Settings);
                    Manipulator.Port.ConnectionStatusChanged += Port_ConnectionStatusChanged;
                    Manipulator.Connect(SelectedCOMPort);
                    Manipulator.Port.DataReceived += Port_DataReceived;
                    KinectHandler?.StartKinect(Manipulator);
                }
            }
        }
Example #12
0
    void OnKeyDown(KeyDownEvent e)
    {
        bool pressed;

        if (keyPressed.TryGetValue(e.keyCode, out pressed))
        {
            if (!pressed)
            {
                keyPressed[e.keyCode] = true;
            }
        }
        else
        {
            keyPressed.Add(e.keyCode, true);
        }
        if (!pressed && keyPressed[e.keyCode])
        {
            if (e.keyCode == KeyCode.LeftControl || e.keyCode == KeyCode.RightControl)
            {
                if (m_Tool != null)
                {
                    m_Root.Q(name: "canvas").RemoveManipulator(m_Tool);
                }
                m_Manipulator = new EyedropperTool();
                m_Root.Q(name: "canvas").AddManipulator(m_Manipulator);
            }
        }
    }
        public async Task StartGameResetsGameData()
        {
            AddPlayers(Constants.MaxPlayerCount);
            await StateMachine.Start();

            Manipulator.Verify(_ => _.ResetGame());
        }
Example #14
0
        public void Control(Manipulator agent, Vector3 goal, List <List <Vector3> > paths)
        {
            var contestant = new Manipulator(agent);

            var gripperPos = 0;

            while (gripperPos < agent.Configs.Count)
            {
                for (int i = gripperPos + 1; i < agent.Path.Count; i++)
                {
                    for (int j = paths[i].Count - 1; j > 0; j--)
                    {
                        foreach (var obst in Obstacles)
                        {
                            if (obst.Contains(paths[i][j]))
                            {
                                Deform(agent, obst, paths, i, j);
                                break;
                            }
                        }
                    }
                }

                // wait for window to draw current config so that we can update it
                Dispatcher.UpdateConfig.WaitOne();
                agent.q = agent.Configs[gripperPos < agent.Configs.Count - 1 ? gripperPos++ : gripperPos];
                Dispatcher.UpdateConfig.Reset();
            }
        }
Example #15
0
        /// <summary>
        /// 创建箭头
        /// </summary>
        /// <param name="swN"></param>
        /// <param name="swPickPt"></param>
        /// <param name="length"></param>
        /// <returns></returns>
        private Manipulator CreateNewDrag(MathVector swN, MathPoint swPickPt, double length)
        {
            var           swModel      = (ModelDoc2)swApp.ActiveDoc;
            var           swModViewMgr = swModel.ModelViewManager;
            SwManHandler2 swDragHdlr   = new SwManHandler2();

            Manipulator swManip = swModViewMgr.CreateManipulator((int)swManipulatorType_e.swDragArrowManipulator, swDragHdlr);

            DragArrowManipulator swDrag = (DragArrowManipulator)swManip.GetSpecificManipulator();

            swDrag.AllowFlip             = false;
            swDrag.ShowRuler             = false;
            swDrag.ShowOppositeDirection = false;
            swDrag.Length    = length;
            swDrag.Direction = swN;
            //swDrag.LengthOppositeDirection = 0.01;

            swDrag.Origin = swPickPt;

            swManip.Show(swModel);

            swDrag.Update();

            return(swManip);
        }
Example #16
0
        public PageInstallViewModel()
        {
            try
            {
                var Image = Manipulator.GetResourceImage("Image", "InstallBanner");
                if (Image != null)
                {
                    installImage = Image;
                }

                var HeadlineText = Manipulator.GetResourceString("Text", "Page4_Headline");
                if (HeadlineText != null)
                {
                    headline = HeadlineText;
                }

                var Text = Manipulator.GetResourceString("Text", "Page4_Text");
                if (Text != null)
                {
                    text = Text;
                }

                var Text2 = Manipulator.GetResourceString("Text2", "Page4_Text2");
                if (Text2 != null)
                {
                    text2 = Text2;
                }
            }
            catch { }

            this.PropertyChanged += ViewModel_PropertyChanged;
        }
Example #17
0
        void OnManipulatorRightUpdated(SteamVR_Controller.Device state)
        {
            if (state.GetPressDown(EVRButtonId.k_EButton_Grip))
            {
                /*Utils.Log("OnManipulatorRightUpdated: " +
                 *  "attached = " + (attachedManipulator == null ? "null" : attachedManipulator.ToString()) +
                 *  ", isManipulatorRightInsideStickCollider = " + (isManipulatorRightInsideCollider ? "yes" : "no") +
                 *  ", state.GetPressDown = " + (state.GetPressDown(EVRButtonId.k_EButton_Grip) ? "yes" : "no"));*/

                if (isInteractable && (attachedManipulator == null) &&
                    isManipulatorRightInsideCollider)
                {
                    attachedManipulator = DeviceManager.Instance.ManipulatorRight;
                    DeviceManager.Instance.ManipulatorRight.isGripping = true;

                    // cool-down for button de-bounce
                    isInteractable = false;
                    StartCoroutine(ButtonCooldown());
                }
                else if (DeviceManager.IsManipulatorRight(attachedManipulator))
                {
                    attachedManipulator = null;
                    DeviceManager.Instance.ManipulatorRight.isGripping = false;
                }
            }
        }
Example #18
0
        public static SignalSet Transform(IEnumerable <Signal> signals, Context context, MathIdentifier transformationTypeId, ConfigureTransformation configure, bool ignoreHold)
        {
            TransformationTypeTable           transTable = context.Library.LookupTransformationTheoremType(transformationTypeId);
            TransformationManipulationVisitor visitor    = new TransformationManipulationVisitor(transTable, configure);

            return(Manipulator.Manipulate(signals, visitor, ignoreHold));
        }
Example #19
0
        private OpenXmlElement ConvertLinkInline(LinkInline linkInline, bool isBoldInherited = false, bool isItalicInherited = false)
        {
            if (linkInline.IsImage)
            {
                var explicitAbsoluteImagePath = GetExplicitAbsoluteImagePath(linkInline.Url, BaseFolderPathForRelativePath);
                var relationshipId            = AddImagePartFromFile(explicitAbsoluteImagePath);

                // At this time, temporary uses the original image dimension.
                // In later, adjust the image dimension using the page settings and inherited indentation.
                (var originalImageWidthInch, var originalImageHeightInch) = Manipulator.GetImageDimensionInInch(relationshipId);
                var originalImageWidthEmu  = WordDocumentManipulator.UnitConverter.InchToEmu(originalImageWidthInch);
                var originalImageHeightEmu = WordDocumentManipulator.UnitConverter.InchToEmu(originalImageHeightInch);

                var fileName = Path.GetFileName(explicitAbsoluteImagePath);
                var altText  = GetLinkText(linkInline);
                return(Manipulator.ElementCreator.CreateImageElement(relationshipId, (long)originalImageWidthEmu, (long)originalImageHeightEmu, fileName, altText));
            }
            else
            {
                var linkText = GetLinkText(linkInline);

                var hyperlinkUri            = GetLinkTargetUri(linkInline.Url);
                var hyperlinkRelationshipId = Manipulator.AddHyperlinkRelationship(hyperlinkUri);

                var styleId = UserSettingStyleMap.GetStyleId(UserSettingStyleMap.StyleMapKeyType.Hyperlink, null);
                return(Manipulator.ElementCreator.CreateHyperlinkElement(linkText, hyperlinkRelationshipId, isBoldInherited, isItalicInherited, styleId));
            }
        }
        public void WrongFileExtensionThrowsException()
        {
            //Arrange
            var manipulator = new Manipulator(@"C:\thisFileDoesntExist.txt");

            //Act
            manipulator.Reverse();
        }
        public void TooSmallFileThrowsException()
        {
            //Arrange
            var manipulator = new Manipulator(@"C:\Users\David'\Desktop\WavFiles\16BitPCM\tooSmall.wav");

            //Act
            manipulator.Reverse();
        }
        public void NonWaveFileContentFormatThrowsException()
        {
            //Arrange
            var manipulator = new Manipulator(@"C:\Users\David'\Desktop\WavFiles\16BitPCM\notWavFormat.wav");

            //Act
            manipulator.Reverse();
        }
        public void EmptyStringThrowsException()
        {
            //Arrange
            var manipulator = new Manipulator("");

            //Act
            manipulator.Reverse();
        }
        public void NonExistentFileThrowsException()
        {
            //Arrange
            var manipulator = new Manipulator(@"C:\thisFileDoesntExist.wav");

            //Act
            manipulator.Reverse();
        }
Example #25
0
    //Recreatee drag handler based on mouse
    void CheckMouse()
    {
        if (Input.GetMouseButtonDown(0))
        {
            coll = Physics2D.OverlapPoint(Camera.main.ScreenToWorldPoint(Input.mousePosition));
            if (coll == null)
            {
                return;
            }

            if (coll.CompareTag("Manipulator"))
            {
                curr_selected_obj = coll.GetComponent <Manipulator>();
            }
            touch_timer = buffer_time;
            isSelected  = false;
        }

        if (Input.GetMouseButton(0))
        {
            if (curr_selected_obj == null)
            {
                return;
            }
            touch_timer -= Time.deltaTime;
            //Start the drag mechanic
            if (touch_timer <= 0 && !isSelected)
            {
                isSelected = true;
                curr_selected_obj.StartDrag();
            }
            else if (touch_timer <= 0 && isSelected)
            {
                curr_selected_obj.Drag();
            }
        }

        if (Input.GetMouseButtonUp(0))
        {
            if (curr_selected_obj == null)
            {
                return;
            }
            //Case 1 : Tap
            if (touch_timer >= 0)
            {
                curr_selected_obj.Rotate_Right();
            }

            //Case 2 : Drag and release
            if (touch_timer <= 0)
            {
                curr_selected_obj.EndDrag();
            }

            curr_selected_obj = null;
        }
    }
 public void TestReverse()
 {
     Assert.Equal(54321, Manipulator.Reverse(12345));
     Assert.Equal(1337, Manipulator.Reverse(7331));
     Assert.Equal(0, Manipulator.Reverse(0));
     Assert.Equal(1, Manipulator.Reverse(1));
     Assert.Equal(8, Manipulator.Reverse(8000));
     Assert.Equal(111111, Manipulator.Reverse(111111));
 }
        public void NullStringThrowsException()
        {
            //Arrange
            string array       = null;
            var    manipulator = new Manipulator(array);

            //Act
            manipulator.Reverse();
        }
 public void TestComplement()
 {
     Assert.Equal(87654, Manipulator.Complement(12345));
     Assert.Equal(2668, Manipulator.Complement(7331));
     Assert.Equal(8, Manipulator.Complement(1));
     Assert.Equal(1999, Manipulator.Complement(8000));
     Assert.Equal(8000, Manipulator.Complement(1999));
     Assert.Equal(888888, Manipulator.Complement(111111));
 }
        public void NullArrayThrowsException()
        {
            //Arrange
            IEnumerable <byte> array = null;
            var manipulator          = new Manipulator(array);

            //Act
            manipulator.Reverse();
        }
        public void MoveFrameOnNewPlayfield_UpAndLeft_ReturnsTrue(Direction direction)
        {
            // arrange

            // act
            bool testResult = Manipulator.GetInstance().MakeMove(_playfieldStub.Object, direction, false);

            // assert
            Assert.IsTrue(testResult);
        }
 public void HideProperty()
 {
     swManip = null;
     triadManip = null;
     GC.Collect();
 }
        /// <summary>
        /// Toggles custom value textboxes when checkbox changes 
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void CustomMassValCheckbox_CheckedChanged(object sender, EventArgs e)
        {
            currentLink.UseCustomInertial = CustomMassValCheckbox.Checked;
            PhysicalButton.Enabled = !CustomMassValCheckbox.Checked;
            toggleCOMTextboxes();

            if (CustomMassValCheckbox.Checked)
            {
                swManip = currentLink.modelDoc.ModelViewManager.CreateManipulator((int)swManipulatorType_e.swTriadManipulator, this);
                triadManip = swManip.GetSpecificManipulator();
                triadManip.DoNotShow = (int)swTriadManipulatorDoNotShow_e.swTriadManipulatorDoNotShowXYRING | (int)swTriadManipulatorDoNotShow_e.swTriadManipulatorDoNotShowYZRING
                                        | (int)swTriadManipulatorDoNotShow_e.swTriadManipulatorDoNotShowZXRING | (int)swTriadManipulatorDoNotShow_e.swTriadManipulatorDoNotShowXYPlane |
                                        (int)swTriadManipulatorDoNotShow_e.swTriadManipulatorDoNotShowYZPlane | (int)swTriadManipulatorDoNotShow_e.swTriadManipulatorDoNotShowZXPlane;
                triadManip.Origin = currentLink.swApp.GetMathUtility().CreatePoint(new double[] { currentLink.ComX, currentLink.ComY, currentLink.ComZ });
                startOrigin = triadManip.Origin;
                triadManip.UpdatePosition();
                swManip.Show(currentLink.modelDoc);
            }
            else
            {
                InertiaButton_Click(null, null);

                HideProperty();
            }
        }
Example #33
0
        /// <summary>
        /// Updates manipulators to reflect the contact change.
        /// </summary>
        /// <param name="contactEvent">The new ContactTargetEvent</param>
        /// <param name="details">The contacEvent.HitTestDetails as ScrollViewerHitTestDetails</param>
        private void UpdateCurrentManipulators(ContactTargetEvent contactEvent, ScrollViewerHitTestDetails details)
        {
            // Try to find the changed contact in the manipulators list.
            bool foundManipulator = false;
            for (int i = 0; i < manipulations.Count; i++)
            {
                Manipulator manipulator = manipulations[i];

                if (manipulator.ManipulatorId == contactEvent.Contact.Id)
                {
                    manipulations.Remove(manipulator);

                    Manipulator manipulatorToAdd = new Manipulator(contactEvent.Contact.Id,
                                                                   ConvertFromHorizontalValueToScreenSpace(details.HorizontalPosition),
                                                                   ConvertFromVerticalValueToScreenSpace(details.VerticalPosition));

                    // Performance: It doesn't matter where we insert, but if all the contacts are being updated,
                    // then putting the most recent change at the end will mean that there is one less contact
                    // to go through the next time this loop is executed.
                    if (manipulations.Count == 0)
                    {
                        manipulations.Add(manipulatorToAdd);
                    }
                    else
                    {
                        manipulations.Insert(manipulations.Count - 1, manipulatorToAdd);
                    }

                    foundManipulator = true;
                    break;
                }
            }

            // The manipulator isn't in the list so add it.
            if (!foundManipulator)
            {
                manipulations.Add(new Manipulator(contactEvent.Contact.Id,
                                                  ConvertFromHorizontalValueToScreenSpace(details.HorizontalPosition),
                                                  ConvertFromVerticalValueToScreenSpace(details.VerticalPosition)));
            }
        }
 /// <summary>
 /// Clears the origin previews
 /// </summary>
 public void ClearOriginPreview()
 {
     if (swManip != null)
     {
         swManip.Visible = false;
         swManip.Remove();
         swManip = null;
         originTriad = null;
     }
 }
        /// <summary>
        /// Draws the preview triad for the origin
        /// </summary>
        private void DrawOriginPreview()
        {
            if (!inPropertyPage || groupBox.Expanded == false)
                return;
            MathVector xAxisVector = RobotInfo.mathUtil.CreateVector(new double[]{1,0,0});
            MathVector yAxisVector = RobotInfo.mathUtil.CreateVector(new double[]{0,1,0});
            MathVector zAxisVector = RobotInfo.mathUtil.CreateVector(new double[]{0,0,1});
            if (swManip == null)
            {
                swManip = modelDoc.ModelViewManager.CreateManipulator((int)swManipulatorType_e.swTriadManipulator, this);
                originTriad = swManip.GetSpecificManipulator();
            }

            if (xVector != null)
            {
                originTriad.XAxis = xVector;
                if (yVector != null)
                {
                    originTriad.YAxis = yVector;
                    originTriad.ZAxis = xVector.Cross(yVector).Normalise();
                }
                else
                {
                    MathVector tempAxis = zAxisVector.Cross(xVector);
                    if(tempAxis.GetLength() < VectorCalcs.errorVal)
                        tempAxis = yAxisVector;
                    else
                        tempAxis = tempAxis.Normalise();
                    originTriad.YAxis = tempAxis;
                    originTriad.ZAxis = xVector.Cross(tempAxis).Normalise();
                }
            }
            else
            {
                originTriad.XAxis = xAxisVector;
                originTriad.YAxis = yAxisVector;
                originTriad.ZAxis = zAxisVector;
            }

            originTriad.Origin = RobotInfo.mathUtil.CreatePoint(OriginValues.Point);
            originTriad.UpdateScale(80);
            originTriad.DoNotShow = (int)swTriadManipulatorDoNotShow_e.swTriadManipulatorDoNotShowXYPlane |
                (int)swTriadManipulatorDoNotShow_e.swTriadManipulatorDoNotShowXYRING |
                (int)swTriadManipulatorDoNotShow_e.swTriadManipulatorDoNotShowYZPlane |
                (int)swTriadManipulatorDoNotShow_e.swTriadManipulatorDoNotShowYZRING |
                (int)swTriadManipulatorDoNotShow_e.swTriadManipulatorDoNotShowZXPlane |
                (int)swTriadManipulatorDoNotShow_e.swTriadManipulatorDoNotShowZXRING;

            originTriad.UpdatePosition();
            if (!swManip.Visible)
            {
                swManip.Show(modelDoc);
            }
        }
Example #36
0
        /// <summary>
        /// Returns the average of the captured contacts in the ThumbList.
        /// </summary>
        /// <returns></returns>
        private float AverageCapturedContactsInThumbList()
        {
            float average = 0;
            int count = 0;

            if (manipulationProcessor == null)
            {
                manipulationProcessor = new Affine2DManipulationProcessor(Affine2DManipulations.TranslateX);  // The coordinate doesn't matter we always deal in 1 dimension.
                manipulationProcessor.Affine2DManipulationCompleted += new EventHandler<Affine2DOperationCompletedEventArgs>(OnAffine2DManipulationCompleted);
            }

            List<Manipulator> currentManipulators = new List<Manipulator>();
            List<Manipulator> removedManipulators = new List<Manipulator>();

            // Go through the contacts which are captured on the thumb and average them.
            for (int i = 0; i < thumbCapturedContactsList.Count; i++)
            {
                int id = thumbCapturedContactsList[i];

                // Make sure the contact is captured.
                if (ContactsCaptured.Contains(id))
                {
                    //  Make sure we have hit test details for this contact.
                    if (captureContactsHitTestDetails.ContainsKey(id))
                    {
                        Debug.Assert(distanceOffset.ContainsKey(id), "Offset wasn't calculated for this contact.");

                        float offset = distanceOffset[id];

                        ScrollBarHitTestDetails details = captureContactsHitTestDetails[id];

                        // The Manipulations should all run in screen space.
                        Manipulator manipulator = new Manipulator(id, ToScreenSpace(details.Position - offset), 0);

                        // Make sure the value of each contact accounts for offset.
                        average += captureContactsHitTestDetails[id].Position - offset;
                        count++;

                        currentManipulators.Add(manipulator);
                    }
                    else
                    {
                        Debug.Fail("The contact was captured, but wasn't in the hit test details dictionary.");
                    }
                }
                else
                {
                    float offset = distanceOffset[id];

                    ScrollBarHitTestDetails details = captureContactsHitTestDetails[id];

                    // The Manipulations should all run in screen space.
                    Manipulator manipulator = new Manipulator(id, ToScreenSpace(details.Position - offset), 0);

                    removedManipulators.Add(manipulator);

                    // The contact was released so we need to remove it.
                    thumbCapturedContactsList.Remove(id);
                    i--;
                }
            }

            manipulationProcessor.ProcessManipulators(stopwatch.ElapsedTicks, currentManipulators, removedManipulators);

            // Don't divide by zero.
            if (count != 0)
                average = average / count;

            return average;
        }
Example #37
0
 public Manipulator addManipulator(Manipulator manipulator)
 {
     listManipulators.Add(manipulator);
     return manipulator;
 }