public static Vector3 FromRelVel(this OWRigidbody reference, Vector3 relVel, Vector3 pos) => relVel + reference.GetPointVelocity(pos);
private RelativeLocationData relconstr(Vector3 body_position, Quaternion body_rotation, Vector3 body_velocity, OWRigidbody relativeBody, Transform relativeTransform = null) { if (relativeTransform == null) { relativeTransform = relativeBody.transform; } RelativeLocationData res = new RelativeLocationData(Locator.GetPlayerBody(), relativeBody); res.localPosition = relativeTransform.InverseTransformPoint(body_position); res.localRotation = Quaternion.Inverse(relativeTransform.rotation) * body_rotation; res.localRelativeVelocity = relativeTransform.InverseTransformDirection(body_velocity - relativeBody.GetPointVelocity(body_position)); return(res); }
public static Vector3 ToRelVel(this OWRigidbody reference, Vector3 vel, Vector3 pos) => vel - reference.GetPointVelocity(pos);
public static bool Moon_CheckPlayerFogProximity( QuantumMoon __instance, int ____stateIndex, float ____eyeStateFogOffset, ref bool ____isPlayerInside, float ____fogRadius, float ____fogThickness, float ____fogRolloffDistance, string ____revealFactID, OWRigidbody ____moonBody, bool ____hasSunCollapsed, Transform ____vortexReturnPivot, OWAudioSource ____vortexAudio, ref int ____collapseToIndex, VisibilityTracker ____visibilityTracker, QuantumFogEffectBubbleController ____playerFogBubble, QuantumFogEffectBubbleController ____shipLandingCamFogBubble) { var playerDistance = Vector3.Distance(__instance.transform.position, Locator.GetPlayerCamera().transform.position); var fogOffset = (____stateIndex != 5) ? 0f : ____eyeStateFogOffset; var distanceFromFog = playerDistance - (____fogRadius + fogOffset); var fogAlpha = 0f; if (!____isPlayerInside) { fogAlpha = Mathf.InverseLerp(____fogThickness + ____fogRolloffDistance, ____fogThickness, distanceFromFog); if (distanceFromFog < 0f) { if ((bool)__instance.GetType().GetMethod("IsLockedByProbeSnapshot", BindingFlags.NonPublic | BindingFlags.Instance).Invoke(__instance, null) || QuantumManager.IsVisibleUsingCameraFrustum((ShapeVisibilityTracker)____visibilityTracker, true)) { ____isPlayerInside = true; __instance.GetType().GetMethod("SetSurfaceState", BindingFlags.NonPublic | BindingFlags.Instance).Invoke(__instance, new object[] { ____stateIndex }); Locator.GetShipLogManager().RevealFact(____revealFactID, true, true); QSBEventManager.FireEvent("PlayerEnterQuantumMoon"); } else { __instance.GetType().GetMethod("Collapse", BindingFlags.NonPublic | BindingFlags.Instance).Invoke(__instance, new object[] { true }); } } } else if (____isPlayerInside) { fogAlpha = Mathf.InverseLerp(-____fogThickness - ____fogRolloffDistance, -____fogThickness, distanceFromFog); if (distanceFromFog >= 0f) { if (____stateIndex != 5) { ____isPlayerInside = false; if (!(bool)__instance.GetType().GetMethod("IsLockedByProbeSnapshot", BindingFlags.NonPublic | BindingFlags.Instance).Invoke(__instance, null) && !QuantumManager.IsVisibleUsingCameraFrustum((ShapeVisibilityTracker)____visibilityTracker, true)) { __instance.GetType().GetMethod("Collapse", BindingFlags.NonPublic | BindingFlags.Instance).Invoke(__instance, new object[] { true }); } __instance.GetType().GetMethod("SetSurfaceState", BindingFlags.NonPublic | BindingFlags.Instance).Invoke(__instance, new object[] { -1 }); QSBEventManager.FireEvent("PlayerExitQuantumMoon"); } else { var vector = Locator.GetPlayerTransform().position - __instance.transform.position; Locator.GetPlayerBody().SetVelocity(____moonBody.GetPointVelocity(Locator.GetPlayerTransform().position) - (vector.normalized * 5f)); var d = 80f; Locator.GetPlayerBody().SetPosition(__instance.transform.position + (____vortexReturnPivot.up * d)); if (!Physics.autoSyncTransforms) { Physics.SyncTransforms(); } var component = Locator.GetPlayerCamera().GetComponent <PlayerCameraController>(); component.SetDegreesY(component.GetMinDegreesY()); ____vortexAudio.SetLocalVolume(0f); ____collapseToIndex = 1; __instance.GetType().GetMethod("Collapse", BindingFlags.NonPublic | BindingFlags.Instance).Invoke(__instance, new object[] { true }); } } } ____playerFogBubble.SetFogAlpha(fogAlpha); ____shipLandingCamFogBubble.SetFogAlpha(fogAlpha); return(false); }