| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657 | using System.Collections;using System.Collections.Generic;using UnityEngine;public class BFX_ManualAnimationUpdate : MonoBehaviour{    public BFX_BloodSettings BloodSettings;    public AnimationCurve AnimationSpeed = AnimationCurve.Linear(0, 0, 1, 1);    public float FramesCount = 99;    public float TimeLimit = 3;    public float OffsetFrames = 0;    private float currentTime;    Renderer rend;    private MaterialPropertyBlock propertyBlock;    void Awake()    {        if (propertyBlock == null)            propertyBlock = new MaterialPropertyBlock();        rend = GetComponent<Renderer>();    }    void OnEnable()    {        rend.enabled = true;        rend.GetPropertyBlock(propertyBlock);        propertyBlock.SetFloat("_UseCustomTime", 1.0f);        propertyBlock.SetFloat("_TimeInFrames", 0.0f);        rend.SetPropertyBlock(propertyBlock);        currentTime = 0;    }    void Update()    {        currentTime += Time.deltaTime * BloodSettings.AnimationSpeed;        if (currentTime / TimeLimit > 1.0)        {            if (rend.enabled) rend.enabled = false;            return;        }        var currentFrameTime = AnimationSpeed.Evaluate(currentTime / TimeLimit);        currentFrameTime = currentFrameTime * FramesCount + OffsetFrames + 1.1f;        float timeInFrames = (Mathf.Ceil(-currentFrameTime) / (FramesCount + 1)) + (1.0f / (FramesCount + 1));        rend.GetPropertyBlock(propertyBlock);        propertyBlock.SetFloat("_LightIntencity", Mathf.Clamp(BloodSettings.LightIntensityMultiplier, 0.01f, 1f));        propertyBlock.SetFloat("_TimeInFrames", timeInFrames);        rend.SetPropertyBlock(propertyBlock);    }}
 |