Beispiel #1
0
 public void AddAuxBullet(PlayerBulletData bulletData)
 {
     if (playerWeaponAgent.AuxCache.BulletList != null)
     {
         playerWeaponAgent.AuxCache.BulletList.Add(bulletData);
     }
 }
        public void OnBulletFire(PlayerWeaponController controller, WeaponSideCmd cmd)
        {
            //            DebugUtil.MyLog("[seq:{1}]MuzzleP3Position:{0}",controller.RelatedFirePos.MuzzleP3Position,cmd.UserCmd.Seq);
            var bulletCfg = controller.HeldWeaponAgent.BulletCfg;

            AssertUtility.Assert(bulletCfg != null);
            var cmdSeq   = cmd.UserCmd.Seq;
            var fireAmmu = controller.RelatedCameraSNew.IsAiming() ? sightFireAmmu : normalFireAmmu;

            // 射出子弹
            for (int i = 0; i < bulletCfg.HitCount; i++)
            {
                var bulletData = PlayerBulletData.Allocate();
                bulletData.Dir =
                    PrecisionsVector3.MakePrecisionsV(
                        fireAmmu.GetFireDir(cmdSeq + i, controller, cmd.UserCmd.Seq), 3);
                var viewPos = PrecisionsVector3.MakePrecisionsV(fireAmmu.GetFireViewPosition(controller), 3);
                bulletData.ViewPosition = PrecisionsVector3.MakeRoundPrecisionsV(viewPos, 3);
                //枪口位置取原始精度
                bulletData.EmitPosition = fireAmmu.GetFireEmitPosition(controller);
                controller.AddAuxBullet(bulletData);
                // DebugUtil.AppendShootText(cmd.UserCmd.Seq, "[Bullet Fire]{0}", bulletData.ToStringExt());
            }

            controller.AfterAttack();
        }
Beispiel #3
0
 public void AddAuxBullet(PlayerBulletData bulletData)
 {
     if (RelatedWeaponAux.BulletList == null)
     {
         return;
     }
     RelatedWeaponAux.BulletList.Add(bulletData);
 }
Beispiel #4
0
 internal void AddAuxBullet(PlayerBulletData bulletData)
 {
     if (WeaponAux.BulletList == null)
     {
         return;
     }
     WeaponAux.BulletList.Add(bulletData);
 }
        public static BulletEntity CreateBulletEntity(PlayerBulletData bulletData, EntityKey owner)
        {
            int bulletEntityId = entityIdGenerator.GetNextEntityId();
            var bulletEntity   = bulletContext.CreateEntity();

            bulletEntity.AddEntityKey(new EntityKey(bulletEntityId, (int)EEntityType.Bullet));
            bulletEntity.AddPosition();
            bulletEntity.position.Value = bulletData.ViewPosition;
            bulletEntity.AddOwnerId(owner);
            bulletEntity.AddBulletData();
            bulletEntity.bulletData.StartPoint = bulletData.ViewPosition;
            bulletEntity.bulletData.EmitPoint  = bulletData.EmitPosition;
            bulletEntity.bulletData.StartDir   = bulletData.Dir;
            bulletEntity.isFlagSyncNonSelf     = true;
            bulletEntity.AddLifeTime(DateTime.Now, SharedConfig.BulletLifeTime); // in case user logout
            IBulletEntityAgent entityAgent = new BulletEntityAgent(bulletEntity);

            bulletEntity.AddBulletRuntime(entityAgent, true);
            bulletData.ReleaseReference();
            return(bulletEntity);
        }
Beispiel #6
0
        public void OnBulletFire(PlayerWeaponController controller, WeaponSideCmd cmd)
        {
            var bulletCfg = controller.HeldWeaponAgent.BulletCfg;

            AssertUtility.Assert(bulletCfg != null);
            var cmdSeq           = cmd.UserCmd.Seq;
            var runTimeComponent = controller.HeldWeaponAgent.RunTimeComponent;

            _bulletInfoProvider.Prepare(controller);
            // 射出子弹
            for (int i = 0; i < bulletCfg.HitCount; i++)
            {
                var bulletData = PlayerBulletData.Allocate();
                bulletData.Dir = _bulletInfoProvider.GetFireDir(cmdSeq + i, controller);
                runTimeComponent.LastBulletDir = bulletData.Dir;
                bulletData.ViewPosition        = _bulletInfoProvider.GetFireViewPosition(controller);
                bulletData.EmitPosition        = _bulletInfoProvider.GetFireEmitPosition(controller);
                controller.AddAuxBullet(bulletData);
            }
            controller.AfterAttack();
        }