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;
}