using System.Collections; using System.Collections.Generic; using UnityEngine; using RotaryHeart.Lib.SerializableDictionary; namespace BITKit.ObjectMaterial { [System.Serializable] public struct ObjectMaterialInfo { public AudioSO[] clips; public Transform[] prefabs; public AudioSO GetAudioSO() => clips.Random(); public Transform GetPrefab() => prefabs.Random(); } public interface IObjectMaterial { ObjectMaterialInfo GetObjectMaterial(string action = "None", Vector3 pos = default); } public class ObjectMaterialScriptableObject : BITKitSO { [Header(Constant.Header.Settings)] public new string name; [Header(Constant.Header.Prefabs)] public SerializableDictionaryBase dictionary = new(); public override void RegisterAssets() { Data.Set(name, this); dictionary.Values.ForEach(x => { x.clips.ForEach(x => { Data.Set(x.name, x); }); x.prefabs.ForEach(x=> { Data.Set(x.name,x); }); }); } public ObjectMaterialInfo Get(string name)=>dictionary[name]; } }