Esempio n. 1
0
 public static EdgePair Create()
 {
     var pair = new MeshUtils.EdgePair();
     pair._e = MeshUtils.Edge.Create();
     pair._e._pair = pair;
     pair._eSym = MeshUtils.Edge.Create();
     pair._eSym._pair = pair;
     return pair;
 }
Esempio n. 2
0
        public override void Reset()
        {
            MeshUtils.Face f = _fHead._next;
            while (true)
            {
                MeshUtils.Face fNext = f._next;
                f.Free();
                if (f == _fHead)
                {
                    break;
                }
                f = fNext;
            }

            MeshUtils.Vertex v = _vHead._next;
            while (true)
            {
                MeshUtils.Vertex vNext = v._next;
                v.Free();
                if (v == _vHead)
                {
                    break;
                }
                v = vNext;
            }

            for (int i = 0; i < _allEdgePairs.Count; i++)
            {
                MeshUtils.EdgePair pair = _allEdgePairs[i];

                MeshUtils.Edge e = pair._e;
                if (!e.IsReturnedToPool()) // (can be Free in KillEdge)
                {
                    e.Free();
                }

                MeshUtils.Edge eSym = pair._eSym;
                if (!eSym.IsReturnedToPool()) // (can be Free in KillEdge)
                {
                    eSym.Free();
                }

                pair.Free();
            }
            _allEdgePairs.Clear();

            _vHead = null;
            _fHead = null;
            _eHead = _eHeadSym = null;
        }
Esempio n. 3
0
    public void Init(IPool pool)
    {
        MeshUtils.Vertex v = _vHead = pool.Get <MeshUtils.Vertex>();
        MeshUtils.Face   f = _fHead = pool.Get <MeshUtils.Face>();

        MeshUtils.EdgePair pair = MeshUtils.EdgePair.Create(pool);
        MeshUtils.Edge     e    = _eHead = pair._e;
        MeshUtils.Edge     eSym = _eHeadSym = pair._eSym;

        v._next   = v._prev = v;
        v._anEdge = null;

        f._next   = f._prev = f;
        f._anEdge = null;
        f._trail  = null;
        f._marked = false;
        f._inside = false;

        e._next         = e;
        e._Sym          = eSym;
        e._Onext        = null;
        e._Lnext        = null;
        e._Org          = null;
        e._Lface        = null;
        e._winding      = 0;
        e._activeRegion = null;

        eSym._next         = eSym;
        eSym._Sym          = e;
        eSym._Onext        = null;
        eSym._Lnext        = null;
        eSym._Org          = null;
        eSym._Lface        = null;
        eSym._winding      = 0;
        eSym._activeRegion = null;
    }