public bool SetFragment(HomographyFragment hf)
            {
                List <PointSaveFormat> psfList = new List <PointSaveFormat> ();

                foreach (FragmentVertex fv in hf.FragmentVertices)
                {
                    PointSaveFormat psf = new PointSaveFormat();
                    if (!psf.SetPoint(fv))
                    {
                        return(false);
                    }
                    psfList.Add(psf);
                }
                foreach (FragmentAnchor fa in hf.FragmentAnchores)
                {
                    PointSaveFormat psf = new PointSaveFormat();
                    if (!psf.SetPoint(fa))
                    {
                        return(false);
                    }
                    psfList.Add(psf);
                }
                PointsData = psfList.ToArray();
                return(true);
            }
            public bool GetFragment(ref HomographyFragment hf)
            {
                PointSaveFormat[]    psfList = PointsData;
                List <FragmentPoint> fpList  = new List <FragmentPoint> ();

                foreach (PointSaveFormat psf in psfList)
                {
                    FragmentPoint fp;
                    if (!psf.GetPoint(out fp))
                    {
                        return(false);
                    }
                    fpList.Add(fp);
                }

                foreach (FragmentPoint fp in fpList)
                {
                    if (fp is FragmentVertex)
                    {
                        hf.FragmentVertices.Add(fp as FragmentVertex);
                    }
                    if (fp is FragmentAnchor)
                    {
                        hf.FragmentAnchores.Add(fp as FragmentAnchor);
                    }
                }
                return(true);
            }
 public bool CreateFragmentListFromSaveData(HomographyEditor editor)
 {
     FragmentSaveFormat[] fsfList = FragmentsData;
     foreach (FragmentSaveFormat fsf in fsfList)
     {
         HomographyFragment hf = editor.CreateFragment().GetComponent <HomographyFragment> ();
         if (!fsf.GetFragment(ref hf))
         {
             return(false);
         }
     }
     editor.ScaleHomography = ScaleHomography;
     return(true);
 }
        public override void Update()
        {
            HomographyFragment hf       = mHomographyEditor.CreateFragment().GetComponent <HomographyFragment> ();
            Vector3            mousePos = Input.mousePosition;
            Vector2            stdPos   = mHomographyEditor.ConvertPosToUv(new Vector2(mousePos.x, mousePos.y));
            FragmentVertex     fv       = new FragmentVertex(stdPos);

            hf.FragmentVertices.Add(fv);

            List <FragmentPoint> selectedList = mHomographyEditor.SelectedPointList;

            selectedList.RemoveRange(0, selectedList.Count);
            selectedList.Add(fv);

            mHomographyEditor.ManipulationMode = mHomographyEditor.EditTarget | HomographyEditor.ManipulationKind.Add;
            Controller.ReplaceManipulation(new MoveVertex());
        }
 //フラグメントの頂点を用意
 private bool FindFragmentVertex(FragmentVertex vertex, out HomographyFragment fragment, out int index)
 {
     fragment = null;
     index    = -1;
     foreach (HomographyFragment hf in mHomographyEditor.FragmentList)
     {
         for (int i = 0; i < hf.FragmentVertices.Count; i++)
         {
             if (hf.FragmentVertices [i] == vertex)
             {
                 fragment = hf;
                 index    = i;
                 return(true);
             }
         }
     }
     return(false);
 }