using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class NaviManager : MonoBehaviour
{
public GameObject objectToScale;
public GameObject lookAtObjToRotate;
public Camera playerCamera;
public DimLights dimLights;
public float duration = 1f;
public Vector3 minSize;
public Vector3 maxSize;
public bool scaleUp = false;
public Coroutine scaleCoroutine;
public bool automatic = false;
public bool coroutineIsRunning = false;
private Quaternion rotation;
private float counter = 0;
private Coroutine lightsCoroutine;
private void Start()
{
objectToScale.transform.localScale = minSize;
}
private void Update()
{
if (automatic)
{
if (!coroutineIsRunning)
{
NaviScaling();
}
}
else
{
if (Input.GetKeyDown(KeyCode.G))
{
NaviScaling();
}
}
}
public void NaviScaling()
{
scaleUp = !scaleUp;
if (scaleCoroutine != null)
StopCoroutine(scaleCoroutine);
if (scaleUp)
{
scaleCoroutine = StartCoroutine(ScaleOverTime(objectToScale, maxSize, duration));
}
else
{
scaleCoroutine = StartCoroutine(ScaleOverTime(objectToScale, minSize, duration));
}
}
private IEnumerator ScaleOverTime(GameObject objectToScale, Vector3 toScale, float duration)
{
counter = 0;
Vector3 startScaleSize = objectToScale.transform.localScale;
coroutineIsRunning = true;
while (counter < duration)
{
counter += Time.deltaTime;
ScaleAndRotate(startScaleSize, toScale);
if (counter > duration)
coroutineIsRunning = false;
yield return null;
}
}
private void ScaleAndRotate(Vector3 startScaleSize, Vector3 toScale)
{
objectToScale.transform.localScale = Vector3.Lerp(startScaleSize, toScale, counter / duration);
var lookPos = lookAtObjToRotate.transform.position - objectToScale.transform.position;
lookPos.y = 0;
if (scaleUp == true)
{
rotation = Quaternion.LookRotation(lookPos);
objectToScale.transform.rotation = Quaternion.Slerp(objectToScale.transform.rotation, rotation, counter / duration);
DimLights(1);
}
else
{
rotation = Quaternion.LookRotation(playerCamera.transform.forward);
objectToScale.transform.rotation = Quaternion.Slerp(objectToScale.transform.rotation, rotation, counter / duration);
DimLights(0);
}
}
private void DimLights(int LightsOnOff)
{
if (dimLights.lightsOnOff == false)
lightsCoroutine = StartCoroutine(dimLights.dimLightOverTime(LightsOnOff, duration));
}
}