using System.Collections; using System.Collections.Generic; using UnityEngine; namespace Animmal.Animmals1 { [System.Serializable] public class SKINS { public List Skins = new List(); public void SetSkin(int _SkinID) { for (int i = 0; i < Skins.Count; i++) { if (i == _SkinID) Skins[i].gameObject.SetActive(true); else Skins[i].gameObject.SetActive(false); } } public void HideAll() { for (int i = 0; i < Skins.Count; i++) { Skins[i].gameObject.SetActive(false); } } } public class AssetsObject : MonoBehaviour { public List Prefabs = new List(); int CurrentID = 0; int CurrentSkin = 0; public void Init(List _AssetDB) { for (int i = 0; i < _AssetDB.Count; i++) { SKINS _Skin = new SKINS(); for (int j = 0; j < _AssetDB[i].AssetSkins.Skins.Count; j++) { Transform _SkinItem = Instantiate(_AssetDB[i].AssetSkins.Skins[j], transform) as Transform; _Skin.Skins.Add(_SkinItem); } Prefabs.Add(_Skin); if (i == 0) Prefabs[i].SetSkin(0); else { Prefabs[i].HideAll(); } } } public void SetObject(int _ObjectID) { Prefabs[CurrentID].HideAll(); CurrentID = _ObjectID; SetSkin(0); } public int GetObjectTriangleCount() { int _Count = 0; Component[] _SkinnedMeshRenderers; _SkinnedMeshRenderers = Prefabs[CurrentID].Skins[CurrentSkin].gameObject.GetComponentsInChildren(); foreach (SkinnedMeshRenderer _SkinnedMesh in _SkinnedMeshRenderers) _Count += _SkinnedMesh.sharedMesh.triangles.Length / 3; return _Count; } public void SetAnimation(string _AnimTrigger) { Prefabs[CurrentID].Skins[CurrentSkin].gameObject.GetComponent().SetTrigger(_AnimTrigger); } public void SetSkin(int _Skin) { CurrentSkin = _Skin; Prefabs[CurrentID].SetSkin(_Skin); } } }