예제 #1
0
    public void SpawnInventoryUI(bool destroyTopObject = false)
    {
        mItemSackObject.GetComponent <BagInteraction>().mIsBagOnLeft = mIsLeft;
        if (destroyTopObject)
        {
            HVRControllerManager.DestroyObject(mTopObject);
        }

        List <InventoryItem> inventoryItems         = mPouches[1].InventoryItems;
        List <InventoryItem> filteredInventoryItems = new List <InventoryItem>(inventoryItems);

        mInventorySlotItems = new List <GameObject>();
        FilterInventory(filteredInventoryItems);
        mLastFilteredInventoryCount = filteredInventoryItems.Count;
        if (mLastFilteredInventoryCount - (12 * (mCurrentPageNumbers[mCurrentPouchIndex] - 1)) <= mFocusedSlot)
        {
            mFocusedSlot = 0;
        }
        mSlotContainer = mItemSackObject.transform.GetChild(0).GetChild(1);
        for (int i = 12 * (mCurrentPageNumbers[mCurrentPouchIndex] - 1); i < 12 * mCurrentPageNumbers[mCurrentPouchIndex]; i++)
        {
            if (filteredInventoryItems.Count > i)
            {
                //GameObject instantiatedObj;
                //HVRItemFactory.SpawnItem(filteredInventoryItems[i].Id, Vector3.zero, default(Quaternion), new Vector3(0.35f, 0.35f, 0.35f), out instantiatedObj, "InventorySlotItem");
                object     obj             = GameObject.Instantiate(HVRItemFactory.GetItemPrefab(filteredInventoryItems[i].Id));
                GameObject instantiatedObj = (GameObject)obj;
                instantiatedObj.transform.localScale = new Vector3(0.35f, 0.35f, 0.35f);

                mInventorySlotItems.Add(instantiatedObj);
                Destroy(instantiatedObj.GetComponent <Rigidbody>());
                Destroy(instantiatedObj.GetComponent <VRTK_InteractableObject>());
                Destroy(instantiatedObj.GetComponent <Collider>());
                instantiatedObj.transform.SetParent(mSlotContainer.GetChild(i % 12));
                instantiatedObj.transform.localPosition    = Vector3.zero;
                instantiatedObj.transform.localEulerAngles = new Vector3(0f, 0f, 0f);
                Animator itemFloatController = instantiatedObj.AddComponent <Animator>() as Animator;
                instantiatedObj.GetComponent <Animator>().runtimeAnimatorController = mItemFloatController;
                mSlotContainer.GetChild(i % 12).GetComponent <Collider>().enabled   = true;
                //itemFloatController.runtimeAnimatorController = mItemFloatController;
                mSlotContainer.GetChild(i % 12).GetChild(0).gameObject.SetActive(true);
                mSlotContainer.GetChild(i % 12).GetChild(0).gameObject.GetComponent <Text>().text = filteredInventoryItems[i].Quantity.ToString();
            }
            else
            {
                mSlotContainer.GetChild(i % 12).GetChild(0).gameObject.SetActive(false);
                mSlotContainer.GetChild(i % 12).GetComponent <Collider>().enabled = false;
            }
        }
        if (mCurrentPageNumbers[mCurrentPouchIndex] > 1)
        {
            mItemSackObject.transform.GetChild(0).GetChild(2).gameObject.SetActive(true);
        }
        else
        {
            mItemSackObject.transform.GetChild(0).GetChild(2).gameObject.SetActive(false);
        }
        if (filteredInventoryItems.Count > 12 * mCurrentPageNumbers[mCurrentPouchIndex])
        {
            mItemSackObject.transform.GetChild(0).GetChild(3).gameObject.SetActive(true);
        }
        else
        {
            mItemSackObject.transform.GetChild(0).GetChild(3).gameObject.SetActive(false);
        }
        if (filteredInventoryItems.Count > 0)
        {
            FocusOnSlot(mFocusedSlot);
        }

        if (mIsLeft)
        {
            HVRControllerManager.Instance.GetRightController().GetComponent <VRTK_InteractGrab>().ControllerGrabInteractableObject += new ObjectInteractEventHandler(DoControllerGrabInteractableObject);
        }
        else
        {
            HVRControllerManager.Instance.GetLeftController().GetComponent <VRTK_InteractGrab>().ControllerGrabInteractableObject += new ObjectInteractEventHandler(DoControllerGrabInteractableObject);
        }
    }
예제 #2
0
 public override void Awake()
 {
     Instance = this;
     base.Awake();
 }