예제 #1
0
        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;
        }
예제 #2
0
        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];
                            }
                        }
                    }
                }
            }
        }
예제 #3
0
        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);
        }