public void CreateCubeLayers(Vector3 targetPosition) { GridUtils.BaseMaterial = BaseMaterial; int colorCounter = 0; GridPos pos = GridUtils.WorldToGrid(targetPosition, GridMinSize); GridPos vpos; GridPos gpos; float cubesize; worldObject = new GameObject("WorldRenderObject"); worldObject.transform.position = targetPosition; GameObject locObj; for (int z = -1; z <= 1; z++) { for (int x = -1; x <= 1; x++) { for (int y = -1; y <= 1; y++) { //Debug.Log(String.Format("{0} {1} {2}", gpos.x, gpos.y, gpos.z)); pos = GridUtils.WorldToGrid(targetPosition, GridMinSize * 9); gpos = new GridPos(pos.x + x, pos.y + y, pos.z + z); vpos = new GridPos(gpos.x * GridMinSize * 9, gpos.y * GridMinSize * 9, gpos.z * GridMinSize * 9); cubesize = GridMinSize * 9 / 2f ; //L3Dict.Add(gpos.ToKeyString(), GridUtils.CreateRenderCube(vpos, new Vector3(45f, 0.1f, 45f), GridUtils.BaseColors[colorCounter % 2 + 4], worldObject)); L3Dict.Add(gpos.ToKeyString(), GridUtils.CreateRenderCube(vpos, new Vector3(cubesize, cubesize, cubesize), GridUtils.BaseColors[colorCounter % 2 + 4], worldObject)); locObj = Instantiate(LocatorCube, vpos.ToVector3(), Quaternion.identity) as GameObject; locObj.transform.parent = worldObject.transform; pos = GridUtils.WorldToGrid(targetPosition, GridMinSize * 3); gpos = new GridPos(pos.x + x, pos.y + y, pos.z + z); vpos = new GridPos(gpos.x * GridMinSize * 3, gpos.y * GridMinSize * 3, gpos.z * GridMinSize * 3); cubesize = GridMinSize * 3 / 2f; //L2Dict.Add(gpos.ToKeyString(), GridUtils.CreateRenderCube(vpos, new Vector3(15f, 1f, 15f), GridUtils.BaseColors[colorCounter % 2 + 2], worldObject)); L2Dict.Add(gpos.ToKeyString(), GridUtils.CreateRenderCube(vpos, new Vector3(cubesize, cubesize, cubesize), GridUtils.BaseColors[colorCounter % 2 + 2], worldObject)); locObj = Instantiate(LocatorCube, vpos.ToVector3(), Quaternion.identity) as GameObject; locObj.transform.parent = worldObject.transform; pos = GridUtils.WorldToGrid(targetPosition, GridMinSize); gpos = new GridPos(pos.x + x, pos.y + y, pos.z + z); vpos = new GridPos(gpos.x * GridMinSize, gpos.y * GridMinSize, gpos.z * GridMinSize); cubesize = GridMinSize / 2f; //L1Dict.Add(gpos.ToKeyString(), GridUtils.CreateRenderCube(vpos, new Vector3(5f, 2f, 5f), GridUtils.BaseColors[colorCounter++ % 2], worldObject)); L1Dict.Add(gpos.ToKeyString(), GridUtils.CreateRenderCube(vpos, new Vector3(cubesize, cubesize, cubesize), GridUtils.BaseColors[colorCounter++ % 2], worldObject)); locObj = Instantiate(LocatorCube, vpos.ToVector3(), Quaternion.identity) as GameObject; locObj.transform.parent = worldObject.transform; } } } EnabledTracking = true; }