public CompoundShape(IList<CompoundShapeEntry> shapes) { if (shapes.Count > 0) { Vector3 center = ComputeCenter(shapes); this.shapes = new RawList<CompoundShapeEntry>(shapes); for (int i = 0; i < this.shapes.Count; i++) { this.shapes.Elements[i].LocalTransform.Position -= center; } } else { throw new Exception("Compound shape must have at least 1 subshape."); } }