public override void Execute()
        {
            base.Execute();
            IntPosition     position       = new IntPosition(Units.GridToBoardX(this.gridX), Units.GridToBoardZ(this.gridZ));
            IDataController dataController = Service.Get <IDataController>();
            List <IAssetVO> assets         = new List <IAssetVO>();

            ProjectileUtils.AddTroopProjectileAssets(this.troopUid, assets, dataController);
            Service.Get <ProjectileViewManager>().LoadProjectileAssetsAndCreatePools(assets);
            TroopTypeVO    troop          = dataController.Get <TroopTypeVO>(this.troopUid);
            TroopSpawnData troopSpawnData = new TroopSpawnData(troop, position, TroopSpawnMode.LeashedToSpawnPoint, this.amount);

            Service.Get <SimTimerManager>().CreateSimTimer(1500u, false, new TimerDelegate(this.OnSpawnTimer), troopSpawnData);
            this.parent.ChildComplete(this);
        }