public static void ClearAllNavMeshes() { using var state = GameEnvironment.Typical.Skyrim(SkyrimRelease.SkyrimSE); foreach (var navContext in state.LoadOrder.PriorityOrder.ANavigationMesh().WinningContextOverrides(state.LinkCache)) { var navMesh = navContext.Record; switch (navMesh) { case ICellNavigationMeshGetter cellNavGetter: CellNavigationMesh cellNav = (CellNavigationMesh)navContext; // Clear the triangles if they exist? cellNav.Data?.Triangles.Clear(); break; case IWorldspaceNavigationMeshGetter worldNav: // some code break; default: throw new NotImplementedException(); } } }
static bool ParseTemporaryOutliers(MutagenFrame frame, ICellInternal obj) { var majorMeta = frame.GetMajorRecord(); var nextHeader = majorMeta.RecordType; if (nextHeader.Equals(RecordTypes.NAVM)) { if (frame.MetaData.InWorldspace) { obj.NavigationMeshes.Add( WorldspaceNavigationMesh.CreateFromBinary( frame.SpawnWithLength(majorMeta.TotalLength), recordTypeConverter: null)); } else { obj.NavigationMeshes.Add( CellNavigationMesh.CreateFromBinary( frame.SpawnWithLength(majorMeta.TotalLength), recordTypeConverter: null)); } return(true); } else if (nextHeader.Equals(RecordTypes.LAND)) { if (obj.Landscape != null) { throw new ArgumentException("Had more than one landscape"); } obj.Landscape = Landscape.CreateFromBinary( frame.SpawnWithLength(majorMeta.TotalLength), recordTypeConverter: null); return(true); } return(false); }