using UnityEngine; public class rainDropsControlerSM : MonoBehaviour { public Transform airplane; public Material rainDropsMat; public Vector3 prevPos; public Vector3 prevForward; public Vector3 prevEuler; public float motionPushPower = 0.1f; public float diffPushPower = 1f; public float angleDifferenceOffset = 0.1f; public float returnSpeed = 1f; private void Update() { if (!(rainDropsMat != null) || !(airplane != null)) { return; } Vector3.Dot(prevForward, airplane.forward); float num = prevEuler.y - airplane.eulerAngles.y; if (Mathf.Abs(num) > angleDifferenceOffset) { float x = -0.25f * motionPushPower + -0.25f * Mathf.Abs(num) * 0.1f * diffPushPower; if (num > 0f) { x = 0.55f * motionPushPower + 0.55f * Mathf.Abs(num) * 0.1f * diffPushPower; } rainDropsMat.SetVector("directionControls", Vector4.Lerp(rainDropsMat.GetVector("directionControls"), new Vector4(x, 0f, 0f, 0f), Time.deltaTime * 50f * Mathf.Abs(num))); } else { float num2 = returnSpeed; _ = 0f; rainDropsMat.SetVector("directionControls", Vector4.Lerp(rainDropsMat.GetVector("directionControls"), new Vector4(0f, 0f, 0f, 0f), Time.deltaTime * 0.1f * num2)); } prevPos = airplane.position; prevForward = airplane.forward; prevEuler = airplane.eulerAngles; } private void Start() { prevPos = airplane.position; prevForward = airplane.forward; prevEuler = airplane.eulerAngles; rainDropsMat.SetVector("directionControls", new Vector4(0f, 0f, 0f, 0f)); } }