@@ -18,6 +18,16 @@ public class PolygonMesh : IMeshFactory, IHitTest
1818 /// </summary>
1919 public readonly List < Vector2 > texcoords ;
2020
21+ /// <summary>
22+ ///
23+ /// </summary>
24+ public float lineWidth ;
25+
26+ /// <summary>
27+ ///
28+ /// </summary>
29+ public Color32 lineColor ;
30+
2131 /// <summary>
2232 ///
2333 /// </summary>
@@ -162,6 +172,53 @@ public void OnPopulateMesh(VertexBuffer vb)
162172
163173 if ( colors != null )
164174 vb . RepeatColors ( colors , 0 , vb . currentVertCount ) ;
175+
176+ if ( lineWidth > 0 )
177+ DrawOutline ( vb ) ;
178+ }
179+
180+ void DrawOutline ( VertexBuffer vb )
181+ {
182+ int numVertices = points . Count ;
183+ int start = vb . currentVertCount - numVertices ;
184+ int k = vb . currentVertCount ;
185+ for ( int i = 0 ; i < numVertices ; i ++ )
186+ {
187+ Vector3 p0 = vb . vertices [ start + i ] ;
188+ p0 . y = - p0 . y ;
189+ Vector3 p1 ;
190+ if ( i < numVertices - 1 )
191+ p1 = vb . vertices [ start + i + 1 ] ;
192+ else
193+ p1 = vb . vertices [ start ] ;
194+ p1 . y = - p1 . y ;
195+
196+ Vector3 lineVector = p1 - p0 ;
197+ Vector3 widthVector = Vector3 . Cross ( lineVector , new Vector3 ( 0 , 0 , 1 ) ) ;
198+ widthVector . Normalize ( ) ;
199+
200+ vb . AddVert ( p0 - widthVector * lineWidth * 0.5f , lineColor ) ;
201+ vb . AddVert ( p0 + widthVector * lineWidth * 0.5f , lineColor ) ;
202+ vb . AddVert ( p1 - widthVector * lineWidth * 0.5f , lineColor ) ;
203+ vb . AddVert ( p1 + widthVector * lineWidth * 0.5f , lineColor ) ;
204+
205+ k += 4 ;
206+ vb . AddTriangle ( k - 4 , k - 3 , k - 1 ) ;
207+ vb . AddTriangle ( k - 4 , k - 1 , k - 2 ) ;
208+
209+ //joint
210+ if ( i != 0 )
211+ {
212+ vb . AddTriangle ( k - 6 , k - 5 , k - 3 ) ;
213+ vb . AddTriangle ( k - 6 , k - 3 , k - 4 ) ;
214+ }
215+ if ( i == numVertices - 1 )
216+ {
217+ start += numVertices ;
218+ vb . AddTriangle ( k - 2 , k - 1 , start + 1 ) ;
219+ vb . AddTriangle ( k - 2 , start + 1 , start ) ;
220+ }
221+ }
165222 }
166223
167224 bool IsPointInTriangle ( ref Vector2 p , ref Vector2 a , ref Vector2 b , ref Vector2 c )
0 commit comments