using NBC; using NBC.Asset; using NBF.Utils; using UnityEngine; namespace NBF { public static class IConfigTableExtensions { public static string GetName(this IConfigTable config) { return config.Key.GetName(); } public static string GetDesc(this IConfigTable config) { return config.Key.GetDesc(); } public static string GetModelPath(this ItemConfig config) { return $"Assets/ResRaw/gfx/{config.Model}.prefab"; } public static GameObject GetModelPrefab(this ItemConfig config) { return Assets.Load(config.GetModelPath()); } public static GameObject Instantiate(this ItemConfig config, Transform parent, Vector3 position, Quaternion rotation) { return Object.Instantiate(config.GetModelPrefab(), position, rotation, parent); } public static T InstantiateAndComponent(this ItemConfig config, Transform parent, Vector3 position, Quaternion rotation) where T : MonoBehaviour { var obj = config.Instantiate(parent, position, rotation); var com = obj.GetComponent(); if (com == null) { com = obj.AddComponent(); } return com; } public static T InstantiateAndComponent(this ItemConfig config) where T : MonoBehaviour { var obj = Object.Instantiate(config.GetModelPrefab()); var com = obj.GetComponent(); if (com == null) { com = obj.AddComponent(); } return com; } } }