public void EndShoot(MyShootActionEnum action) { MyAnalyticsHelper.ReportActivityEnd(this.Owner, "Drilling"); m_drillBase.StopDrill(); m_tryingToDrill = false; SinkComp.Update(); }
private void UpdatePower() { bool shouldBePowered = ShouldBePowered(); if (shouldBePowered != m_wasPowered) { m_wasPowered = shouldBePowered; SinkComp.Update(); } }
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; } }
public void OnControlReleased() { m_drillBase.IgnoredEntities.Remove(m_owner); m_drillBase.StopDrill(); m_tryingToDrill = false; SinkComp.Update(); m_drillBase.OutputInventory = null; if (m_owner.ControllerInfo.IsLocallyControlled()) { m_oreDetectorBase.Clear(); } m_owner = null; }
private bool DoDrillAction(bool collectOre) { m_tryingToDrill = true; SinkComp.Update(); if (!SinkComp.IsPowered) { return(false); } m_lastTimeDrilled = MySandboxGame.TotalGamePlayTimeInMilliseconds; m_drillBase.Drill(collectOre); m_spikeLastUpdateTime = MySandboxGame.TotalGamePlayTimeInMilliseconds; return(true); }
private bool DoDrillAction(bool collectOre) { m_tryingToDrill = true; SinkComp.Update(); if (!SinkComp.IsPoweredByType(MyResourceDistributorComponent.ElectricityId)) { return(false); } m_lastTimeDrilled = MySandboxGame.TotalGamePlayTimeInMilliseconds; m_drillBase.Drill(collectOre, assignDamagedMaterial: true, speedMultiplier: m_speedMultiplier); m_spikeLastUpdateTime = MySandboxGame.TotalGamePlayTimeInMilliseconds; return(true); }
public override void UpdateAfterSimulation() { base.UpdateAfterSimulation(); //MyRenderProxy.DebugDrawSphere(m_gunBase.PositionMuzzleWorld, 0.2f, new Vector3(1, 0, 0), 1.0f, true); if (Owner == null) { return; } Vector3 weaponLocalPosition = Owner.GetLocalWeaponPosition(); Vector3D localDummyPosition = m_gunBase.GetMuzzleLocalPosition(); MatrixD weaponWorld = WorldMatrix; Vector3D localDummyPositionRotated; Vector3D.Rotate(ref localDummyPosition, ref weaponWorld, out localDummyPositionRotated); m_raycastComponent.SetPointOfReference(Owner.PositionComp.GetPosition() + weaponLocalPosition + localDummyPositionRotated); SinkComp.Update(); if (IsShooting && !SinkComp.IsPowered) { EndShoot(MyShootActionEnum.PrimaryAction); } UpdateEffect(); CheckEffectType(); if (Owner != null && Owner.ControllerInfo.IsLocallyHumanControlled()) { if (MySession.Static.SurvivalMode && (MySession.Static.GetCameraControllerEnum() != MyCameraControllerEnum.Spectator || MyFinalBuildConstants.IS_OFFICIAL)) { var character = ((MyCharacter)this.CharacterInventory.Owner); MyCubeBuilder.Static.MaxGridDistanceFrom = character.PositionComp.GetPosition() + character.WorldMatrix.Up * 1.8f; } else { MyCubeBuilder.Static.MaxGridDistanceFrom = null; } } //MyTrace.Watch("MyEngineerToolBase.RequiredPowerInput", RequiredPowerInput); }
public virtual void Shoot(MyShootActionEnum action, Vector3 direction, string gunAction) { if (action != MyShootActionEnum.PrimaryAction) { return; } m_lastTimeShoot = MySandboxGame.TotalGamePlayTimeInMilliseconds; m_shootFrameCounter++; m_tryingToShoot = true; SinkComp.Update(); if (!SinkComp.IsPowered) { CurrentEffect = 0; return; } m_activated = true; var targetBlock = GetTargetBlock(); if (targetBlock == null) { CurrentEffect = 2; ShakeAmount = m_handItemDef.ShakeAmountNoTarget; } int currentTime = MySandboxGame.TotalGamePlayTimeInMilliseconds; if (targetBlock != null) { ShakeAmount = m_handItemDef.ShakeAmountTarget; CurrentEffect = 1; } return; }
protected override void OnEnabledChanged() { base.OnEnabledChanged(); SinkComp.Update(); }
void ComponentStack_IsFunctionalChanged() { SinkComp.Update(); }
public void EndShoot(MyShootActionEnum action) { m_drillBase.StopDrill(); m_tryingToDrill = false; SinkComp.Update(); }
public override void UpdateAfterSimulation() { base.UpdateAfterSimulation(); //MyRenderProxy.DebugDrawSphere(m_gunBase.PositionMuzzleWorld, 0.2f, new Vector3(1, 0, 0), 1.0f, true); m_targetGrid = null; m_targetDestroyable = null; m_targetFloatingObject = null; m_targetCharacter = null; if (Owner == null) { return; } var entitiesInRange = m_sensor.EntitiesInRange; int closestEntityIndex = 0; float closestDistance = float.MaxValue; if (entitiesInRange != null && entitiesInRange.Count > 0) { int i = 0; foreach (var entity in entitiesInRange.Values) { var targetGrid = entity.Entity as MyCubeGrid; var distanceSq = (float)Vector3D.DistanceSquared(entity.DetectionPoint, m_gunBase.GetMuzzleWorldPosition()); if (entity.Entity.Physics != null && entity.Entity.Physics.Enabled) { if (distanceSq < closestDistance) { m_targetGrid = targetGrid; m_targetDistanceSq = (float)distanceSq; m_targetDestroyable = entity.Entity as IMyDestroyableObject; m_targetFloatingObject = entity.Entity as MyFloatingObject; m_targetCharacter = entity.Entity as MyCharacter; closestDistance = m_targetDistanceSq; closestEntityIndex = i; } } ++i; } } if (m_targetGrid != null) { m_targetPosition = entitiesInRange.Values.ElementAt(closestEntityIndex).DetectionPoint; var invWorld = m_targetGrid.PositionComp.GetWorldMatrixNormalizedInv(); var gridLocalPos = Vector3D.Transform(m_targetPosition, invWorld); var gridSpacePos = Vector3I.Round(gridLocalPos / m_targetGrid.GridSize); m_targetGrid.FixTargetCube(out m_targetCube, gridLocalPos / m_targetGrid.GridSize); var head = PositionComp.WorldMatrix; var aimToMuzzle = Vector3D.Normalize(m_targetPosition - m_gunBase.GetMuzzleWorldPosition()); if (Vector3.Dot(aimToMuzzle, head.Forward) > 0) { m_targetDistanceSq = 0; } else { m_targetDistanceSq = (float)Vector3D.DistanceSquared(m_targetPosition, m_gunBase.GetMuzzleWorldPosition()); } } SinkComp.Update(); if (IsShooting && !SinkComp.IsPowered) { EndShoot(MyShootActionEnum.PrimaryAction); } UpdateEffect(); CheckEffectType(); if (Owner != null && Owner.ControllerInfo.IsLocallyHumanControlled()) { if (MySession.Static.SurvivalMode && (MySession.GetCameraControllerEnum() != MyCameraControllerEnum.Spectator || MyFinalBuildConstants.IS_OFFICIAL)) { var character = ((MyCharacter)this.CharacterInventory.Owner); MyCubeBuilder.Static.MaxGridDistanceFrom = character.PositionComp.GetPosition() + character.WorldMatrix.Up * 1.8f; } else { MyCubeBuilder.Static.MaxGridDistanceFrom = null; } } //MyTrace.Watch("MyEngineerToolBase.RequiredPowerInput", RequiredPowerInput); }