Files
2026-07-09 21:33:33 +02:00

71 lines
1.7 KiB
C#

using UnityEngine;
using VOID.Generic.Objects.Abstract;
namespace VOID.Generic.Objects
{
public abstract class ObjectComponent<T> : ObjectComponent where T : AbstractObject
{
protected T parent => (T)objectParent;
}
public abstract class ObjectComponent
{
protected AbstractObject objectParent;
private bool _didSelfInitialize;
private bool _didEventInitialize;
private bool _didInitialize;
public void SetParent(AbstractObject objectParent)
{
this.objectParent = objectParent;
}
public void DoSelfInitialize()
{
if (_didSelfInitialize)
{
Debug.LogError($"{GetType().Name} already did {nameof(SelfInitialize)}", objectParent);
return;
}
_didSelfInitialize = true;
SelfInitialize();
}
public void DoEventInitialize()
{
if (_didEventInitialize)
{
Debug.LogError($"{GetType().Name} already did {nameof(DoEventInitialize)}", objectParent);
return;
}
_didEventInitialize = true;
EventInitialize();
}
public void DoInitialize()
{
if (_didInitialize)
{
Debug.LogError($"{GetType().Name} already did {nameof(Initialize)}", objectParent);
return;
}
_didInitialize = true;
Initialize();
}
protected virtual void SelfInitialize()
{
}
protected virtual void EventInitialize()
{
}
protected virtual void Initialize()
{
}
}
}