1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58
| /// <summary>
/// Update le layer
/// </summary>
/// <param name="gameTime"></param>
public void Update(Vector2 currentOriginPos)
{
this.sDisplayToDisplay.Clear();
float posXMin = 0;
float posXMax = 0;
float posYMin = 0;
float posYMax = 0;
// On calcul les positions d'origine relative
float relativeOriginPosXMin = currentOriginPos.X;
float relativeOriginPosXMax = (currentOriginPos.X + Config.ScreenWidth);
float relativeOriginPosYMin = currentOriginPos.Y;
float relativeOriginPosYMax = currentOriginPos.Y + Config.ScreenHeight;
foreach (SpriteDisplay sDisplay in this.sDisplayList)
{
posXMin = sDisplay.scaledPosX;
posXMax = (short)(sDisplay.scaledPosX + (short)(sDisplay.scaledWidth * Config.DisplayCoeff));
if (((posXMin >= relativeOriginPosXMin) && (posXMin <= relativeOriginPosXMax))
|| ((posXMax >= relativeOriginPosXMin) && (posXMax <= relativeOriginPosXMax))
|| ((posXMin <= relativeOriginPosXMin) && (posXMax >= relativeOriginPosXMax)))
{
posYMin = sDisplay.scaledPosY;
posYMax = (short)(sDisplay.scaledPosY +(short)(sDisplay.scaledHeight * Config.DisplayCoeff));
if (((posYMin >= relativeOriginPosYMin) && (posYMin <= relativeOriginPosYMax))
|| ((posYMax >= relativeOriginPosYMin) && (posYMax <= relativeOriginPosYMax))
|| ((posYMin <= relativeOriginPosYMin) && (posYMax >= relativeOriginPosYMax)))
{
this.sDisplayToDisplay.Add(sDisplay);
}
}
}
}
/// <summary>
/// Dessine le layer
/// </summary>
/// <param name="gameTime"></param>
public void Draw(SpriteBatch batch, Vector2 currentOriginPos)
{
float relativePosX = 0;
float relativePosY = 0;
foreach (SpriteDisplay sDisplay in this.sDisplayToDisplay)
{
relativePosX = sDisplay.scaledPosX - (currentOriginPos.X * this.layerRef.speed);
relativePosY = sDisplay.scaledPosY + currentOriginPos.Y;
batch.Draw(sDisplay.sTexture, new Rectangle((int)relativePosX, (int)relativePosY, (int)sDisplay.scaledWidth, (int)sDisplay.scaledHeight), Color.White);
}
} |
Partager