Esempio n. 1
0
 private void spotAssignement(ARSpot spot, GameObject text, GameObject temp)
 {
     spot.assignTextObj(text);
     spot.setObj(temp);
     spot.setProd(listOfItems[0]);
     listOfItems.RemoveAt(0);
 }
Esempio n. 2
0
    private void startAR()
    {
        Dictionary <string, Products> cart = cartController.getCart();

        listOfItems      = new List <Products>();
        objectsOnDisplay = new List <ARSpot>();
        int count2 = 0;

        foreach (KeyValuePair <string, Products> item in cart)
        {
            listOfItems.Add(item.Value);
        }

        while (objectsOnDisplay.Count < 3 && 0 < listOfItems.Count)
        {
            string objName = listOfItems[0].getName();

            ARSpot spot = new ARSpot();
            Debug.Log("objName: " + objName);
            GameObject temp = (GameObject)Instantiate(Resources.Load(objName));
            GameObject text = (GameObject)Instantiate(Resources.Load("ARtext"));
            initializeARObj(text, temp);

            text.transform.position = temp.transform.position + new Vector3(0f, 0.2f, 0f);

            objectSettings(temp);

            if (count2 == 0)
            {
                itemRot[0] = 20;
                temp.transform.position = this.transform.position + this.transform.forward.normalized * objDistance;
                temp.transform.RotateAround(this.transform.position, Vector3.up, itemRot[0]);
                spot.setIndex(0);
            }
            else if (count2 == 1)
            {
                itemRot[1] = 0;
                temp.transform.position = this.transform.position + this.transform.forward.normalized * objDistance;
                spot.setIndex(1);
            }
            else
            {
                itemRot[2] = -20;
                temp.transform.position = this.transform.position + this.transform.forward.normalized * objDistance;
                temp.transform.RotateAround(this.transform.position, Vector3.up, itemRot[2]);
                spot.setIndex(2);
            }
            spotAssignement(spot, text, temp);
            objectsOnDisplay.Add(spot);
            temp.transform.LookAt(this.transform);
            temp.transform.Rotate(-90f, 0f, 180f);
            aimARText(count2);
            count2++;
        }
    }
Esempio n. 3
0
    void Update()
    {
        if (active)
        {
            //rotates objects
            if (gripButtonDown)
            {
                float distance = Vector3.Distance(wand.transform.position, interactionPoint.position);

                for (int i = objectsOnDisplay.Count - 1; i >= 0; i--)
                {
                    if (Vector3.Distance(wand.transform.position, this.transform.right) > Vector3.Distance(interactionPoint.transform.position, this.transform.right))
                    {
                        itemRot[i] -= distance * rotationSpeed;
                    }
                    else
                    {
                        itemRot[i] += distance * rotationSpeed;
                    }

                    GameObject currObj = objectsOnDisplay[i].getObj();
                    updateObj(currObj, i);
                    updateText(i, currObj);

                    if (itemRot[i] > 30)
                    {
                        float diff = Mathf.Abs(itemRot[i] - 30);
                        itemRot[i] = -30 + diff;

                        addBackToListAndRemove(i);
                    }
                    else if (itemRot[i] < -30)
                    {
                        float diff = Mathf.Abs(itemRot[i] + 30);
                        itemRot[i] = 30 - diff;

                        addBackToListAndRemove(i);
                    }
                }
            }

            //check if object has been thrown
            for (int i = objectsOnDisplay.Count - 1; i >= 0; i--)
            {
                if (!object.ReferenceEquals(null, objectsOnDisplay[i]))
                {
                    if (Vector3.Distance(objectsOnDisplay[i].getObj().transform.position, this.transform.position) >= 2.0f)
                    {
                        if (cartController.removeQuantityFromCart(objectsOnDisplay[i].getProd().getID(), 1))
                        {
                            destroyTextAndObj(i);
                        }
                        else
                        {
                            objectsOnDisplay[i].setText("Quantity: " + objectsOnDisplay[i].getProd().getQuantity());
                            objectsOnDisplay[i].getObj().transform.position = this.transform.position + this.transform.forward.normalized * objDistance;
                            objectsOnDisplay[i].getObj().transform.parent   = this.transform;
                            objectsOnDisplay[i].getObj().transform.rotation = new Quaternion(0f, 0f, 0f, 0f);
                            objectsOnDisplay[i].getObj().transform.LookAt(this.transform);
                            objectsOnDisplay[i].getObj().transform.Rotate(-90f, 0f, 180f);

                            int index = objectsOnDisplay.IndexOf(objectsOnDisplay[i]);
                            objectsOnDisplay[i].getObj().GetComponent <Rigidbody>().isKinematic = true;

                            objectsOnDisplay[i].getObj().GetComponent <BoxCollider>().isTrigger = true;
                            aimARText(i);
                            if (i == 0)
                            {
                                objectsOnDisplay[i].getObj().transform.RotateAround(this.transform.position, Vector3.up, itemRot[0]);
                            }
                            else if (i == 1)
                            {
                                objectsOnDisplay[i].getObj().transform.RotateAround(this.transform.position, Vector3.up, itemRot[1]);
                            }
                            else if (i == 2)
                            {
                                objectsOnDisplay[i].getObj().transform.RotateAround(this.transform.position, Vector3.up, itemRot[2]);
                            }
                        }
                    }
                }
            }

            //creates new object if needed
            while (objectsOnDisplay.Count < 3 && listOfItems.Count > 0)
            {
                ARSpot spot = new ARSpot();
                Debug.Log("objName: " + listOfItems[0].getName());
                GameObject temp = (GameObject)Instantiate(Resources.Load(listOfItems[0].getName()));
                GameObject text = (GameObject)Instantiate(Resources.Load("ARtext"));

                initializeARObj(text, temp);
                bool index0Exists = false;
                bool index1Exists = false;
                bool index2Exists = false;
                foreach (ARSpot item in objectsOnDisplay)
                {
                    int index = item.getIndex();
                    if (index == 0)
                    {
                        index0Exists = true;
                    }
                    else if (index == 1)
                    {
                        index1Exists = true;
                    }
                    else if (index == 2)
                    {
                        index2Exists = true;
                    }
                }
                objectSettings(temp);

                spotAssignement(spot, text, temp);

                if (!index0Exists)
                {
                    spot.setIndex(0);
                    objectsOnDisplay.Insert(0, spot);
                    objectsOnDisplay[0].getObj().transform.position = this.transform.position + this.transform.forward.normalized * objDistance;
                    objectsOnDisplay[0].getObj().transform.RotateAround(this.transform.position, Vector3.up, itemRot[0]);
                    index0Exists = false;
                    Debug.Log("Adding at index: " + 0);
                }
                else if (!index1Exists)
                {
                    spot.setIndex(1);
                    objectsOnDisplay.Insert(1, spot);
                    objectsOnDisplay[1].getObj().transform.position = this.transform.position + this.transform.forward.normalized * objDistance;
                    objectsOnDisplay[1].getObj().transform.RotateAround(this.transform.position, Vector3.up, itemRot[1]);
                    index1Exists = false;
                    Debug.Log("Adding at index: " + 1);
                }
                else if (!index2Exists)
                {
                    spot.setIndex(2);
                    objectsOnDisplay.Insert(2, spot);
                    objectsOnDisplay[2].getObj().transform.position = this.transform.position + this.transform.forward.normalized * objDistance;
                    objectsOnDisplay[2].getObj().transform.RotateAround(this.transform.position, Vector3.up, itemRot[2]);
                    index2Exists = false;
                    Debug.Log("Adding at index: " + 2);
                }
                aimARText(0);
            }
        }
    }