public override void SimulateUpdateAlways_EnhancementEnable() { try { if (!effected) { if (AddSpeedKey.IsPressed || AddSpeedKey.EmulationPressed()) { Speed += ChangeSpeedValue.Value; lastSpeed = Speed; } if (ReduceSpeedKey.IsPressed || ReduceSpeedKey.EmulationPressed()) { Speed -= ChangeSpeedValue.Value; lastSpeed = Speed; } } } catch { } if (toggleToggle.IsActive) { if (effectKey.IsPressed || effectKey.EmulationPressed()) { effected = !effected; setValue(); } } else { if (effectKey.IsHeld || effectKey.EmulationHeld()) { effected = true; } else { effected = false; } setValue(); } void setValue() { Speed = effected ? 0f : lastSpeed; if (dragTogetherToggle.IsActive) { var rigi = GetComponent <Rigidbody>(); rigi.drag = effected ? 0f : defaultDrag; rigi.angularDrag = effected ? 0f : defaultAngularDrag; } } }
public override void SimulateFixedUpdate_EnhancementEnabled() { base.SimulateFixedUpdate_EnhancementEnabled(); if (StatMaster.isClient) { return; } if (/*Hydraulic*/ HydraulicToggle.IsActive) { float?target = null; CalculationTarget(); if (target != null) { SuspensionMoveTowards((float)target, /*Feed*/ FeedSlider.Value); } void CalculationTarget() { bool pressed = false; if (ExtendKey.IsHeld || ExtendKey.EmulationHeld()) { pressed = true; target = -/*ExtendLimit*/ ExtendLimitSlider.Value; } if (ShrinkKey.IsHeld || ShrinkKey.EmulationHeld()) { pressed = true; target = /*RetractLimit*/ ShrinkLimitSlider.Value; } if (/*R2C*/ R2CToggle.IsActive && !pressed && ConfigurableJoint.targetPosition != Vector3.zero) { target = 0f; } } } void SuspensionMoveTowards(float target, float feed, float delta = 0.005f) { RB.WakeUp(); ConfigurableJoint.targetPosition = Vector3.MoveTowards(ConfigurableJoint.targetPosition, new Vector3(target, 0, 0), feed * delta); } }
public override void SimulateUpdateAlways_EnhancementEnable() { if (fixedCameraController?.activeCamera?.CompositeTracker3 == smoothLook) { if (firstPerson) { Camera activeCam = mouseOrbit.cam; if (zoomControlModeIndex == 0) { if (Input.GetAxis("Mouse ScrollWheel") != 0f) { newCamFOV = Mathf.Clamp(activeCam.fieldOfView - Mathf.Sign(Input.GetAxis("Mouse ScrollWheel")) * zoomSpeed, 1, orgCamFOV); } } else { if (ZoomInKey.IsHeld || ZoomInKey.EmulationHeld()) { newCamFOV = Mathf.Clamp(activeCam.fieldOfView - zoomSpeed, 1, orgCamFOV); } if (ZoomOutKey.IsHeld || ZoomOutKey.EmulationHeld()) { newCamFOV = Mathf.Clamp(activeCam.fieldOfView + zoomSpeed, 1, orgCamFOV); } } if (activeCam.fieldOfView != newCamFOV) { activeCam.fieldOfView = Mathf.SmoothStep(activeCam.fieldOfView, newCamFOV, camFOVSmooth); } } if (cameraLookAtToggled) { if (!activateTimeRecorded) { switchTime = Time.time; activateTimeRecorded = true; } if (AutoLookAtKey.IsReleased || AutoLookAtKey.EmulationReleased()) { autoSearch = !autoSearch; switchTime = Time.time; } if (PauseTrackingKey.IsReleased || PauseTrackingKey.EmulationReleased()) { pauseTracking = !pauseTracking; } if (LockTargetKey.IsReleased || LockTargetKey.EmulationReleased()) { target = null; if (autoSearch) { targetAquired = searchStarted = false; CameraRadarSearch(); } else { if (StatMaster.isClient) { blockColliders.Clear(); foreach (var player in Playerlist.Players) { if (!player.isSpectator && player.machine.isSimulating) { blockColliders.AddRange(player.machine.SimulationMachine.GetComponentsInChildren <Collider>(true)); } } foreach (var collider in blockColliders) { collider.enabled = true; } } // Aquire the target to look at Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition); float manualSearchRadius = 1.25f; RaycastHit[] hits = Physics.SphereCastAll(ray, manualSearchRadius, Mathf.Infinity); Physics.Raycast(ray, out RaycastHit rayHit); if (hits.Length > 0) { for (int i = 0; i < hits.Length; i++) { if (hits[i].transform.gameObject.GetComponent <BlockBehaviour>()) { if ((hits[i].transform.position - fixedCamera.transform.position).magnitude >= safetyRadiusManual) { target = hits[i].transform; pauseTracking = false; break; } } } if (target == null) { for (int i = 0; i < hits.Length; i++) { if (hits[i].transform.gameObject.GetComponent <LevelEntity>()) { if ((hits[i].transform.position - fixedCamera.transform.position).magnitude >= safetyRadiusManual) { target = hits[i].transform; break; } } } } } if (target == null && rayHit.transform != null) { if ((rayHit.transform.position - fixedCamera.transform.position).magnitude >= safetyRadiusManual) { target = rayHit.transform; pauseTracking = false; } } if (StatMaster.isClient) { foreach (var collider in blockColliders) { collider.enabled = false; } } } } } if (fixedCameraController.activeCamera != fixedCamera) { if (activateTimeRecorded) { activateTimeRecorded = false; } } } }
public override void SimulateUpdateAlways_EnhancementEnable() { if (gameObject.activeInHierarchy) { if (!GroupFireKey.Ignored) { if ((GroupFireKey.IsHeld || GroupFireKey.EmulationHeld()) && !StatMaster.isClient) { if (!RocketsController.Instance.launchStarted) { StartCoroutine(RocketsController.Instance.LaunchRocketFromGroup(rocket.ParentMachine.PlayerID, GroupFireKey.GetKey(0))); } } } if (radar != null) { if (!StatMaster.isClient) { radar.Switch = rocket.hasFired; } if (GuidedRocketToggle.IsActive) { //When toggle auto aim key is released, change the auto aim status if (ManualOverrideKey.IsReleased || ManualOverrideKey.EmulationReleased()) { if (radar.RadarType == RadarScript.RadarTypes.ActiveRadar) { //radar.meshRenderer.enabled = radar.canBeOverridden && ShowRadarToggle.IsActive && radar.Switch; radar.DisplayRadarZone = radar.canBeOverridden && ShowRadarToggle.IsActive && radar.Switch; //radar.meshCollider.enabled = radar.canBeOverridden && radar.Switch; radar.canBeOverridden = !radar.canBeOverridden; if (!radar.canBeOverridden) { radar.ClearTarget(false); } } } if (LockTargetKey.IsPressed || LockTargetKey.EmulationPressed()) { if (radar.RadarType == RadarScript.RadarTypes.ActiveRadar) { if (radar.canBeOverridden) { radar.SetTargetManual(); } else { //保留重新搜索目标的能力 radar.ClearTarget(false); } } } } } if (rocket.hasFired) { //Let rocket controller know the rocket is fired SendRocketFired(); if (!rocket.hasExploded) { if (GuidedRocketToggle.IsActive) { //Activate aerodynamic effect guideController.enableAerodynamicEffect = StabilityToggle.IsActive; //Record the launch time for the guide delay if (!launchTimeRecorded) { launchTimeRecorded = true; launchTime = Time.time; } //Rocket can be triggered after the time elapsed after firing is greater than guide delay if (Time.time - launchTime >= GuideDelaySlider.Value + 0.15f && TorqueSlider.Value > 0) { guideController.Switch = true; } //Proximity fuse behaviour if (ProximityFuzeToggle.IsActive) { if (radar.TargetDistance <= ProximityFuzeRangeSlider.Value + 1f) { StartCoroutine(RocketExplode()); } } } } } if (rocket.hasExploded && !rocketExploMsgSent) { Destroy(radarObject); Destroy(guideObject); if (HighExploToggle.IsActive) { StartCoroutine(RocketExplode()); } try { if (RocketsController.Instance.playerGroupedRockets.TryGetValue(StatMaster.isMP ? rocket.ParentMachine.PlayerID : 0, out Dictionary <KeyCode, HashSet <TimedRocket> > groupedRockets)) { if (groupedRockets.TryGetValue(GroupFireKey.GetKey(0), out HashSet <TimedRocket> rockets)) { rockets.Remove(rocket); } } } catch { } rocketExploMsgSent = true; } if (!NoSmokeToggle.IsActive) { var em = smokeTrail.emission; var r = em.rate; r.constant = /*TrailSmokeEmissionConstant*/ trailSmokePropertise.EmissionConstant; em.rate = r; smokeTrail.startLifetime = /*TrailSmokeLifetime*/ trailSmokePropertise.Lifetime; smokeTrail.startSize = /*TrailSmokeSize*/ trailSmokePropertise.Size; } } }