diff --git a/ScriptableObjects/SoTargetableRuntimeSet.cs b/ScriptableObjects/SoTargetableRuntimeSet.cs index 37ec13c..9e0d5aa 100644 --- a/ScriptableObjects/SoTargetableRuntimeSet.cs +++ b/ScriptableObjects/SoTargetableRuntimeSet.cs @@ -2,7 +2,7 @@ using UnityEngine; namespace GameDev.CoreSystems { - [CreateAssetMenu(fileName = "newDamageableRuntimeSet", menuName = "RuntimeSet/Damageable")] + [CreateAssetMenu(fileName = "newTargetableRuntimeSet", menuName = "RuntimeSet/Targetable")] public class SoTargetableRuntimeSet : SRuntimeSet { } diff --git a/Scripts/Damageable.cs b/Scripts/Damageable.cs index a43a1a3..01b754e 100644 --- a/Scripts/Damageable.cs +++ b/Scripts/Damageable.cs @@ -4,6 +4,9 @@ namespace GameDev.CoreSystems { public class Damageable : MonoBehaviour, IDamageable { + [Header("RuntimeSet")] + [SerializeField] private SoDamageableRuntimeSet _activeDamageableRuntimeSet; + [field: Header("Health")] [field: SerializeField] public int CurrentHealth { get; private set; } [field: SerializeField] public int MaxHealth { get; private set; } @@ -11,6 +14,16 @@ namespace GameDev.CoreSystems [field: Header("Modifiers")] [field: SerializeField] public bool IsInvulnerable { get; private set; } + private void OnEnable() + { + _activeDamageableRuntimeSet._list.Add(this); + } + + private void OnDisable() + { + _activeDamageableRuntimeSet._list.Remove(this); + } + #region Methods public void ModifyHealth(int healthChange) diff --git a/Scripts/Targetable.cs b/Scripts/Targetable.cs index d7ef5de..bbd8b89 100644 --- a/Scripts/Targetable.cs +++ b/Scripts/Targetable.cs @@ -4,10 +4,26 @@ namespace GameDev.CoreSystems { public class Targetable : MonoBehaviour, ITargetable { + [Header("RuntimeSet")] + [SerializeField] private SoTargetableRuntimeSet _activeTargetableRuntimeSet; + + [field: Header("Connections")] + [field: SerializeField] public Damageable Damageable { get; set; } + [Header("TargetPositions")] [SerializeField] private Transform _centerPosition; [SerializeField] private Transform _basePosition; + private void OnEnable() + { + _activeTargetableRuntimeSet._list.Add(this); + } + + private void OnDisable() + { + _activeTargetableRuntimeSet._list.Remove(this); + } + public Vector3 GetCenterPosition() => _centerPosition.transform.position; public Vector3 GetBasePosition() => _basePosition.transform.position;