Ejemplo n.º 1
0
        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);
                }
            }
        }