Files
riversong-code-showcase/Source/Riversong/Game/World/Buildings/Visualizations/WindmillProducerAnimation.cs
2026-05-21 16:04:49 +02:00

35 lines
1.2 KiB
C#

using UnityEngine;
namespace DanieleMarotta.RiversongCodeShowcase
{
public class WindmillProducerAnimation : ProducerAnimation
{
[SerializeField]
private Transform _rotationTarget;
[SerializeField]
private float _rotationSpeed = 180;
[SerializeField]
private float _rampUpTime = 0.5f;
[SerializeField]
private float _slowDownTime = 0.5f;
private float _currentRotationSpeed;
public override void UpdateAnimation(in BuildingProductionState productionState)
{
if (!_rotationTarget) return;
var isWorking = productionState.State == ProducerState.Working;
var targetRotationSpeed = isWorking ? _rotationSpeed : 0;
var rampTime = isWorking ? _rampUpTime : _slowDownTime;
var maxDelta = rampTime > 0 ? _rotationSpeed / rampTime * Time.deltaTime : _rotationSpeed;
_currentRotationSpeed = Mathf.MoveTowards(_currentRotationSpeed, targetRotationSpeed, maxDelta);
var rotationDelta = _currentRotationSpeed * Time.deltaTime;
_rotationTarget.localRotation *= Quaternion.Euler(0, 0, rotationDelta);
}
}
}