Removing uneeded Game Screen check
Adding SplitFlat that takes in offsets
This commit is contained in:
parent
eceddb52af
commit
e86a1f887c
@ -180,6 +180,54 @@ namespace Axios.Engine.Extenions
|
|||||||
return r;
|
return r;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// http://gamedev.stackexchange.com/questions/11584/xna-splitting-one-large-texture-into-an-array-of-smaller-textures
|
||||||
|
/// <summary>
|
||||||
|
/// Splits a texture into an array of smaller textures of the specified size.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="original">The texture to be split into smaller textures</param>
|
||||||
|
/// <param name="partWidth">The width of each of the smaller textures that will be contained in the returned array.</param>
|
||||||
|
/// <param name="partHeight">The height of each of the smaller textures that will be contained in the returned array.</param>
|
||||||
|
public static Texture2D[] SplitFlat(this Texture2D original, int partWidth, int partHeight, int offsetWidth, int offsetHeight, out int xCount, out int yCount)
|
||||||
|
{
|
||||||
|
yCount = original.Height / partHeight; //+ (partHeight % original.Height == 0 ? 0 : 1);//The number of textures in each horizontal row
|
||||||
|
xCount = original.Width / partWidth; //+(partWidth % original.Width == 0 ? 0 : 1);//The number of textures in each vertical column
|
||||||
|
Texture2D[] r = new Texture2D[xCount * yCount];//Number of parts = (area of original) / (area of each part).
|
||||||
|
int dataPerPart = partWidth * partHeight;//Number of pixels in each of the split parts
|
||||||
|
|
||||||
|
//Get the pixel data from the original texture:
|
||||||
|
Color[] originalData = new Color[original.Width * original.Height];
|
||||||
|
original.GetData<Color>(originalData);
|
||||||
|
|
||||||
|
int index = 0;
|
||||||
|
for (int y = 0; y < yCount * partHeight; y += (partHeight + offsetHeight))
|
||||||
|
for (int x = 0; x < xCount * partWidth; x += (partWidth + offsetWidth))
|
||||||
|
{
|
||||||
|
//The texture at coordinate {x, y} from the top-left of the original texture
|
||||||
|
Texture2D part = new Texture2D(original.GraphicsDevice, partWidth, partHeight);
|
||||||
|
//The data for part
|
||||||
|
Color[] partData = new Color[dataPerPart];
|
||||||
|
|
||||||
|
//Fill the part data with colors from the original texture
|
||||||
|
for (int py = 0; py < partHeight; py++)
|
||||||
|
for (int px = 0; px < partWidth; px++)
|
||||||
|
{
|
||||||
|
int partIndex = px + py * partWidth;
|
||||||
|
//If a part goes outside of the source texture, then fill the overlapping part with Color.Transparent
|
||||||
|
if (y + py >= original.Height || x + px >= original.Width)
|
||||||
|
partData[partIndex] = Color.Transparent;
|
||||||
|
else
|
||||||
|
partData[partIndex] = originalData[(x + px) + (y + py) * original.Width];
|
||||||
|
}
|
||||||
|
|
||||||
|
//Fill the part with the extracted data
|
||||||
|
part.SetData<Color>(partData);
|
||||||
|
//Stick the part in the return array:
|
||||||
|
r[index++] = part;
|
||||||
|
}
|
||||||
|
//Return the array of parts.
|
||||||
|
return r;
|
||||||
|
}
|
||||||
|
|
||||||
/// http://forums.create.msdn.com/forums/t/79258.aspx
|
/// http://forums.create.msdn.com/forums/t/79258.aspx
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Combines one texture with another
|
/// Combines one texture with another
|
||||||
|
@ -188,13 +188,12 @@ namespace GameStateManagement
|
|||||||
PlayerIndex i;
|
PlayerIndex i;
|
||||||
if (input.IsNewButtonPress(Buttons.Back, PlayerIndex.One, out i) || input.IsNewKeyPress(Keys.Escape, PlayerIndex.One, out i))
|
if (input.IsNewButtonPress(Buttons.Back, PlayerIndex.One, out i) || input.IsNewKeyPress(Keys.Escape, PlayerIndex.One, out i))
|
||||||
{
|
{
|
||||||
if (this.ScreenState == GameStateManagement.ScreenState.Active && this.TransitionPosition == 0 && this.TransitionAlpha == 1)
|
//if (this.ScreenState == GameStateManagement.ScreenState.Active && this.TransitionPosition == 0 && this.TransitionAlpha == 1)
|
||||||
{ //Give the screens a chance to transition
|
//{ //Give the screens a chance to transition
|
||||||
|
|
||||||
CleanUp();
|
CleanUp();
|
||||||
ExitScreen();
|
ExitScreen();
|
||||||
|
|
||||||
}
|
//}
|
||||||
}
|
}
|
||||||
base.HandleInput(gameTime, input);
|
base.HandleInput(gameTime, input);
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user