Example #1
0
        internal void addToQueueInOrder(PoppedFaceInfo poppedFaceInfo)//think about tidying this up.
        {
            Boolean addedSomewhere = false;

            if (priorityQueue.Count == 0)//if empty add straight in - no sorting required
            {
                priorityQueue.Add(poppedFaceInfo);
                addedSomewhere = true;
            }
            else
            {
                if (poppedFaceInfo.error > priorityQueue[priorityQueue.Count - 1].error)//send straight to the back should save some time!
                {
                    priorityQueue.Add(poppedFaceInfo);
                    addedSomewhere = true;
                }
                else
                {
                    for (int i = 0; i < priorityQueue.Count; i++)
                    {
                        if (poppedFaceInfo.error <= priorityQueue[i].error)
                        {
                            //it has a smaller error so should take its position and move it down and then skip out of the loop
                            priorityQueue.Insert(i, poppedFaceInfo);
                            addedSomewhere = true;
                            break;
                        }
                    }
                }
            }
            if (addedSomewhere == false)
            {
                controller.errorContainer.Add("face was neveer added anywhere! this should never happen!");
            }
        }
Example #2
0
        internal void popOutTop()
        {
            PoppedFaceInfo faceToPop = priorityQueue[0];

            if (isFaceAssigned[faceToPop.faceIndex] == false)//checkface hasn't already been assigned somewhere
            {
                if (faceToPop.error < 0.001)
                {
                    controller.errorContainer.Add("error close to zero - should only happen number of times as planes");
                }
                proxies[faceToPop.proxyIndex].assignedFaces.Add(faceToPop.faceIndex);
                isFaceAssigned[faceToPop.faceIndex] = true;
                proxies[faceToPop.proxyIndex].popFace(faceToPop.faceIndex);
            }
            priorityQueue.Remove(faceToPop);
        }
Example #3
0
 internal void addToQueueInOrder(PoppedFaceInfo poppedFaceInfo)//think about tidying this up.
 {
     Boolean addedSomewhere = false;
     if (priorityQueue.Count == 0)//if empty add straight in - no sorting required
     {
         priorityQueue.Add(poppedFaceInfo);
         addedSomewhere = true;
     }
     else
     {
         if (poppedFaceInfo.error > priorityQueue[priorityQueue.Count-1].error)//send straight to the back should save some time!
         {
             priorityQueue.Add(poppedFaceInfo);
             addedSomewhere = true;
         }
         else
         {
             for (int i = 0; i < priorityQueue.Count; i++)
             {
                 if (poppedFaceInfo.error <= priorityQueue[i].error)
                 {
                     //it has a smaller error so should take its position and move it down and then skip out of the loop
                     priorityQueue.Insert(i, poppedFaceInfo);
                     addedSomewhere = true;
                     break;
                 }
             }
         }
     }
     if (addedSomewhere == false)
     {
         controller.errorContainer.Add("face was neveer added anywhere! this should never happen!");
     }
 }