Exemplo n.º 1
0
        void LoadBakedData()
        {
            if (_bakeDataFileName.Length > 0 && File.Exists(_bakeDataFileName))
            {
                string bakedDataJson = File.ReadAllText(_bakeDataFileName);

                NavGridBakeDataModel navGridBakeData = JsonUtility.FromJson <NavGridBakeDataModel>(bakedDataJson);
                _navUnitSize = navGridBakeData.NavUnitSize;
                navGridSizeX = navGridBakeData.NavGridSizeX;
                navGridSizeY = navGridBakeData.NavGridSizeY;
                navGridSizeZ = navGridBakeData.NavGridSizeZ;

                ResetNavUnits();

                int l = 0;
                for (int j = 0; j < navGridSizeY; j++)
                {
                    for (int k = 0; k < navGridSizeZ; k++)
                    {
                        for (int i = 0; i < navGridSizeX; i++)
                        {
                            _navUnits[l] = _navUnits[l].UpdateFromBakedData(this, navGridBakeData.NavUnits[l]);
                            l++;
                        }
                    }
                }
            }
        }
Exemplo n.º 2
0
        void BakeNavGrid()
        {
            ResetNavUnits();

            int l = 0;

            for (int j = 0; j < navGridSizeY; j++)
            {
                for (int k = 0; k < navGridSizeZ; k++)
                {
                    for (int i = 0; i < navGridSizeX; i++)
                    {
                        _navUnits[l] = _navUnits[l].Update(this);
                        l++;
                    }
                }
            }

            SceneView.RepaintAll();

            NavGridBakeDataModel navGridBakeData = new NavGridBakeDataModel
            {
                NavUnitSize  = _navUnitSize,
                NavGridSizeX = navGridSizeX,
                NavGridSizeY = navGridSizeY,
                NavGridSizeZ = navGridSizeZ,
                NavUnits     = new NavUnitBakeDataModel[navGridSizeX * navGridSizeY * navGridSizeZ]
            };


            l = 0;
            for (int j = 0; j < navGridSizeY; j++)
            {
                for (int k = 0; k < navGridSizeZ; k++)
                {
                    for (int i = 0; i < navGridSizeX; i++)
                    {
                        navGridBakeData.NavUnits[l] = new NavUnitBakeDataModel
                        {
                            IsNavigable = _navUnits[l].IsNavigable() ? 1 : 0
                        };
                        l++;
                    }
                }
            }

            string bakeDataDir = SceneManager.GetActiveScene().path;

            bakeDataDir = bakeDataDir.Substring(0, bakeDataDir.Length - Path.GetFileName(bakeDataDir).Length) +
                          "NavGridData/";

            Directory.CreateDirectory(bakeDataDir);

            _bakeDataFileName = bakeDataDir + "navGridBakedData";

            File.WriteAllText(_bakeDataFileName, JsonUtility.ToJson(navGridBakeData));

            AssetDatabase.Refresh();
        }