public IReadOnlyList <IReadOnlyList <Vector2f> > GenerateOutline(SpriteAtlas atlas, Rectf rect, Vector2f pivot) { Vector2f[][] outlines = RD.GenerateOutline(File.Version); float pivotShiftX = rect.Width * pivot.X - rect.Width * 0.5f; float pivotShiftY = rect.Height * pivot.Y - rect.Height * 0.5f; Vector2f pivotShift = new Vector2f(pivotShiftX, pivotShiftY); foreach (Vector2f[] outline in outlines) { for (int i = 0; i < outline.Length; i++) { Vector2f point = outline[i] * PixelsToUnits; outline[i] = point + pivotShift; } } return(FixRotation(atlas, outlines)); }
public IReadOnlyList <IReadOnlyList <Vector2f> > GeneratePhysicsShape(SpriteAtlas atlas, Rectf rect, Vector2f pivot) { if (IsReadPhysicsShape(File.Version)) { Vector2f[][] shape = new Vector2f[PhysicsShape.Count][]; float pivotShiftX = rect.Width * pivot.X - rect.Width * 0.5f; float pivotShiftY = rect.Height * pivot.Y - rect.Height * 0.5f; Vector2f pivotShift = new Vector2f(pivotShiftX, pivotShiftY); for (int i = 0; i < PhysicsShape.Count; i++) { shape[i] = new Vector2f[PhysicsShape[i].Count]; for (int j = 0; j < PhysicsShape[i].Count; j++) { Vector2f point = PhysicsShape[i][j] * PixelsToUnits; shape[i][j] = point + pivotShift; } } return(FixRotation(atlas, shape)); } else { return(Array.Empty <Vector2f[]>()); } }
public Rectf(Rectf copy) : this(copy.X, copy.Y, copy.Width, copy.Height) { }