コード例 #1
0
    void UpdateGridCubes(ref GridPos prevGridPosL, ref GridPos newGridPosL, int gridSize, Dictionary<String, GameObject> LDict, int level)
    {
        newGridPosL = GridUtils.WorldToGrid(playerObject.transform.position, gridSize);
        if (!prevGridPosL.Equals(newGridPosL))
        {
            GridPos deltaPos = prevGridPosL.Delta(newGridPosL);
            GridPos vPosL;
            string vPosKeyL;
            GameObject gObj;
            Vector3 newVector3;
            GridPos newGridPos;

            if (deltaPos.x != 0)
            {
                for (var i = -1; i <= 1; i++)
                {
                    for (var j = -1; j <= 1; j++)
                    {
                        vPosL = new GridPos(prevGridPosL.x - deltaPos.x, prevGridPosL.y + i, prevGridPosL.z + j);
                        vPosKeyL = vPosL.ToKeyString();

                        if (LDict.ContainsKey(vPosKeyL))
                        {
                            gObj = LDict[vPosKeyL];
                            LDict.Remove(vPosKeyL);

                            newGridPos = new GridPos(newGridPosL.x + deltaPos.x, prevGridPosL.y + i, prevGridPosL.z + j);

                            newVector3 = new Vector3(newGridPos.x * gridSize, newGridPos.y * gridSize, newGridPos.z * gridSize);
                            gObj.transform.position = newVector3;
                            LDict.Add(newGridPos.ToKeyString(), gObj);
                            StartCoroutine(TransitionRenderCube(gObj, level, newGridPos));
                        }
                        else
                        {
                            Debug.Log("KEY NOT FOUND :" + vPosKeyL);
                        }
                    }
                }
            }

            if (deltaPos.z != 0)
            {
                for (var i = -1 + deltaPos.x; i <= 1 + deltaPos.x; i++)
                {
                    for (var j = -1; j <= 1; j++)
                    {
                        vPosL = new GridPos(prevGridPosL.x + i, prevGridPosL.y + j, prevGridPosL.z - deltaPos.z);
                        vPosKeyL = vPosL.ToKeyString();

                        if (LDict.ContainsKey(vPosKeyL))
                        {
                            gObj = LDict[vPosKeyL];
                            LDict.Remove(vPosKeyL);

                            newGridPos = new GridPos(prevGridPosL.x + i, prevGridPosL.y + j, newGridPosL.z + deltaPos.z);

                            newVector3 = new Vector3(newGridPos.x * gridSize, newGridPos.y * gridSize, newGridPos.z * gridSize);
                            gObj.transform.position = newVector3;
                            LDict.Add(newGridPos.ToKeyString(), gObj);
                            StartCoroutine(TransitionRenderCube(gObj, level, newGridPos));
                        }
                        else
                        {
                            Debug.Log("KEY NOT FOUND :" + vPosKeyL);
                        }
                    }
                }
            }

            if (deltaPos.y != 0)
            {
                for (var i = -1 + deltaPos.x; i <= 1 + deltaPos.x; i++)
                {
                    for (var j = -1 + deltaPos.z; j <= 1 + deltaPos.z; j++)
                    {
                        vPosL = new GridPos(prevGridPosL.x + i, prevGridPosL.y - deltaPos.y, prevGridPosL.z + j);
                        vPosKeyL = vPosL.ToKeyString();

                        if (LDict.ContainsKey(vPosKeyL))
                        {
                            gObj = LDict[vPosKeyL];
                            LDict.Remove(vPosKeyL);

                            newGridPos = new GridPos(prevGridPosL.x + i, newGridPosL.y + deltaPos.y, prevGridPosL.z + j);

                            newVector3 = new Vector3(newGridPos.x * gridSize, newGridPos.y * gridSize, newGridPos.z * gridSize);
                            gObj.transform.position = newVector3;
                            LDict.Add(newGridPos.ToKeyString(), gObj);
                            StartCoroutine(TransitionRenderCube(gObj, level, newGridPos));
                        }
                        else
                        {
                            Debug.Log("KEY NOT FOUND :" + vPosKeyL);
                        }
                    }
                }
            }
            prevGridPosL = newGridPosL;
        }
    }