1234567891011121314151617181920212223242526272829 |
- using UnityEditor.ShaderGraph;
- using ActionType = UnityEditor.ShaderGraph.IGraphDataAction;
- using System;
- using UnityEngine;
-
- namespace UnityEditor.ShaderGraph
- {
- class DataStore<T>
- {
- Action<T, ActionType> m_Reducer;
- internal T State { get; private set; }
-
- public Action<T, ActionType> Subscribe;
-
- internal DataStore(Action<T, ActionType> reducer, T initialState)
- {
- m_Reducer = reducer;
- State = initialState;
- }
-
- public void Dispatch(ActionType action)
- {
- m_Reducer(State, action);
- // Note: This would only work with reference types, as value types would require creating a new copy, this works given that we use GraphData which is a heap object
- // Notifies any listeners about change in state
- Subscribe?.Invoke(State, action);
- }
- }
- }
|