Esempio n. 1
0
        public override void MouseMove(Vector2D mouseMovePos, EnumMouseButton button)
        {
            base.MouseMove(mouseMovePos, button);

            if (handleIndex == null)
            {
                return;
            }
            Vector2D p = mouseCurrPos - new Vector2D(projectedCenter.x, projectedCenter.y);

            p.x += 100;
            p.y += 100;
            switch (button)
            {
            case EnumMouseButton.Middle: movingBall.Drag(p); break;

            case EnumMouseButton.Left: movingBall.Drag(p / this.ScaleRatio); break;

            case EnumMouseButton.Right: movingBall.Drag(p); break;
            }
            Matrix4D tran = TransformController.Instance.TransformInverse * movingBall.CreateMatrix().Transpose() * TransformController.Instance.ModelMatrix;

            for (int i = 0; i < handleIndex.Count; i++)
            {
                int      j = handleIndex[i];
                Vector4D q = new Vector4D((Vector3D)oldHandlePos[i], 1);
                q = tran * (q - handleCenter) + handleCenter;
                mesh.Vertices[j].Traits.Position.x = q.x;
                mesh.Vertices[j].Traits.Position.y = q.y;
                mesh.Vertices[j].Traits.Position.z = q.z;
            }

            TriMeshUtil.SetUpNormalVertex(mesh);
            OnChanged(EventArgs.Empty);
        }