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();
                }
            }
        }
示例#2
0
            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);
            }