private void ApplyCenter(LocalEdge[] edges) { for (int i = 0; i < edges.Length; i++) { LocalEdges[i].Position = edges[i].Position - Center; LocalEdges[i].Weight = edges[i].Weight; } }
private void CalculateCenter(LocalEdge[] edges) { foreach (var le in edges) { Center += le.Position * le.Weight; Weight += le.Weight; } Center /= edges.Length; }
public PolygonCollider(GameEntity entity, params Vector3[] lcEdges) { Entity = entity; Edges = new Vector2[lcEdges.Length]; LocalEdges = new LocalEdge[lcEdges.Length]; for (int i = 0; i < lcEdges.Length; i++) { LocalEdges[i] = new LocalEdge(lcEdges[i].X, lcEdges[i].Y, lcEdges[i].Z); } CalculateCenter(LocalEdges); ApplyCenter(LocalEdges); Update(); }