Пример #1
0
        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));
        }
Пример #2
0
 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[]>());
     }
 }
Пример #3
0
 public Rectf(Rectf copy) :
     this(copy.X, copy.Y, copy.Width, copy.Height)
 {
 }