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(); }
public void AddAuxBullet(PlayerBulletData bulletData) { if (RelatedWeaponAux.BulletList == null) { return; } RelatedWeaponAux.BulletList.Add(bulletData); }
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); }
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(); }