public void Update()
{
if (!Enabled)
return;
if (Starting != null)
Starting();
#if PROFILE
StartClock();
#endif
if (ShouldUseMultithreading)
{
UpdateMultithreaded();
}
else
{
UpdateSingleThreaded();
}
#if PROFILE
StopClock();
#endif
if (Finishing != null)
Finishing();
}
protected abstract void UpdateMultithreaded();