public void Start() { if (initialized) { return; } for (int i = 0; i < charEquips.Count; ++i) { if (charEquips[i].instance) { charEquips[i].rend = charEquips[i].instance.GetComponentInChildren <SkinnedMeshRenderer>(); if (equipmentizer) { equipmentizer.Equip(charEquips[i].rend as SkinnedMeshRenderer); } } } rHand = charEquips.Find(x => x.tag == ItemTag.Holdable); if (rHandItem) { EquipItem(rHandItem); } initialized = true; }
void SetupSlots() { List <GameObject> prequippedInst = new List <GameObject>(); if (loadoutParent) { for (int i = 0; i < loadoutParent.childCount; ++i) { var go = loadoutParent.GetChild(i).gameObject; if (!go.activeInHierarchy) { continue; } prequippedInst.Add(go); } } foreach (var t in ItemEquip.equipTags) { if (charEquips.Find(x => x.tag == t) == null) { var e = new CharacterEquipInstance(t); if (t == ItemTag.Holdable) { e.equipParent = charAnim.rHandHold; e.tag = ItemTag.Holdable; } if (t == ItemTag.Hat) { e.equipParent = charAnim.headHold; } charEquips.Add(e); if (!loadoutParent) { continue; } var items = AssetRegistry.I.GetItemListByType(ItemType.Equip); for (int i = 0; i < items.Count; ++i) { if (!items[i].HasTag(t) || !items[i].prefab) { continue; } GameObject inst = prequippedInst.Find(x => x.name == items[i].prefab.name); if (inst) { e.instance = inst; if (e.item == null) { e.item = items[i]; } } } } } }
public GameObject EquipItem(Item newItem, CharacterEquipInstance slot) { if (slot.item && slot.item.itemName == newItem.itemName) { return(slot.instance ? slot.instance : null); } if (slot.instance) { Destroy(slot.instance); } slot.item = newItem; if (!newItem || !newItem.prefab) { return(null); } slot.instance = Instantiate(slot.item.prefab); if (slot.equipParent) { slot.instance.transform.SetParent(slot.equipParent, false); } else { slot.instance.transform.SetParent(loadoutParent, false); } if (slot == rHand) { slot.instance.SetActive(false); } slot.rend = slot.instance.GetComponentInChildren <Renderer>(); SkinnedMeshRenderer skinned = slot.rend as SkinnedMeshRenderer; if (skinned) { equipmentizer.Equip(skinned); } return(slot.instance); }