You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

92 lines
2.5 KiB

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
namespace Animmal.Animmals1
{
[System.Serializable]
public class SKINS
{
public List<Transform> Skins = new List<Transform>();
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<SKINS> Prefabs = new List<SKINS>();
int CurrentID = 0;
int CurrentSkin = 0;
public void Init(List<AssetDB> _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<SkinnedMeshRenderer>();
foreach (SkinnedMeshRenderer _SkinnedMesh in _SkinnedMeshRenderers)
_Count += _SkinnedMesh.sharedMesh.triangles.Length / 3;
return _Count;
}
public void SetAnimation(string _AnimTrigger)
{
Prefabs[CurrentID].Skins[CurrentSkin].gameObject.GetComponent<Animator>().SetTrigger(_AnimTrigger);
}
public void SetSkin(int _Skin)
{
CurrentSkin = _Skin;
Prefabs[CurrentID].SetSkin(_Skin);
}
}
}