62 lines
935 B
C#
62 lines
935 B
C#
|
|
using UdonSharp;
|
|
using UnityEngine;
|
|
using VRC.SDKBase;
|
|
using VRC.Udon;
|
|
|
|
|
|
[UdonBehaviourSyncMode(BehaviourSyncMode.None)]
|
|
public class TimerBase : UdonSharpBehaviour
|
|
{
|
|
protected float TimerLength = 0.0f;
|
|
private float _TimerCounter = 0.0f;
|
|
private bool _TimerIsRunning = false;
|
|
|
|
|
|
public void Update()
|
|
{
|
|
if (_TimerIsRunning)
|
|
{
|
|
_TimerCounter -= Time.deltaTime;
|
|
if (_TimerCounter <= 0.0f)
|
|
{
|
|
_TimerIsRunning = false;
|
|
|
|
TimerEvent();
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
public virtual void TimerEvent()
|
|
{
|
|
Debug.Log("[TimerBase] This timer won't do anything. Use a subclass instead.");
|
|
}
|
|
|
|
|
|
public virtual void StartTimer()
|
|
{
|
|
if (!_TimerIsRunning)
|
|
{
|
|
_TimerCounter = TimerLength;
|
|
_TimerIsRunning = true;
|
|
}
|
|
}
|
|
|
|
public void PauseTimer()
|
|
{
|
|
_TimerIsRunning = false;
|
|
}
|
|
|
|
public void ResumeTimer()
|
|
{
|
|
_TimerIsRunning = true;
|
|
}
|
|
|
|
public virtual void StopTimer()
|
|
{
|
|
PauseTimer();
|
|
_TimerCounter = TimerLength;
|
|
}
|
|
}
|