YsArray <YSSIZE_T> YsShellExt_RoundUtil3d::FindHalfRoundCornerFromPolygon(const YsShell &shl,YsShellPolygonHandle plHd) const { YsArray <YsShellVertexHandle,4> plVtHd; shl.GetPolygon(plVtHd,plHd); YsArray <YSSIZE_T> idxArray; for(YSSIZE_T i=0; i<plVtHd.GetN(); ++i) { for(YSSIZE_T j=0; j<cornerArray.GetN(); ++j) { if(plVtHd[i]==cornerArray[j].fromVtHd && YSTRUE==plVtHd.IsIncluded(cornerArray[j].toVtHd)) { idxArray.Append(j); } } } return idxArray; }
YSRESULT YsShellExt_RoundUtil::SetUpRoundPolygon(const YsShell &shl,YsShellPolygonHandle plHd,const YsShellVertexStore *roundVtx) { YsArray <YsShellVertexHandle> plVtHd; shl.GetPolygon(plVtHd,plHd); for(YSSIZE_T idx=0; idx<plVtHd.GetN(); ++idx) { const YsShellVertexHandle fromVtHd=plVtHd[idx]; if(NULL==roundVtx || YSTRUE==roundVtx->IsIncluded(fromVtHd)) { const YsShellVertexHandle toVtHd[2]= { plVtHd.GetCyclic(idx-1), plVtHd.GetCyclic(idx+1) }; AddRoundCorner(shl,fromVtHd,toVtHd); } } targetPlKeyArray.Append(shl.GetSearchKey(plHd)); return YSOK; }