コード例 #1
0
ファイル: MyCubePlacer.cs プロジェクト: fluxit/SpaceEngineers
        public override void Shoot(MyShootActionEnum action, Vector3 direction, string gunAction)
        {
            if (MySession.Static.CreativeMode)
                return;

            base.Shoot(action, direction, gunAction);

            if (action == MyShootActionEnum.PrimaryAction && !m_firstShot)
            {
                if ((MySandboxGame.TotalGamePlayTimeInMilliseconds - m_lastKeyPress) >= 500)
                {
                    //MyRenderProxy.DebugDrawText2D(new Vector2(50.0f, 50.0f), "Holding cube placer", Color.Red, 1.0f);
                    // CH:TODO: This should probably be done only locally
                    var block = GetTargetBlock();
                    if (block != null)
                    {
                        MyDefinitionId welderDefinition = new MyDefinitionId(typeof(MyObjectBuilder_Welder));
                        if (Owner.CanSwitchToWeapon(welderDefinition))
                        {
                            Owner.SetupAutoswitch(new MyDefinitionId(typeof(MyObjectBuilder_Welder)), new MyDefinitionId(typeof(MyObjectBuilder_CubePlacer)));
                        }
                    }
                }
            }
        }
コード例 #2
0
        public override void Shoot(MyShootActionEnum action, Vector3 direction, string gunAction)
        {
            if (action != MyShootActionEnum.PrimaryAction)
                return;

            m_gunBase.Shoot(Parent.Physics.LinearVelocity);
        }
コード例 #3
0
        public override void Shoot(MyShootActionEnum action, Vector3 direction)
        {
            if (action != MyShootActionEnum.PrimaryAction)
                return;

            m_barrel.StartShooting();
        }
コード例 #4
0
     public override void Shoot(MyShootActionEnum action, Vector3 direction)
     {
         if (action != MyShootActionEnum.PrimaryAction)
             return;
 
         m_gunBase.Shoot(Vector3.Zero);
     }
コード例 #5
0
 public override void EndShoot(MyShootActionEnum action)
 {
     if (m_activated)
     {
         MyAnalyticsHelper.ReportActivityEnd(this.Owner, "Welding");
     }
     m_playedFailSound = false;
     base.EndShoot(action);
 }
コード例 #6
0
        public override void Shoot(MyShootActionEnum action, Vector3 direction, Vector3D?overrideWeaponPos, string gunAction)
        {
            if (action != MyShootActionEnum.PrimaryAction)
            {
                return;
            }

            m_gunBase.Shoot(Parent.Physics.LinearVelocity);
        }
コード例 #7
0
        public void EndShoot(MyShootActionEnum action = MyShootActionEnum.PrimaryAction)
        {
            if (MyFakes.SIMULATE_QUICK_TRIGGER)
            {
                return;
            }

            EndShootInternal(action);
        }
コード例 #8
0
        public override void Shoot(MyShootActionEnum action, Vector3 direction, string gunAction)
        {
            if (action != MyShootActionEnum.PrimaryAction)
            {
                return;
            }

            m_gunBase.Shoot(Vector3.Zero);
        }
コード例 #9
0
        public virtual void Shoot(MyShootActionEnum action, Vector3 direction, string gunAction)
        {
            m_shoot          = true;
            m_shootDirection = direction;
            m_lastTimeShoot  = MySandboxGame.TotalGamePlayTimeInMilliseconds;
            m_gunBase.ConsumeAmmo();

            NeedsUpdate |= MyEntityUpdateEnum.EACH_FRAME;
        }
コード例 #10
0
        public override void Shoot(MyShootActionEnum action, Vector3 direction, Vector3D?overrideWeaponPos, string gunAction)
        {
            if (action != MyShootActionEnum.PrimaryAction)
            {
                return;
            }

            m_barrel.StartShooting();
        }
コード例 #11
0
        public override void Shoot(MyShootActionEnum action, Vector3 direction, string gunAction)
        {
            base.Shoot(action, direction, gunAction);

            if (action == MyShootActionEnum.PrimaryAction && IsPreheated && Sync.IsServer && m_activated)
            {
                Grind();
            }
            return;
        }
コード例 #12
0
ファイル: MyShipDrill.cs プロジェクト: warex0/SpaceEngineers
        public void Shoot(MyShootActionEnum action, Vector3 direction, string gunAction)
        {
            if (action != MyShootActionEnum.PrimaryAction && action != MyShootActionEnum.SecondaryAction) return;

            WantsToDrill = true;
            m_wantsToCollect = action == MyShootActionEnum.PrimaryAction;
            ShakeAmount = 2.5f;

            ResourceSink.Update();
        }
コード例 #13
0
 public virtual void EndShoot(MyShootActionEnum action)
 {
     if (m_shotToolAction.HasValue)
     {
         if (m_shotToolAction.Value.HitDuration == 0)
         {
             m_shotToolAction = null;
         }
     }
 }
コード例 #14
0
        private void EndShootInternal(MyShootActionEnum action = MyShootActionEnum.PrimaryAction)
        {
            ShootEndMsg msg = new ShootEndMsg();

            msg.EntityId = SyncedEntityId;
            msg.Action   = action;

            MySession.Static.SyncLayer.SendMessageToServer(ref msg);

            StopShooting(action);
        }
コード例 #15
0
 public void EndShoot(MyShootActionEnum action)
 {
     if (action == MyShootActionEnum.PrimaryAction)
     {
         IsShooting = false;
     }
     else if (action == MyShootActionEnum.SecondaryAction)
     {
         m_canZoom = true;
     }
 }
コード例 #16
0
        public override bool CanShoot(MyShootActionEnum action, long shooter, out MyGunStatusEnum status)
        {
            status = MyGunStatusEnum.OK;

            if (action != MyShootActionEnum.PrimaryAction)
            {
                status = MyGunStatusEnum.Failed;
                return(false);
            }

            if (!m_gunBase.HasAmmoMagazines)
            {
                status = MyGunStatusEnum.Failed;
                return(false);
            }

            if ((MySandboxGame.TotalGamePlayTimeInMilliseconds - m_lastTimeShoot) < m_gunBase.ShootIntervalInMiliseconds)
            {
                status = MyGunStatusEnum.Cooldown;
                return(false);
            }

            if (!HasPlayerAccess(shooter))
            {
                status = MyGunStatusEnum.AccessDenied;
                return(false);
            }

            if (!PowerReceiver.IsPowered)
            {
                status = MyGunStatusEnum.OutOfPower;
                return(false);
            }

            if (!IsFunctional)
            {
                status = MyGunStatusEnum.NotFunctional;
                return(false);
            }

            if (!Enabled)
            {
                status = MyGunStatusEnum.Disabled;
                return(false);
            }

            if (!MySession.Static.CreativeMode && !m_gunBase.HasEnoughAmmunition()) //m_ammoInventory.GetItemAmount(m_currentAmmoMagazineId) < m_ammoPerShotConsumption)
            {
                status = MyGunStatusEnum.OutOfAmmo;
                return(false);
            }
            return(true);
        }
コード例 #17
0
        public void EndShoot(MyShootActionEnum action)
        {
            if (action != MyShootActionEnum.PrimaryAction)
            {
                return;
            }

            if (!Enabled)
            {
                StopShooting();
            }
        }
コード例 #18
0
 public void EndShoot(MyShootActionEnum action)
 {
     /*if ((int)action < 2)
      * {
      *  if (m_leftWeapon != null)
      *      m_leftWeapon.EndShoot(action);
      * }
      * else
      *  if (m_rightWeapon != null)
      *      m_rightWeapon.EndShoot((MyShootActionEnum)((int)action - 2));
      */
 }
コード例 #19
0
        public void BeginFailReaction(MyShootActionEnum action, MyGunStatusEnum status)
        {
            if (status == MyGunStatusEnum.OutOfAmmo && !MySession.Static.CreativeMode)
            {
                MyFixedPoint newAmount = m_ammoInventory.GetItemAmount(m_gunBase.CurrentAmmoMagazineId);

                if (newAmount < MyGunBase.AMMO_PER_SHOOT)
                {
                    StartNoAmmoSound();
                }
            }
        }
コード例 #20
0
        public void Shoot(MyShootActionEnum action, Vector3 direction, Vector3D?overrideWeaponPos, string gunAction)
        {
            if (action != MyShootActionEnum.PrimaryAction && action != MyShootActionEnum.SecondaryAction)
            {
                return;
            }

            WantsToDrill = true;
            //NeedsUpdate |= MyEntityUpdateEnum.EACH_FRAME | MyEntityUpdateEnum.EACH_10TH_FRAME;
            m_wantsToCollect = action == MyShootActionEnum.PrimaryAction;
            ShakeAmount      = 1.25f;
        }
コード例 #21
0
 public bool CanShoot(MyShootActionEnum action, long shooter, out MyGunStatusEnum status)
 {
     if (m_enabled)
     {
         status = MyGunStatusEnum.OK;
     }
     else
     {
         status = MyGunStatusEnum.Cooldown;
     }
     return(status == MyGunStatusEnum.OK);
 }
コード例 #22
0
        public override void Shoot(MyShootActionEnum action, Vector3 direction, string gunAction)
        {
            MyAnalyticsHelper.ReportActivityStartIf(!m_activated, this.Owner, "Grinding", "Character", "HandTools", "AngleGrinder", true);

            base.Shoot(action, direction, gunAction);

            if (action == MyShootActionEnum.PrimaryAction && IsPreheated && Sync.IsServer && m_activated)
            {
                Grind();
            }
            return;
        }
コード例 #23
0
        public void Shoot(MyShootActionEnum action, Vector3 direction)
        {
            if (action != MyShootActionEnum.PrimaryAction && action != MyShootActionEnum.SecondaryAction)
            {
                return;
            }

            m_wantsToDrill   = true;
            m_wantsToCollect = action == MyShootActionEnum.PrimaryAction;
            ShakeAmount      = 2.5f;

            PowerReceiver.Update();
        }
コード例 #24
0
        public override bool CanShoot(MyShootActionEnum action, long shooter, out MyGunStatusEnum status)
        {
            bool retval = base.CanShoot(action, shooter, out status);

            // No need for cooldown for the first shot
            if (status == MyGunStatusEnum.Cooldown && action == MyShootActionEnum.PrimaryAction && m_firstShot == true)
            {
                status = MyGunStatusEnum.OK;
                retval = true;
            }

            return(retval);
        }
コード例 #25
0
 public void EndShoot(MyShootActionEnum action)
 {
     if (action == MyShootActionEnum.PrimaryAction)
     {
         IsShooting          = false;
         m_shotsFiredInBurst = 0;
         m_gunBase.StopShoot();
     }
     else if (action == MyShootActionEnum.SecondaryAction)
     {
         m_canZoom = true;
     }
 }
コード例 #26
0
        public override bool CanShoot(MyShootActionEnum action, long shooter, out MyGunStatusEnum status)
        {
            bool retval = base.CanShoot(action, shooter, out status);

            // No need for cooldown for the first shot
            if (status == MyGunStatusEnum.Cooldown && action == MyShootActionEnum.PrimaryAction && m_firstShot == true)
            {
                status = MyGunStatusEnum.OK;
                retval = true;
            }

            return retval;
        }
コード例 #27
0
 public virtual void EndShoot(MyShootActionEnum action)
 {
     if (action == MyShootActionEnum.PrimaryAction)
     {
         CurrentEffect = 0;
         StopLoopSound();
         ShakeAmount     = 0.0f;
         m_tryingToShoot = false;
         SinkComp.Update();
         m_activated         = false;
         m_shootFrameCounter = 0;
     }
 }
コード例 #28
0
        public virtual void Shoot(MyShootActionEnum action, Vector3 direction)
        {
            m_shoot          = true;
            m_shootDirection = direction;
            m_lastTimeShoot  = MySandboxGame.TotalGamePlayTimeInMilliseconds;

            if (Sync.IsServer && !MySession.Static.CreativeMode)
            {
                m_gunBase.ConsumeAmmo();
            }

            NeedsUpdate |= MyEntityUpdateEnum.EACH_FRAME;
        }
コード例 #29
0
        internal void EndShoot(MyShootActionEnum action)
        {
            foreach (var weapon in m_currentGuns)
            {
                if (!weapon.EnabledInWorldRules)
                {
                    MyHud.Notifications.Add(MyNotificationSingletons.WeaponDisabledInWorldSettings);
                    continue;
                }

                weapon.EndShoot(action);
            }
        }
コード例 #30
0
        public override void Shoot(MyShootActionEnum action, Vector3 direction, string gunAction)
        {
            if (MySession.Static.CreativeMode)
            {
                return;
            }

            m_closeAfterBuild = false;

            base.Shoot(action, direction, gunAction);
            ShakeAmount = 0.0f;

            if (action == MyShootActionEnum.PrimaryAction && m_firstShot)
            {
                m_firstShot = false;

                m_lastKeyPress = MySandboxGame.TotalGamePlayTimeInMilliseconds;

                var definition = MyCubeBuilder.Static.HudBlockDefinition;
                if (definition == null)
                {
                    return;
                }

                if (!Owner.ControllerInfo.IsLocallyControlled())
                {
                    var val = Owner.IsUsing as MyCockpit;
                    if (val != null && !val.ControllerInfo.IsLocallyControlled())
                    {
                        return;
                    }
                }

                // Must have first component to start building
                if (MyCubeBuilder.Static.CanStartConstruction(Owner))
                {
                    bool placingGrid = MyCubeBuilder.Static.ShipCreationClipboard.IsActive;
                    m_closeAfterBuild = MyCubeBuilder.Static.AddConstruction(Owner) && placingGrid;
                    return;
                }
                else
                {
                    if (!MySession.Static.Battle && MySession.Static.IsAdminModeEnabled == false)
                    {
                        OnMissingComponents(definition);
                    }
                }
            }
        }
コード例 #31
0
        public override void Shoot(MyShootActionEnum action, Vector3 direction, Vector3D?overrideWeaponPos, string gunAction)
        {
            //small reloadable launcher have cooldown
            if ((BurstFireRate == m_numRocketsShot) && (MySandboxGame.TotalGamePlayTimeInMilliseconds < m_nextShootTime))
            {
                return;
            }
            if (BurstFireRate == m_numRocketsShot)
            {
                m_numRocketsShot = 0;
            }
            m_numRocketsShot++;

            base.Shoot(action, direction, overrideWeaponPos, gunAction);
        }
コード例 #32
0
        public override void Shoot(MyShootActionEnum action, Vector3 direction, Vector3D? overrideWeaponPos, string gunAction)
        {
            //small reloadable launcher have cooldown 
            if ((BurstFireRate == m_numRocketsShot) && (MySandboxGame.TotalGamePlayTimeInMilliseconds < m_nextShootTime))
            {
                return;
            }
            if (BurstFireRate == m_numRocketsShot)
            {
                m_numRocketsShot = 0;
            }
            m_numRocketsShot++;

            base.Shoot(action, direction, overrideWeaponPos, gunAction);
        }
コード例 #33
0
        public override bool CanShoot(MyShootActionEnum action, long shooter, out MyGunStatusEnum status)
        {
            status = MyGunStatusEnum.OK;
            if (action != MyShootActionEnum.PrimaryAction)
            {
                status = MyGunStatusEnum.Failed;
                return(false);
            }

            if (!m_gunBase.HasAmmoMagazines)
            {
                status = MyGunStatusEnum.Failed;
                return(false);
            }

            if ((MySandboxGame.TotalGamePlayTimeInMilliseconds - m_lastTimeShoot) < m_gunBase.ShootIntervalInMiliseconds / (CubeGrid.GridSizeEnum == MyCubeSize.Small ? 1 : 4))
            {
                status = MyGunStatusEnum.Cooldown;
                return(false);
            }

            if (!HasPlayerAccess(shooter))
            {
                status = MyGunStatusEnum.AccessDenied;
                return(false);
            }
            if (!PowerReceiver.IsPowered)
            {
                status = MyGunStatusEnum.OutOfPower;
                return(false);
            }
            if (!IsFunctional)
            {
                status = MyGunStatusEnum.NotFunctional;
                return(false);
            }
            if (!Enabled)
            {
                status = MyGunStatusEnum.Disabled;
                return(false);
            }
            if (!MySession.Static.CreativeMode && !m_gunBase.HasEnoughAmmunition())
            {
                status = MyGunStatusEnum.OutOfAmmo;
                return(false);
            }
            return(true);
        }
コード例 #34
0
        public override void Shoot(MyShootActionEnum action, Vector3 direction)
        {
            if (MySession.Static.CreativeMode)
            {
                return;
            }

            m_closeAfterBuild = false;

            base.Shoot(action, direction);
            ShakeAmount = 0.0f;

            if (action == MyShootActionEnum.PrimaryAction && m_firstShot)
            {
                m_firstShot = false;

                m_lastKeyPress = MySandboxGame.TotalGamePlayTimeInMilliseconds;

                var definition = MyCubeBuilder.Static.HudBlockDefinition;
                if (definition == null)
                {
                    return;
                }

                MyCharacter character = CharacterInventory.Owner as MyCharacter;
                Debug.Assert(character != null, "Character inventory was not owned by a character");

                if (character.ControllerInfo.IsRemotelyControlled())
                {
                    return;
                }

                // Must have first component to start building
                if (MyCubeBuilder.Static.CanStartConstruction(character))
                {
                    bool placingGrid = MyCubeBuilder.Static.ShipCreationClipboard.IsActive;
                    m_closeAfterBuild = MyCubeBuilder.Static.AddConstruction(character) && placingGrid;
                    return;
                }
                else
                {
                    if (!MySession.Static.Battle)
                    {
                        OnMissingComponents(definition);
                    }
                }
            }
        }
コード例 #35
0
 public void Shoot(MyShootActionEnum action, Vector3 direction, Vector3D?overrideWeaponPos, string gunAction)
 {
     if (action == MyShootActionEnum.PrimaryAction)
     {
         Shoot(direction, overrideWeaponPos);
         IsShooting = true;
     }
     else if (action == MyShootActionEnum.SecondaryAction)
     {
         if (MySession.Static.ControlledEntity == m_owner)
         {
             m_owner.Zoom(true);
             m_canZoom = false;
         }
     }
 }
コード例 #36
0
        public virtual bool CanShoot(MyShootActionEnum action, long shooter, out MyGunStatusEnum status)
        {
            if (action == MyShootActionEnum.PrimaryAction)
            {
                if (MySandboxGame.TotalGamePlayTimeInMilliseconds - m_lastTimeShoot < ToolCooldownMs)
                {
                    status = MyGunStatusEnum.Cooldown;
                    return(false);
                }
                status = MyGunStatusEnum.OK;
                return(true);
            }

            status = MyGunStatusEnum.Failed;
            return(false);
        }
コード例 #37
0
        public override void Shoot(MyShootActionEnum action, Vector3 direction, string gunAction)
        {
            if (MySession.Static.CreativeMode)
                return;

            m_closeAfterBuild = false;

            base.Shoot(action, direction, gunAction);
            ShakeAmount = 0.0f;

            if (action == MyShootActionEnum.PrimaryAction && m_firstShot)
            {
                m_firstShot = false;

                m_lastKeyPress = MySandboxGame.TotalGamePlayTimeInMilliseconds;

                var definition = MyCubeBuilder.Static.HudBlockDefinition;
                if (definition == null)
                {
                    return;
                }

                if (!Owner.ControllerInfo.IsLocallyControlled())
                {
                    var val = Owner.IsUsing as MyCockpit;
                    if (val != null && !val.ControllerInfo.IsLocallyControlled())
                        return;
                }

                // Must have first component to start building
                if (MyCubeBuilder.Static.CanStartConstruction(Owner))
                {
                    bool placingGrid = MyCubeBuilder.Static.ShipCreationClipboard.IsActive;
                    m_closeAfterBuild = MyCubeBuilder.Static.AddConstruction(Owner) && placingGrid;
                    return;
                }
                else
                {
                    if (!MySession.Static.Battle && MySession.Static.IsAdminModeEnabled==false)
                        OnMissingComponents(definition);
                }
            }
        }
コード例 #38
0
        public override void Shoot(MyShootActionEnum action, Vector3 direction)
        {
            if (MySession.Static.CreativeMode)
                return;

            m_closeAfterBuild = false;

            base.Shoot(action, direction);
            ShakeAmount = 0.0f;

            if (action == MyShootActionEnum.PrimaryAction && m_firstShot)
            {
                m_firstShot = false;

                m_lastKeyPress = MySandboxGame.TotalGamePlayTimeInMilliseconds;

                var definition = MyCubeBuilder.Static.HudBlockDefinition;
                if (definition == null)
                {
                    return;
                }

                MyCharacter character = CharacterInventory.Owner as MyCharacter;
                Debug.Assert(character != null, "Character inventory was not owned by a character");

                if (character.ControllerInfo.IsRemotelyControlled())
                    return;

                // Must have first component to start building
                if (MyCubeBuilder.Static.CanStartConstruction(character))
                {
                    bool placingGrid = MyCubeBuilder.Static.ShipCreationClipboard.IsActive;
                    m_closeAfterBuild = MyCubeBuilder.Static.AddConstruction(character) && placingGrid;
                    return;
                }
                else
                {
                    if (!MySession.Static.Battle)
                        OnMissingComponents(definition);
                }
            }
        }
コード例 #39
0
        override public void Shoot(MyShootActionEnum action, Vector3 direction, string gunAction)
        {
            //small reloadable launcher have cooldown 
            if ((NUM_ROCKETS_TO_COOLDOWN == m_numRocketsShot) && (COOLDOWN_TIME_MILISECONDS > MySandboxGame.TotalGamePlayTimeInMilliseconds - m_lastTimeShoot))
            {
                return;
            }
            if (NUM_ROCKETS_TO_COOLDOWN == m_numRocketsShot)
            {
                m_numRocketsShot = 0;
            }
            m_numRocketsShot++;

            base.Shoot(action, direction, gunAction);

            if (m_numRocketsShot == NUM_ROCKETS_TO_COOLDOWN)
            {
                MyHud.Notifications.Add(MISSILE_RELOAD_NOTIFICATION);
            }
        }
コード例 #40
0
 public void EndShoot(MyShootActionEnum action)
 {
     SyncObject.EndShoot(action);
 }
コード例 #41
0
        public void OnBeginShoot(MyShootActionEnum action)
        {
            if (ControllerInfo == null) return;
            if (m_currentWeapon == null) return;

            MyGunStatusEnum status = MyGunStatusEnum.OK;
            m_currentWeapon.CanShoot(action, ControllerInfo.ControllingIdentityId, out status);

            if (status == MyGunStatusEnum.OutOfAmmo)
            {
                // mw:TODO should auto change be implemented or not (uncomment code below)
                //if (m_currentWeapon.GunBase.SwitchAmmoMagazineToFirstAvailable())
                //    status = MyGunStatusEnum.OK;
            }

            if (status != MyGunStatusEnum.OK && status != MyGunStatusEnum.Cooldown)
            {
                ShootBeginFailed(action, status);
            }
        }
コード例 #42
0
 void ShootEndCallback(MyShootActionEnum action)
 {
     bool wouldCallStopTwice = Sync.IsServer && MyEventContext.Current.IsLocallyInvoked;
     if (!wouldCallStopTwice)
     {
         StopShooting(action);
     }
 }
コード例 #43
0
        public override void Shoot(MyShootActionEnum action, Vector3 direction)
        {
            base.Shoot(action, direction);

            if (action == MyShootActionEnum.PrimaryAction && IsPreheated && Sync.IsServer && m_activated)
            {
                Grind();
            }
            return;
        }
コード例 #44
0
        public void EndShootSync(MyShootActionEnum action = MyShootActionEnum.PrimaryAction)
        {
            if (MyFakes.SIMULATE_QUICK_TRIGGER) return;

            EndShootInternal(action);
        }
コード例 #45
0
 private void EndShootInternal(MyShootActionEnum action = MyShootActionEnum.PrimaryAction)
 {
     MyMultiplayer.RaiseEvent(this, x => x.ShootEndCallback, action);
     StopShooting(action);
 }
コード例 #46
0
        public void BeginShoot(MyShootActionEnum action)
        {
            if (m_currentWeapon == null || m_currentMovementState == MyCharacterMovementEnum.Died) return;

            if (!m_currentWeapon.EnabledInWorldRules)
            {
                MyHud.Notifications.Add(MyNotificationSingletons.WeaponDisabledInWorldSettings);
                return;
            }

            BeginShootSync(m_currentWeapon.DirectionToTarget(m_aimedPoint), action);
        }
コード例 #47
0
        private void ShootSuccessfulLocal(MyShootActionEnum action)
        {
            m_currentShotTime = SHOT_TIME;

            // moved to weapons/tools
            //m_currentCameraShakePower = Math.Max(m_currentCameraShakePower, MyUtils.GetRandomFloat(1.5f, m_currentWeapon.ShakeAmount));

            WeaponPosition.AddBackkick(m_currentWeapon.BackkickForcePerSecond * MyEngineConstants.UPDATE_STEP_SIZE_IN_SECONDS);

            var jetpack = JetpackComp;
            if (m_currentWeapon.BackkickForcePerSecond > 0 && ((jetpack != null && jetpack.Running) || m_isFalling))
            {
                Physics.AddForce(MyPhysicsForceType.APPLY_WORLD_IMPULSE_AND_WORLD_ANGULAR_IMPULSE,
                    -m_currentWeapon.BackkickForcePerSecond * (Vector3)(m_currentWeapon as MyEntity).WorldMatrix.Forward, (Vector3)PositionComp.GetPosition(), null);
            }
        }
コード例 #48
0
        public void BeginShoot(MyShootActionEnum action)
        {
            if (!SyncObject.IsWaitingForWeaponSwitch)
            {
                MyGunStatusEnum status = MyGunStatusEnum.OK;
                IMyGunObject<MyDeviceBase> gun = null;
                bool canShoot = GridSelectionSystem.CanShoot(action, out status, out gun);

                if (status != MyGunStatusEnum.OK)
                {
                    ShowShootNotification(status, gun);
                }

                SyncObject.BeginShoot((Vector3)PositionComp.WorldMatrix.Forward, action);
            }
        }
コード例 #49
0
        private void ShootFailedLocal(MyShootActionEnum action, MyGunStatusEnum status)
        {
            if (status == MyGunStatusEnum.OutOfAmmo)
            {
                ShowOutOfAmmoNotification();
            }

            m_currentWeapon.ShootFailReactionLocal(action, status);
        }
コード例 #50
0
 public bool IsShooting(MyShootActionEnum action)
 {
     return m_isShooting[(int)action];
 }
コード例 #51
0
        public void OnEndShoot(MyShootActionEnum action)
        {
            if (m_currentMovementState != MyCharacterMovementEnum.Died && m_currentWeapon != null)
            {
                m_currentWeapon.EndShoot(action);

                // CH:TODO: End on which shoot? Primary or secondary?
                if (m_endShootAutoswitch != null)
                {
                    SwitchToWeapon(m_endShootAutoswitch);
                    m_endShootAutoswitch = null;
                }
            }
        }
コード例 #52
0
 public void EndShoot(MyShootActionEnum action)
 {
     if (m_currentMovementState != MyCharacterMovementEnum.Died && m_currentWeapon != null)
     {
         EndShootSync(action);
     }
 }
コード例 #53
0
 public void OnBeginShoot(MyShootActionEnum action)
 {
     MyGunStatusEnum status = MyGunStatusEnum.OK;
     IMyGunObject<MyDeviceBase> gun = null;
     bool canShoot = GridSelectionSystem.CanShoot(action, out status, out gun);
     if (canShoot == false && status != MyGunStatusEnum.OK && status != MyGunStatusEnum.Cooldown)
     {
         ShootBeginFailed(action, status, gun);
     }
 }
コード例 #54
0
 private void StopShooting(MyShootActionEnum action)
 {
     m_isShooting[(int)action] = false;
     OnEndShoot(action);
 }
コード例 #55
0
 public void OnEndShoot(MyShootActionEnum action)
 {
     GridSelectionSystem.EndShoot(action);
 }
コード例 #56
0
        private void ShootBeginFailed(MyShootActionEnum action, MyGunStatusEnum status)
        {
            m_currentWeapon.BeginFailReaction(action, status);

            if (MySession.Static.ControlledEntity == this)
            {
                m_currentWeapon.BeginFailReactionLocal(action, status);
            }
        }
コード例 #57
0
 private void StartShooting(Vector3 direction, MyShootActionEnum action)
 {
     ShootDirection = direction;
     m_isShooting[(int)action] = true;
     OnBeginShoot(action);
 }
コード例 #58
0
 void ShootBeginCallback(Vector3 direction, MyShootActionEnum action)
 {
     bool wouldCallStartTwice = Sync.IsServer && MyEventContext.Current.IsLocallyInvoked;
     if (!wouldCallStartTwice)
     {
         StartShooting(direction, action);
     }
 }
コード例 #59
0
        public void BeginShootSync(Vector3 direction, MyShootActionEnum action = MyShootActionEnum.PrimaryAction)
        {
            StartShooting(direction, action);

            MyMultiplayer.RaiseEvent(this, x => x.ShootBeginCallback, direction, action);

            if (MyFakes.SIMULATE_QUICK_TRIGGER)
                EndShootInternal(action);
        }
コード例 #60
0
 private void ShootBeginFailed(MyShootActionEnum action, MyGunStatusEnum status, IMyGunObject<MyDeviceBase> failedGun)
 {
     failedGun.BeginFailReaction(action, status);
 }