private void RenderBattleEntities(IList <BattleEntity> allEntities) { //Render all BattleEntities normally for (int i = allEntities.Count - 1; i >= 0; i--) { if (allEntities[i].HasCharge() == true) { ChargedEntities.Add(allEntities[i]); continue; } allEntities[i].Draw(); } //End batch for the set drawn SpriteRenderer.Instance.EndBatch(SpriteRenderer.Instance.spriteBatch); if (UtilityGlobals.IListIsNullOrEmpty(ChargedEntities) == false) { Effect chargeEffect = AssetManager.Instance.ChargeShader; Texture2D chargeShaderTex = AssetManager.Instance.ChargeShaderTex; //Render the Charged BattleEntities with the Charge shader for (int i = 0; i < ChargedEntities.Count; i++) { BattleEntity chargedEntity = ChargedEntities[i]; Texture2D spriteSheet = chargedEntity.AnimManager.CurrentAnim.SpriteSheet; //Set effect information Vector2 dimensionRatio = new Vector2(chargeShaderTex.Width, chargeShaderTex.Height) / new Vector2(spriteSheet.Width, spriteSheet.Height); chargeEffect.Parameters["chargeTex"].SetValue(chargeShaderTex); chargeEffect.Parameters["chargeAlpha"].SetValue(RenderingGlobals.ChargeShaderAlphaVal); chargeEffect.Parameters["chargeOffset"].SetValue(new Vector2(0f, RenderingGlobals.ChargeShaderTexOffset)); chargeEffect.Parameters["chargeTexRatio"].SetValue(dimensionRatio.Y); chargeEffect.Parameters["objFrameOffset"].SetValue(spriteSheet.GetTexCoordsAt(chargedEntity.AnimManager.CurrentAnim.CurFrame.DrawRegion)); //Render with the shader SpriteRenderer.Instance.BeginBatch(SpriteRenderer.Instance.spriteBatch, BlendState.AlphaBlend, null, chargeEffect, Camera.Instance.Transform); chargedEntity.Draw(); SpriteRenderer.Instance.EndBatch(SpriteRenderer.Instance.spriteBatch); } } }