axiosengine 

axiosengine Commit Details


Date:2012-05-05 19:34:37 (12 years 5 months ago)
Author:Natalie Adams
Branch:master
Commit:eceddb52af40993a9e73c3e9483080309f5b024d
Parents: d68b7d5ad36e1580b4b64cbd3cad35dbe79a6321
Message:* 1.0.1.5 - 5/5/2012 * - Adding SplitFlat extension for Texture2D

Changes:

File differences

axios/Axios_settings.cs
6262
6363
6464
65
66
67
68
69
70
6571
6672
6773
* 1.0.1.3 - 4/7/2012
* - Adding a check in the AxiosTimer update to only tick if the game is active
*
* 1.0.1.4 - 4/27/2012
* - Merging the new GSM
*
* 1.0.1.5 - 5/5/2012
* - Adding SplitFlat extension for Texture2D
*
*/
using System.Reflection;
axios/Engine/Extensions/Texture2D.cs
132132
133133
134134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
135183
136184
137185
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, 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)
for (int x = 0; x < xCount * partWidth; x += partWidth)
{
//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
/// <summary>
/// Combines one texture with another

Archive Download the corresponding diff file

Branches

Number of commits:
Page rendered in 0.08369s using 14 queries.