First Commit

This commit is contained in:
2025-05-18 22:39:39 +03:00
commit 042ede7228
440 changed files with 103153 additions and 0 deletions

View File

@@ -0,0 +1,73 @@
using System;
using System.Collections.Generic;
using UnityEngine;
namespace RogueUtils.Data
{
public abstract class SubBaseVariableReference : ScriptableObject
{
private event EventHandler InternalOnVariableChangeUntyped;
private event EventHandler InternalOnValueChangeUntyped;
public event EventHandler OnVariableChangeUntyped
{
// Not thread safe.
// Will add tracking of subscribers
add
{
InternalOnVariableChangeUntyped += value;
}
remove
{
InternalOnVariableChangeUntyped -= value;
}
}
public event EventHandler OnValueChangeUntyped
{
// Not thread safe.
// Will add tracking of subscribers
add
{
InternalOnValueChangeUntyped += value;
}
remove
{
InternalOnValueChangeUntyped -= value;
}
}
public abstract SubBaseVariable GetVariableUntyped();
public abstract void SetVariableUntyped(SubBaseVariable value);
public abstract T GetValue<T>();
public abstract object GetValueUntyped();
public abstract void SetValueUntyped(object value);
public abstract void TriggerVariableListeners();
protected void SubBaseTriggerVariableListeners()
{
InternalOnVariableChangeUntyped?.Invoke(this, EventArgs.Empty);
}
protected void SubBaseTriggerValueListeners()
{
InternalOnValueChangeUntyped?.Invoke(this, EventArgs.Empty);
}
#if UNITY_EDITOR && false
[BoxGroup("Debug/Trigger")]
[Button("Trigger Variable Listeners")]
public void EditorTriggerVariableListeners()
{
TriggerVariableListeners();
}
#endif
}
}