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.

91 lines
2.5 KiB

  1. using System.Collections;
  2. using System.Collections.Generic;
  3. using UnityEngine;
  4. namespace Animmal.Animmals1
  5. {
  6. [System.Serializable]
  7. public class SKINS
  8. {
  9. public List<Transform> Skins = new List<Transform>();
  10. public void SetSkin(int _SkinID)
  11. {
  12. for (int i = 0; i < Skins.Count; i++)
  13. {
  14. if (i == _SkinID)
  15. Skins[i].gameObject.SetActive(true);
  16. else
  17. Skins[i].gameObject.SetActive(false);
  18. }
  19. }
  20. public void HideAll()
  21. {
  22. for (int i = 0; i < Skins.Count; i++)
  23. {
  24. Skins[i].gameObject.SetActive(false);
  25. }
  26. }
  27. }
  28. public class AssetsObject : MonoBehaviour
  29. {
  30. public List<SKINS> Prefabs = new List<SKINS>();
  31. int CurrentID = 0;
  32. int CurrentSkin = 0;
  33. public void Init(List<AssetDB> _AssetDB)
  34. {
  35. for (int i = 0; i < _AssetDB.Count; i++)
  36. {
  37. SKINS _Skin = new SKINS();
  38. for (int j = 0; j < _AssetDB[i].AssetSkins.Skins.Count; j++)
  39. {
  40. Transform _SkinItem = Instantiate(_AssetDB[i].AssetSkins.Skins[j], transform) as Transform;
  41. _Skin.Skins.Add(_SkinItem);
  42. }
  43. Prefabs.Add(_Skin);
  44. if (i == 0)
  45. Prefabs[i].SetSkin(0);
  46. else
  47. {
  48. Prefabs[i].HideAll();
  49. }
  50. }
  51. }
  52. public void SetObject(int _ObjectID)
  53. {
  54. Prefabs[CurrentID].HideAll();
  55. CurrentID = _ObjectID;
  56. SetSkin(0);
  57. }
  58. public int GetObjectTriangleCount()
  59. {
  60. int _Count = 0;
  61. Component[] _SkinnedMeshRenderers;
  62. _SkinnedMeshRenderers = Prefabs[CurrentID].Skins[CurrentSkin].gameObject.GetComponentsInChildren<SkinnedMeshRenderer>();
  63. foreach (SkinnedMeshRenderer _SkinnedMesh in _SkinnedMeshRenderers)
  64. _Count += _SkinnedMesh.sharedMesh.triangles.Length / 3;
  65. return _Count;
  66. }
  67. public void SetAnimation(string _AnimTrigger)
  68. {
  69. Prefabs[CurrentID].Skins[CurrentSkin].gameObject.GetComponent<Animator>().SetTrigger(_AnimTrigger);
  70. }
  71. public void SetSkin(int _Skin)
  72. {
  73. CurrentSkin = _Skin;
  74. Prefabs[CurrentID].SetSkin(_Skin);
  75. }
  76. }
  77. }