//------------------------------------------------------------
// 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();
}
}
}