using System.Collections;
|
using System.Collections.Generic;
|
using UnityEngine;
|
using System.Threading;
|
using System;
|
|
public class LogicUpdate
|
{
|
public readonly float stepInterval = 0.033333f;
|
|
public bool destroyDirty { get; private set; }
|
float nextUpdateTime = 0f;
|
Action update;
|
|
public LogicUpdate(float stepInterval = 0.033333f)
|
{
|
this.stepInterval = Mathf.Clamp(stepInterval, 0.033333f, float.MaxValue);
|
}
|
|
public void Start(Action updateCallBack)
|
{
|
this.destroyDirty = false;
|
this.update = updateCallBack;
|
LogicEngine.Instance.Register(this);
|
}
|
|
public void Destroy()
|
{
|
this.update = null;
|
if (!this.destroyDirty)
|
{
|
this.destroyDirty = true;
|
OnDestroy();
|
}
|
}
|
|
public virtual void OnDestroy()
|
{
|
|
}
|
|
public void Update()
|
{
|
if (Time.time >= nextUpdateTime)
|
{
|
nextUpdateTime = Time.time + stepInterval;
|
if (update != null)
|
{
|
this.update();
|
}
|
}
|
}
|
|
}
|