public bool Validate()
{
for (int i = 0; i < VertexCount; ++i)
{
int i1 = i;
int i2 = i < VertexCount - 1 ? i1 + 1 : 0;
Vec2 p = Vertices[i1];
Vec2 e = pool1.Set(Vertices[i2]).SubLocal(p);
for (int j = 0; j < VertexCount; ++j)
{
if (j == i1 || j == i2)
{
continue;
}
Vec2 v = pool2.Set(Vertices[j]).SubLocal(p);
float c = Vec2.Cross(e, v);
if (c < 0.0f)
{
return false;
}
}
}
return true;
}