or you can use a shader to animate the sprite like I did, then you can use rows and columns to keep texture size below limits. I used the following snippet in the pixel shader to animate the sprite LODs of my RTS units (animation frames stored in columns) and use to the correct animation sequence according to camera and character angle difference (stored as direction 0-7, where direction = angle/45), see comments at the end of lines placed a bit far:

to get actual values from entity skill:
Code:
float4 vecSkill41;							// x frame, y width, z direction, w height


pixel shader uv calculation:
Code:
//----------------------------------------------------------
// texture - keep its alpha afterwards
	
float2 Tile = 0;
Tile.x = frac(In.Tex.x * vecSkill41.y + floor(vecSkill41.x) * vecSkill41.y);				// x frame 0..7, 			y unit-width, 			frac for safety				frame is fine with floor(vecTime.w)
Tile.y = frac(In.Tex.y * vecSkill41.w + vecSkill41.z * vecSkill41.w);						// z direction 0..7, 	w unit-height, 		frac for safety
	
float4 Color = tex2D(colorSampler, Tile);										
   
//----------------------------------------------------------



Free world editor for 3D Gamestudio: MapBuilder Editor