LethalCompany/Lethal Company/ExportedProject/Assets/Scripts/Assembly-CSharp/AnimatedTextureUV.cs

84 lines
1.6 KiB
C#
Raw Normal View History

2023-12-22 22:51:17 +00:00
using System.Collections;
using UnityEngine;
public class AnimatedTextureUV : MonoBehaviour
{
private Material[] setMaterials;
public MeshRenderer meshRenderer;
public SkinnedMeshRenderer skinnedMeshRenderer;
public int materialIndex;
public int columns = 1;
public int rows = 1;
public float waitFrameTime = 0.005f;
private float horizontalOffset;
private float verticalOffset;
private Coroutine animateMaterial;
private bool skinnedMesh;
private void OnEnable()
{
if (animateMaterial == null)
{
Debug.Log("Animating material now");
animateMaterial = StartCoroutine(AnimateUV());
}
}
private void OnDisable()
{
if (animateMaterial != null)
{
StopCoroutine(animateMaterial);
}
}
private IEnumerator AnimateUV()
{
yield return null;
if (skinnedMeshRenderer != null)
{
setMaterials = skinnedMeshRenderer.materials;
skinnedMesh = true;
}
else
{
setMaterials = meshRenderer.materials;
}
float maxVertical = 1f - 1f / (float)columns;
float maxHorizontal = 1f - 1f / (float)rows;
while (base.enabled)
{
yield return new WaitForSeconds(waitFrameTime);
horizontalOffset += 1f / (float)rows;
if (horizontalOffset > maxHorizontal)
{
horizontalOffset = 0f;
verticalOffset += 1f / (float)columns;
if (verticalOffset > maxVertical)
{
verticalOffset = 0f;
}
}
setMaterials[materialIndex].SetTextureOffset("_BaseColorMap", new Vector2(horizontalOffset, verticalOffset));
if (skinnedMesh)
{
skinnedMeshRenderer.materials = setMaterials;
}
else
{
skinnedMeshRenderer.materials = setMaterials;
}
}
}
}