Esempio n. 1
0
 /// <summary>
 /// Saves the graph to a file
 /// </summary>
 /// <param name="fileName">File name</param>
 /// <param name="graph">Instance to save</param>
 public override void Save(string fileName, IGraph graph)
 {
     if (graph is Graph nmGraph)
     {
         GraphFile.Save(fileName, nmGraph);
     }
     else
     {
         throw new EngineException(string.Format("Bad navigation mesh graph type: {0}", graph.GetType()));
     }
 }
Esempio n. 2
0
        /// <summary>
        /// Loads the graph from a file
        /// </summary>
        /// <param name="fileName">File name</param>
        public override IGraph Load(string fileName)
        {
            // Initialize the input data
            this.ChunkyMesh = ChunkyTriMesh.Build(this);

            // Load file
            var graph = GraphFile.Load(fileName);

            // Set input data
            graph.Input = this;

            return(graph);
        }
Esempio n. 3
0
        /// <summary>
        /// Creates a graph from a graph file
        /// </summary>
        /// <param name="file">Graph file</param>
        /// <returns>Returns the graph</returns>
        public static Graph FromGraphFile(GraphFile file)
        {
            var meshQueryDict = new Dictionary <Agent, NavMeshQuery>();

            foreach (var key in file.Dictionary.Keys)
            {
                var rcFile  = file.Dictionary[key];
                var nm      = NavMeshFile.FromNavmeshFile(rcFile);
                var mmQuery = new NavMeshQuery();
                mmQuery.Init(nm, file.Settings.MaxNodes);

                meshQueryDict.Add(key, mmQuery);
            }

            return(new Graph
            {
                Settings = file.Settings,
                MeshQueryDictionary = meshQueryDict,
            });
        }