protected void EnqueueObject(int objectNumber, int objectX, int objectY, int objectWidth,
int objectHeight, int scaleX, int scaleY, int image, int mode)
{
if (_blastObjectQueuePos >= _blastObjectQueue.Length)
{
throw new InvalidOperationException("enqueueObject: overflow");
}
var idx = GetObjectIndex(objectNumber);
Debug.Assert(idx >= 0, "Object index should be positive");
var left = objectX;
var top = objectY + ScreenTop;
int right;
int bottom;
if (objectWidth == 0)
{
right = left + _objs[idx].Width;
}
else
{
right = left + objectWidth;
}
if (objectHeight == 0)
{
bottom = top + _objs[idx].Height;
}
else
{
bottom = top + objectHeight;
}
var eo = _blastObjectQueue[_blastObjectQueuePos++];
eo.Number = objectNumber;
eo.Rect = new Rect(left, top, right, bottom);
eo.ScaleX = scaleX;
eo.ScaleY = scaleY;
eo.Image = image - 1;
eo.Mode = mode;
}