quantum-space-buddies/QSB/Animation/QSBFlashlight.cs

64 lines
1.8 KiB
C#
Raw Normal View History

2020-07-28 13:59:24 +00:00
using UnityEngine;
namespace QSB.Animation
{
public class QSBFlashlight : MonoBehaviour
{
public OWLight2[] _lights;
public OWLight2 _illuminationCheckLight;
public Transform _root;
public Transform _basePivot;
public Transform _wobblePivot;
2020-07-28 13:59:24 +00:00
private bool _flashlightOn;
private Vector3 _baseForward;
private Quaternion _baseRotation;
private void Start()
{
_baseForward = _basePivot.forward;
_baseRotation = _basePivot.rotation;
}
public void TurnOn()
{
2020-07-28 13:59:24 +00:00
if (_flashlightOn)
{
return;
}
foreach (var light in _lights)
{
2020-07-28 13:59:24 +00:00
light.GetLight().enabled = true;
}
2020-07-28 13:59:24 +00:00
_flashlightOn = true;
var rotation = _root.rotation;
_basePivot.rotation = rotation;
_baseRotation = rotation;
_baseForward = _basePivot.forward;
}
public void TurnOff()
{
2020-07-28 13:59:24 +00:00
if (!_flashlightOn)
{
return;
}
foreach (var light in _lights)
{
2020-07-28 13:59:24 +00:00
light.GetLight().enabled = false;
}
2020-07-28 13:59:24 +00:00
_flashlightOn = false;
}
private void FixedUpdate()
{
2020-07-28 13:59:24 +00:00
var lhs = Quaternion.FromToRotation(_basePivot.up, _root.up) * Quaternion.FromToRotation(_baseForward, _root.forward);
var b = lhs * _baseRotation;
_baseRotation = Quaternion.Slerp(_baseRotation, b, 6f * Time.deltaTime);
_basePivot.rotation = _baseRotation;
_baseForward = _basePivot.forward;
_wobblePivot.localRotation = OWUtilities.GetWobbleRotation(0.3f, 0.15f) * Quaternion.identity;
}
}
}