//------------------------------------------------------------ // Game Framework // Copyright © 2013-2021 loyalsoft. All rights reserved. // Homepage: http://www.game7000.com/ // Feedback: http://www.game7000.com/ //------------------------------------------------------------ using GameFramework; using GameFramework.DataNode; using UnityEngine; namespace UnityGameFramework.Runtime { /// /// 数据结点组件。 /// [DisallowMultipleComponent] [AddComponentMenu("Game Framework/Data Node")] public sealed class DataNodeComponent : GameFrameworkComponent { private IDataNodeManager m_DataNodeManager = null; /// /// 获取根数据结点。 /// public IDataNode Root { get { return m_DataNodeManager.Root; } } /// /// 游戏框架组件初始化。 /// protected override void Awake() { base.Awake(); m_DataNodeManager = GameFrameworkEntry.GetModule(); if (m_DataNodeManager == null) { Log.Fatal("Data node manager is invalid."); return; } } private void Start() { } /// /// 根据类型获取数据结点的数据。 /// /// 要获取的数据类型。 /// 相对于 node 的查找路径。 /// 指定类型的数据。 public T GetData(string path) where T : Variable { return m_DataNodeManager.GetData(path); } /// /// 获取数据结点的数据。 /// /// 相对于 node 的查找路径。 /// 数据结点的数据。 public Variable GetData(string path) { return m_DataNodeManager.GetData(path); } /// /// 根据类型获取数据结点的数据。 /// /// 要获取的数据类型。 /// 相对于 node 的查找路径。 /// 查找起始结点。 /// 指定类型的数据。 public T GetData(string path, IDataNode node) where T : Variable { return m_DataNodeManager.GetData(path, node); } /// /// 获取数据结点的数据。 /// /// 相对于 node 的查找路径。 /// 查找起始结点。 /// 数据结点的数据。 public Variable GetData(string path, IDataNode node) { return m_DataNodeManager.GetData(path, node); } /// /// 设置数据结点的数据。 /// /// 要设置的数据类型。 /// 相对于 node 的查找路径。 /// 要设置的数据。 public void SetData(string path, T data) where T : Variable { m_DataNodeManager.SetData(path, data); } /// /// 设置数据结点的数据。 /// /// 相对于 node 的查找路径。 /// 要设置的数据。 public void SetData(string path, Variable data) { m_DataNodeManager.SetData(path, data); } /// /// 设置数据结点的数据。 /// /// 要设置的数据类型。 /// 相对于 node 的查找路径。 /// 要设置的数据。 /// 查找起始结点。 public void SetData(string path, T data, IDataNode node) where T : Variable { m_DataNodeManager.SetData(path, data, node); } /// /// 设置数据结点的数据。 /// /// 相对于 node 的查找路径。 /// 要设置的数据。 /// 查找起始结点。 public void SetData(string path, Variable data, IDataNode node) { m_DataNodeManager.SetData(path, data, node); } /// /// 获取数据结点。 /// /// 相对于 node 的查找路径。 /// 指定位置的数据结点,如果没有找到,则返回空。 public IDataNode GetNode(string path) { return m_DataNodeManager.GetNode(path); } /// /// 获取数据结点。 /// /// 相对于 node 的查找路径。 /// 查找起始结点。 /// 指定位置的数据结点,如果没有找到,则返回空。 public IDataNode GetNode(string path, IDataNode node) { return m_DataNodeManager.GetNode(path, node); } /// /// 获取或增加数据结点。 /// /// 相对于 node 的查找路径。 /// 指定位置的数据结点,如果没有找到,则增加相应的数据结点。 public IDataNode GetOrAddNode(string path) { return m_DataNodeManager.GetOrAddNode(path); } /// /// 获取或增加数据结点。 /// /// 相对于 node 的查找路径。 /// 查找起始结点。 /// 指定位置的数据结点,如果没有找到,则增加相应的数据结点。 public IDataNode GetOrAddNode(string path, IDataNode node) { return m_DataNodeManager.GetOrAddNode(path, node); } /// /// 移除数据结点。 /// /// 相对于 node 的查找路径。 public void RemoveNode(string path) { m_DataNodeManager.RemoveNode(path); } /// /// 移除数据结点。 /// /// 相对于 node 的查找路径。 /// 查找起始结点。 public void RemoveNode(string path, IDataNode node) { m_DataNodeManager.RemoveNode(path, node); } /// /// 移除所有数据结点。 /// public void Clear() { m_DataNodeManager.Clear(); } } }