Пример #1
0
    public bool Equip(BodyItem.Type type, bool mounted, bool forceUpdate = false)
    {
        if (type == equipedItem.type && !forceUpdate)
        {
            return(true);
        }

        if (type != BodyItem.Type.None)
        {
            BodyItem newItem = Arsenal.Instance.Get(type, mounted);
            if (newItem)
            {
                SkinnedMeshRenderer smr = newItem.GetComponent <SkinnedMeshRenderer>();
                if (smr)
                {
                    CopySkinnedMesh(smr, equipedMesh);
                    BodyItem.Copy(newItem, equipedItem);
                    return(true);
                }
            }
        }
        equipedItem.Clear();
        equipedMesh.sharedMesh = null;
        return(false);
    }
Пример #2
0
    public GameObject GetPickable(BodyItem.Type type, bool showName = false, bool destroyOnPick = true)
    {
        BodyItem item = Get(type, false);

        if (!item)
        {
            return(null);
        }

        GameObject go = Instantiate(pickablePrefab.gameObject);

        go.name                    = type.ToString();
        go.transform.parent        = null;
        go.transform.position      = Vector3.zero;
        go.transform.localRotation = Quaternion.identity;
        go.transform.localScale    = Vector3.one;
        go.AddComponent <InteractionType>().type = InteractionType.Type.pickableBody;
        BodyItem.Copy(item, go.AddComponent <BodyItem>());
        go.SetActive(true);

        SkinnedMeshRenderer        skin     = item.gameObject.GetComponent <SkinnedMeshRenderer>();
        SpecialPickableShopArsenal pickable = go.GetComponent <SpecialPickableShopArsenal>();

        pickable.textmesh.text = go.name;
        if (go.name.Length >= 8)
        {
            pickable.textmesh.characterSize *= 0.5f;
        }
        pickable.itemMesh.gameObject.SetActive(false);
        pickable.horse.gameObject.SetActive(false);

        pickable.body.gameObject.SetActive(true);
        if (skin)
        {
            BodySlot.CopySkinnedMesh(skin, pickable.body);
        }
        else
        {
            pickable.body.gameObject.SetActive(false);
        }
        pickable.textmesh.gameObject.SetActive(showName);
        go.GetComponent <Item>().destroyOnPick = destroyOnPick;

        return(go);
    }
Пример #3
0
 public BodyItem Get(BodyItem.Type type, bool mounted, bool verbose = true)
 {
     if (mounted)
     {
         if (mountedBodyDictionary.ContainsKey(type))
         {
             return(mountedBodyDictionary[type]);
         }
     }
     else
     {
         if (bodyDictionary.ContainsKey(type))
         {
             return(bodyDictionary[type]);
         }
     }
     if (verbose)
     {
         Debug.LogError("Arsenal : body dictionary doesn't contain item " + type.ToString());
     }
     return(null);
 }