OurSonic.Level.Objects.LevelObjectInfo.Collision C# (CSharp) Method

Collision() public method

public Collision ( Point sonic, bool isHurtMap ) : LevelObjectPiece
sonic Point
isHurtMap bool
return LevelObjectPiece
        public LevelObjectPiece Collision(Point sonic, bool isHurtMap)
        {
            if (Dead || ObjectData.Falsey() || ObjectData.PieceLayouts.Count == 0) return null;
            var pcs = Pieces;
            int mX = (int) ( ( sonic.X ) - X );
            int mY = (int) ( ( sonic.Y ) - Y );
/*//speed?
            if (mX < -50 || mY < -50) {
                return null;
            }
*/

            foreach (var j in pcs) {
                var piece = ObjectData.Pieces[j.PieceIndex];
                var asset = ObjectData.Assets[piece.AssetIndex];
                if (asset.Frames.Count > 0) {
                    var frm = asset.Frames[j.FrameIndex];
                    var map = isHurtMap ? frm.HurtSonicMap : frm.CollisionMap;
                    if (twoDArray(map, ( mX + frm.OffsetX /*+ j.X*/ ), ( mY + frm.OffsetY /*+ j.Y*/), Xflip ^ piece.Xflip, Yflip ^ piece.Yflip) == true)
                        return j;
                }
            }

            return null;
        }