public override void SimulateUpdateAlways_EnhancementEnable() { if (StatMaster.isClient) { return; } if (SwitchKey.IsPressed || SwitchKey.EmulationPressed()) { //Effect = !Effect; EffectToggle.IsActive = !EffectToggle.IsActive; SetVelocityCap(/*Effect*/ EffectToggle.IsActive); } if (!/*Toggle*/ ToggleToggle.IsActive) { if (SwitchKey.IsReleased || SwitchKey.EmulationReleased()) { //Effect = !Effect; EffectToggle.IsActive = !EffectToggle.IsActive; SetVelocityCap(/*Effect*/ EffectToggle.IsActive); } } if (/*LiftIndicator*/ LiftIndicatorToggle.IsActive) { ////模拟速度向量转换到升力模块的坐标 //AD.xyz = Vector3.Scale(AD.Rigidbody.transform.InverseTransformDirection(SettingWindow.simulateVelocity_Vector), ad.AxisDrag); ////计算模拟速度向量模的平方 //ad.currentVelocitySqr = Mathf.Min(SettingWindow.simulateVelocity_Vector.sqrMagnitude, GetComponent<BlockBehaviour>().GetBlockID() == (int)BlockType.Wing ? 100 : 900); if (ConfigurableJoint != null) { liftVector = AD.Rigidbody.transform.TransformVector(AD.xyz * AD.currentVelocitySqr); LR.SetPosition(0, transform.TransformPoint(AD.Rigidbody.centerOfMass)); LR.SetPosition(1, transform.TransformPoint(AD.Rigidbody.centerOfMass) + liftVector); } else { LR.enabled = false; } } }
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; } } }