using System.Collections.Generic; using NitroxModel.DataStructures; using NitroxModel.DataStructures.GameLogic; using NitroxModel.Helper; namespace NitroxModel_Subnautica.Helper { /// /// Static information about the game world loaded by Subnautica that isn't (and shouldn't) be retrievable from the game directly. /// public class SubnauticaMap : IMap { private const int BATCH_SIZE = 160; private const int SKYBOX_METERS_ABOVE_WATER = 160; /// /// TechType can't be introspected at runtime in RELEASE mode because its reflection info is elided. /// public static readonly List GLOBAL_ROOT_TECH_TYPES = new List { new NitroxTechType(nameof(TechType.Pipe)), new NitroxTechType(nameof(TechType.Constructor)), new NitroxTechType(nameof(TechType.Flare)), new NitroxTechType(nameof(TechType.Gravsphere)), new NitroxTechType(nameof(TechType.PipeSurfaceFloater)), new NitroxTechType(nameof(TechType.SmallStorage)), new NitroxTechType(nameof(TechType.CyclopsDecoy)), new NitroxTechType(nameof(TechType.LEDLight)), new NitroxTechType(nameof(TechType.Beacon)) }; public int ItemLevelOfDetail => 3; public int BatchSize => 160; public NitroxInt3 BatchDimensions => new NitroxInt3(BatchSize, BatchSize, BatchSize); public NitroxInt3 DimensionsInMeters => new NitroxInt3(4096, 3200, 4096); public NitroxInt3 DimensionsInBatches => NitroxInt3.Ceil(DimensionsInMeters / BATCH_SIZE); public NitroxInt3 BatchDimensionCenter => new NitroxInt3(DimensionsInMeters.X / 2, DimensionsInMeters.Y - SKYBOX_METERS_ABOVE_WATER, DimensionsInMeters.Z / 2); public List GlobalRootTechTypes { get; } = GLOBAL_ROOT_TECH_TYPES; } }