Exemple #1
0
    IEnumerator TranslateBoxToPosition(BoxDatasController _box, int previousPos)
    {
        int     finalPos = boxInPos[_box];
        Vector3 startPos = _box.transform.position;
        float   timePass = 0f;

        float timeNeeded = 1f * (previousPos - finalPos);

        bool posReleased = false;

        while (timePass < timeNeeded && previousPos != finalPos)
        {
            timePass += Time.deltaTime;

            if (!posReleased)
            {
                PosFree.Add(previousPos);
                posReleased = true;
            }

            _box.transform.position = Vector3.Lerp(startPos, PosInstantiation[finalPos].position, timePass / timeNeeded);

            yield return(0);
        }

        if (finalPos == 0)
        {
            _box.SetActive(true);
        }

        yield return(0);
    }
Exemple #2
0
    IEnumerator InstantiateBox()
    {
        while (boxToInstantiate.Count > 0 && PosFree.Count > 0)
        {
            yield return(new WaitForSeconds(1.2f));

            if (PosFree.Contains(PosInstantiation.Count() - 2))
            {
                int posIndex = PosInstantiation.Count() - 1;
                int finalPosIndex;

                Poolable           foodToInstantiate = PoolManager.Instance.Get(boxToInstantiate[0], true);
                BoxDatasController box  = foodToInstantiate.GetComponent <BoxDatasController>();
                PhotonView         view = foodToInstantiate.GetComponent <PhotonView>();

                foodToInstantiate.transform.position = PosInstantiation[posIndex].position;
                foodToInstantiate.transform.rotation = PosInstantiation[posIndex].rotation;

                box.Init();
                box.SetActive(false);
                box.Grabable.onGrab += OnGrabBox;

                boxInPos.Add(box, posIndex);

                PosFree.Remove(posIndex);

                finalPosIndex = GetFinalBoxPosition(posIndex);

                boxInPos[box] = finalPosIndex;
                PosFree.Remove(finalPosIndex);

                StartCoroutine(TranslateBoxToPosition(box, posIndex));

                photonView.RPC("InstantiateBox", RpcTarget.Others, boxToInstantiate[0].Key, boxToInstantiate[0].Value, posIndex, finalPosIndex, view.ViewID);

                boxToInstantiate.RemoveAt(0);
            }

            yield return(0);
        }

        yield return(0);
    }
Exemple #3
0
    void InstantiateBox(string _alimentName, AlimentState _alimentState, int posFree, int finalPos, int viewID)
    {
        //Debug.Log("Receive RPC InstantiateBox :" + _alimentName + " AlimentState:" + _alimentState + " viewID:" + viewID);
        KeyValuePair <string, AlimentState> key = new KeyValuePair <string, AlimentState>(_alimentName, _alimentState);

        Poolable           foodToInstantiate = PoolManager.Instance.Get(key, viewID);
        BoxDatasController box = foodToInstantiate.GetComponent <BoxDatasController>();

        foodToInstantiate.transform.position = PosInstantiation[posFree].position;
        foodToInstantiate.transform.rotation = PosInstantiation[posFree].rotation;

        box.Init();
        box.SetActive(false);
        box.Grabable.onGrab += OnGrabBox;

        boxInPos.Add(box, posFree);

        PosFree.Remove(posFree);

        boxInPos[box] = finalPos;
        PosFree.Remove(finalPos);

        StartCoroutine(TranslateBoxToPosition(box, posFree));
    }