public override PShape2D CreateShape(GameObject root) { Fix64Vec2 s = CalculateSize(); if (s != Fix64Vec2.zero) { Fix64 angle = Fix64.zero; Fix64Vec2 center = Fix64Vec2.zero; if (gameObject != root) { angle = Fix64.DegToRad(_pTransform.localEulerAngles.z); center = (Fix64Vec2)_pTransform.localPosition; } if (s == Fix64Vec2.one) { return(Parallel2D.CreatePolygon(convexVerts, convexVertsCount, center, angle)); } else { Fix64Vec2[] scaled = new Fix64Vec2[convexVertsCount]; for (int i = 0; i < convexVertsCount; i++) { scaled[i] = convexVerts[i] * s; } return(Parallel2D.CreatePolygon(scaled, convexVertsCount, center, angle)); } } else { return(null); } }