using Assets.Source.Core.Interfaces;
using UnityEngine;

namespace Assets.Source.Patterns.ScriptableObjects
{
    public class Worker : ScriptableObject, IScriptableWorker
    {
        public void Init()
        {
            VInit();
        }

        void OnEnable()
        {
            VOnEnable();
        }
        void OnDisable()
        {
            VOnDisable();
        }

        public void Update()
        {
            VUpdate();
        }

        public void FixedUpdate()
        {
            VFixedUpdate();
        }

        public void ClearContent()
        {
            VClearContent();
        }

        protected virtual void VInit()
        {
        }

        protected virtual void VOnEnable()
        {
        }

        protected virtual void VOnDisable()
        {
        }

        protected virtual void VUpdate()
        {
        }

        protected virtual void VFixedUpdate()
        {
        }

        protected virtual void VClearContent()
        {
        }
    }
}
