public BlasterProjectile(BlasterProjectile copy)
     : base(copy)
 {
 }
 //public override int CalculateApproxStatsMaxNEnemies
 //{
 //    get
 //    {
 //        return ((BlastProjectile)Projectile).NumberOfPenetratableUnits + 1;
 //    }
 //}
 //public override AbilityStats CalculateApproxStats(int rageLevel)
 //{
 //    var nEnemies = CalculateApproxStatsMaxNEnemies;
 //    float damage = 0;
 //    float time = 0;
 //    int nAttacks = 0;
 //    var p = new BlasterProjectile();
 //    var bh = (SingleTargetDamage)p.UnitHitAction;
 //    for (int i = 0; i < 1000; i++)
 //    {
 //        float d = (1 + p.NumberOfPenetratableUnits) * bh.Damage;
 //        nAttacks++;
 //        damage += d;
 //        time += Math.Max(Cooldown + InitDelay, TotalDuration);
 //    }
 //    return new AbilityStats
 //    {
 //        DPS = damage / time,
 //        AttacksPerSecond = nAttacks / time,
 //        AvgDamagePerHit = (damage / (float)nEnemies) / (float)nAttacks
 //    };
 //}
 protected override void StartEffectivePerform()
 {
     base.StartEffectivePerform();
     var velocity =
         Vector3.Normalize(TargetPosition - Performer.Translation) * 15 +
         Vector3.UnitZ * 20;
     var proj = new BlasterProjectile
     {
         MainGraphic = new MetaModel
         {
             XMesh = new MeshFromFile("Models/Props/BlasterProjectile1.x"),
             Texture = new TextureFromFile("Models/Props/BlasterProjectile1.png"),
             SpecularTexture = new TextureFromFile("Models/Props/CannonballSpecular1.png"),
             World = Matrix.Scaling(0.06f, 0.06f, 0.063f) * SkinnedMesh.InitSkinnedMeshFromMaya,
             Visible = Priority.High,
             CastShadows = global::Graphics.Content.Priority.Low,
             ReceivesShadows = Priority.High,
             ReceivesSpecular = Priority.High,
         },
         TimeToLive = 9999,
     };
     var or = Matrix.RotationZ(Performer.LookatDir);
     proj.Translation = Performer.Translation + Vector3.TransformCoordinate(proj.Translation, or) + Vector3.UnitZ;
     proj.Velocity = velocity;
     proj.Acceleration = -Vector3.UnitZ*100;
     proj.Scale = new Vector3(3, 3, 3);
     proj.Rotation =
             Quaternion.RotationMatrix(Matrix.RotationZ(
             (float)(Common.Math.AngleFromVector3XY(velocity))));
     proj.Performer = Performer;
     Game.Instance.Scene.Add(proj);
 }