/// <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())); } }
/// <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); }
/// <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, }); }