<<<<<<< HEAD using System; using UnityEngine; using UnityEngine.EventSystems; using UnityEngine.SceneManagement; using GeoSus.Client; public class WindController : MonoBehaviour, ITask { [Header("Settings větru")] public float maxWindTorque = 8f; public float windChangeSpeed = 0.6f; public float gustInterval = 4f; ======= using UnityEngine; public class WindController : MonoBehaviour { [Header("settings větru")] [Tooltip("Maximální síla větru (kladná i záporná)")] public float maxWindTorque = 8f; [Tooltip("Jak rychle se větr mění směrem/sílou")] public float windChangeSpeed = 0.6f; [Tooltip("Jak často se objeví silnější vichřice (v sekundách)")] public float gustInterval = 4f; [Tooltip("Multiplier pro sílu vichřice")] >>>>>>> origin/main public float gustMultiplier = 2.0f; public float CurrentWindTorque { get; private set; } private float targetTorque; private float gustTimer; <<<<<<< HEAD private Action _onCompleted; private Action _onExit; public string TaskID { get; set; } public TaskType TaskType { get; set; } public string TaskName { get; set; } public Position TaskLocation { get; set; } public bool IsCompleted { get; private set; } ======= >>>>>>> origin/main void Start() { PickNewTargetTorque(); gustTimer = gustInterval; } void Update() { <<<<<<< HEAD CurrentWindTorque = Mathf.Lerp(CurrentWindTorque, targetTorque, Time.deltaTime * windChangeSpeed); gustTimer -= Time.deltaTime; if (gustTimer <= 0f) { float gust = UnityEngine.Random.Range(-maxWindTorque, maxWindTorque) * gustMultiplier; targetTorque = Mathf.Clamp(gust, -maxWindTorque * gustMultiplier, maxWindTorque * gustMultiplier); gustTimer = gustInterval; Invoke(nameof(PickNewTargetTorque), 0.8f); ======= // Smoothly move wind toward target torque CurrentWindTorque = Mathf.Lerp(CurrentWindTorque, targetTorque, Time.deltaTime * windChangeSpeed); // Occasional gusts gustTimer -= Time.deltaTime; if (gustTimer <= 0f) { // Apply a short gust by shifting target torque more aggressively float gust = Random.Range(-maxWindTorque, maxWindTorque) * gustMultiplier; targetTorque = Mathf.Clamp(gust, -maxWindTorque * gustMultiplier, maxWindTorque * gustMultiplier); gustTimer = gustInterval; Invoke(nameof(PickNewTargetTorque), 0.8f); // gust lasts ~0.8s >>>>>>> origin/main } } private void PickNewTargetTorque() { <<<<<<< HEAD targetTorque = UnityEngine.Random.Range(-maxWindTorque, maxWindTorque); } public void Initialize(Action onCompleted) { _onCompleted = onCompleted; IsCompleted = false; } public void Complete() { if (IsCompleted) return; IsCompleted = true; _onCompleted?.Invoke(this); } public void ExitTask(Action onExit) { _onExit = onExit; _onExit?.Invoke(this); } } ======= targetTorque = Random.Range(-maxWindTorque, maxWindTorque); } } >>>>>>> origin/main