public static void load() { LevelNavigation._models = new GameObject().transform; LevelNavigation.models.name = "Navigation"; LevelNavigation.models.parent = Level.level; LevelNavigation.models.tag = "Logic"; LevelNavigation.models.gameObject.layer = LayerMasks.LOGIC; LevelNavigation._bounds = new List <Bounds>(); LevelNavigation.flagData = new List <FlagData>(); if (ReadWrite.fileExists(Level.info.path + "/Environment/Bounds.dat", false, false)) { River river = new River(Level.info.path + "/Environment/Bounds.dat", false); byte b = river.readByte(); if (b > 0) { byte b2 = river.readByte(); for (byte b3 = 0; b3 < b2; b3 += 1) { Vector3 vector = river.readSingleVector3(); Vector3 vector2 = river.readSingleVector3(); LevelNavigation.bounds.Add(new Bounds(vector, vector2)); } } river.closeRiver(); } if (ReadWrite.fileExists(Level.info.path + "/Environment/Flags_Data.dat", false, false)) { River river2 = new River(Level.info.path + "/Environment/Flags_Data.dat", false); byte b4 = river2.readByte(); if (b4 > 0) { byte b5 = river2.readByte(); for (byte b6 = 0; b6 < b5; b6 += 1) { string newDifficultyGUID = river2.readString(); byte newMaxZombies = 64; if (b4 > 1) { newMaxZombies = river2.readByte(); } bool newSpawnZombies = true; if (b4 > 2) { newSpawnZombies = river2.readBoolean(); } LevelNavigation.flagData.Add(new FlagData(newDifficultyGUID, newMaxZombies, newSpawnZombies)); } } river2.closeRiver(); } if (LevelNavigation.flagData.Count < LevelNavigation.bounds.Count) { for (int i = LevelNavigation.flagData.Count; i < LevelNavigation.bounds.Count; i++) { LevelNavigation.flagData.Add(new FlagData(string.Empty, 64, true)); } } if (Level.isEditor) { LevelNavigation.flags = new List <Flag>(); Object.Destroy(AstarPath.active.GetComponent <TileHandlerHelpers>()); if (ReadWrite.fileExists(Level.info.path + "/Environment/Flags.dat", false, false)) { River river3 = new River(Level.info.path + "/Environment/Flags.dat", false); byte b7 = river3.readByte(); if (b7 > 2) { byte b8 = river3.readByte(); for (byte b9 = 0; b9 < b8; b9 += 1) { Vector3 newPoint = river3.readSingleVector3(); float num = river3.readSingle(); float num2 = river3.readSingle(); if (b7 < 4) { num *= 0.5f; num2 *= 0.5f; } RecastGraph recastGraph = null; if (ReadWrite.fileExists(string.Concat(new object[] { Level.info.path, "/Environment/Navigation_", b9, ".dat" }), false, false)) { River river4 = new River(string.Concat(new object[] { Level.info.path, "/Environment/Navigation_", b9, ".dat" }), false); byte b10 = river4.readByte(); if (b10 > 0) { recastGraph = LevelNavigation.buildGraph(river4); } river4.closeRiver(); } if (recastGraph == null) { recastGraph = LevelNavigation.addGraph(); } LevelNavigation.flags.Add(new Flag(newPoint, num, num2, recastGraph, LevelNavigation.flagData[(int)b9])); } } river3.closeRiver(); } } else if (Provider.isServer) { byte b11 = 0; while (ReadWrite.fileExists(string.Concat(new object[] { Level.info.path, "/Environment/Navigation_", b11, ".dat" }), false, false)) { River river5 = new River(string.Concat(new object[] { Level.info.path, "/Environment/Navigation_", b11, ".dat" }), false); byte b12 = river5.readByte(); if (b12 > 0) { LevelNavigation.buildGraph(river5); } river5.closeRiver(); b11 += 1; } } }
public static void load() { LevelRoads._models = new GameObject().transform; LevelRoads.models.name = "Roads"; LevelRoads.models.parent = Level.level; LevelRoads.models.tag = "Logic"; LevelRoads.models.gameObject.layer = LayerMasks.LOGIC; if (ReadWrite.fileExists(Level.info.path + "/Environment/Roads.unity3d", false, false)) { Bundle bundle = Bundles.getBundle(Level.info.path + "/Environment/Roads.unity3d", false); Object[] array = bundle.load(); bundle.unload(); LevelRoads._materials = new RoadMaterial[array.Length]; for (int i = 0; i < LevelRoads.materials.Length; i++) { LevelRoads.materials[i] = new RoadMaterial((Texture2D)array[i]); } } else { LevelRoads._materials = new RoadMaterial[0]; } LevelRoads.roads = new List <Road>(); if (ReadWrite.fileExists(Level.info.path + "/Environment/Roads.dat", false, false)) { River river = new River(Level.info.path + "/Environment/Roads.dat", false); byte b = river.readByte(); if (b > 0) { byte b2 = river.readByte(); for (byte b3 = 0; b3 < b2; b3 += 1) { if ((int)b3 >= LevelRoads.materials.Length) { break; } LevelRoads.materials[(int)b3].width = river.readSingle(); LevelRoads.materials[(int)b3].height = river.readSingle(); LevelRoads.materials[(int)b3].depth = river.readSingle(); if (b > 1) { LevelRoads.materials[(int)b3].offset = river.readSingle(); } LevelRoads.materials[(int)b3].isConcrete = river.readBoolean(); } } river.closeRiver(); } if (ReadWrite.fileExists(Level.info.path + "/Environment/Paths.dat", false, false)) { River river2 = new River(Level.info.path + "/Environment/Paths.dat", false); byte b4 = river2.readByte(); if (b4 > 1) { ushort num = river2.readUInt16(); for (ushort num2 = 0; num2 < num; num2 += 1) { ushort num3 = river2.readUInt16(); byte newMaterial = river2.readByte(); bool newLoop = b4 > 2 && river2.readBoolean(); List <RoadJoint> list = new List <RoadJoint>(); for (ushort num4 = 0; num4 < num3; num4 += 1) { Vector3 vertex = river2.readSingleVector3(); Vector3[] array2 = new Vector3[2]; if (b4 > 2) { array2[0] = river2.readSingleVector3(); array2[1] = river2.readSingleVector3(); } ERoadMode mode; if (b4 > 2) { mode = (ERoadMode)river2.readByte(); } else { mode = ERoadMode.FREE; } float offset; if (b4 > 4) { offset = river2.readSingle(); } else { offset = 0f; } bool ignoreTerrain = b4 > 3 && river2.readBoolean(); RoadJoint item = new RoadJoint(vertex, array2, mode, offset, ignoreTerrain); list.Add(item); } if (b4 < 3) { for (ushort num5 = 0; num5 < num3; num5 += 1) { RoadJoint roadJoint = list[(int)num5]; if (num5 == 0) { roadJoint.setTangent(0, (roadJoint.vertex - list[(int)(num5 + 1)].vertex).normalized * 2.5f); roadJoint.setTangent(1, (list[(int)(num5 + 1)].vertex - roadJoint.vertex).normalized * 2.5f); } else if (num5 == num3 - 1) { roadJoint.setTangent(0, (list[(int)(num5 - 1)].vertex - roadJoint.vertex).normalized * 2.5f); roadJoint.setTangent(1, (roadJoint.vertex - list[(int)(num5 - 1)].vertex).normalized * 2.5f); } else { roadJoint.setTangent(0, (list[(int)(num5 - 1)].vertex - roadJoint.vertex).normalized * 2.5f); roadJoint.setTangent(1, (list[(int)(num5 + 1)].vertex - roadJoint.vertex).normalized * 2.5f); } } } LevelRoads.roads.Add(new Road(newMaterial, newLoop, list)); } } else if (b4 > 0) { byte b5 = river2.readByte(); for (byte b6 = 0; b6 < b5; b6 += 1) { byte b7 = river2.readByte(); byte newMaterial2 = river2.readByte(); List <RoadJoint> list2 = new List <RoadJoint>(); for (byte b8 = 0; b8 < b7; b8 += 1) { Vector3 vertex2 = river2.readSingleVector3(); Vector3[] tangents = new Vector3[2]; ERoadMode mode2 = ERoadMode.FREE; RoadJoint item2 = new RoadJoint(vertex2, tangents, mode2, 0f, false); list2.Add(item2); } for (byte b9 = 0; b9 < b7; b9 += 1) { RoadJoint roadJoint2 = list2[(int)b9]; if (b9 == 0) { roadJoint2.setTangent(0, (roadJoint2.vertex - list2[(int)(b9 + 1)].vertex).normalized * 2.5f); roadJoint2.setTangent(1, (list2[(int)(b9 + 1)].vertex - roadJoint2.vertex).normalized * 2.5f); } else if (b9 == b7 - 1) { roadJoint2.setTangent(0, (list2[(int)(b9 - 1)].vertex - roadJoint2.vertex).normalized * 2.5f); roadJoint2.setTangent(1, (roadJoint2.vertex - list2[(int)(b9 - 1)].vertex).normalized * 2.5f); } else { roadJoint2.setTangent(0, (list2[(int)(b9 - 1)].vertex - roadJoint2.vertex).normalized * 2.5f); roadJoint2.setTangent(1, (list2[(int)(b9 + 1)].vertex - roadJoint2.vertex).normalized * 2.5f); } } LevelRoads.roads.Add(new Road(newMaterial2, false, list2)); } } river2.closeRiver(); } if (LevelGround.terrain != null) { LevelRoads.buildMeshes(); } if (!LevelRoads.isListeningForLandscape) { LevelRoads.isListeningForLandscape = true; if (LevelRoads.< > f__mg$cache0 == null) { LevelRoads.< > f__mg$cache0 = new LandscapeLoadedHandler(LevelRoads.handleLandscapeLoaded); } Landscape.loaded += LevelRoads.< > f__mg$cache0; } }
public static void load() { LevelVehicles._models = new GameObject().transform; LevelVehicles.models.name = "Vehicles"; LevelVehicles.models.parent = Level.spawns; LevelVehicles.models.tag = "Logic"; LevelVehicles.models.gameObject.layer = LayerMasks.LOGIC; if (Level.isEditor || Provider.isServer) { LevelVehicles._tables = new List <VehicleTable>(); LevelVehicles._spawns = new List <VehicleSpawnpoint>(); if (ReadWrite.fileExists(Level.info.path + "/Spawns/Vehicles.dat", false, false)) { River river = new River(Level.info.path + "/Spawns/Vehicles.dat", false); byte b = river.readByte(); if (b > 1 && b < 3) { river.readSteamID(); } byte b2 = river.readByte(); for (byte b3 = 0; b3 < b2; b3 += 1) { Color newColor = river.readColor(); string text = river.readString(); ushort num; if (b > 3) { num = river.readUInt16(); if (num != 0 && SpawnTableTool.resolve(num) == 0) { Assets.errors.Add(string.Concat(new object[] { Level.info.name, " vehicle table \"", text, "\" references invalid spawn table ", num, "!" })); } } else { num = 0; } List <VehicleTier> list = new List <VehicleTier>(); byte b4 = river.readByte(); for (byte b5 = 0; b5 < b4; b5 += 1) { string newName = river.readString(); float newChance = river.readSingle(); List <VehicleSpawn> list2 = new List <VehicleSpawn>(); byte b6 = river.readByte(); for (byte b7 = 0; b7 < b6; b7 += 1) { ushort newVehicle = river.readUInt16(); list2.Add(new VehicleSpawn(newVehicle)); } list.Add(new VehicleTier(list2, newName, newChance)); } LevelVehicles.tables.Add(new VehicleTable(list, newColor, text, num)); if (!Level.isEditor) { LevelVehicles.tables[(int)b3].buildTable(); } } ushort num2 = river.readUInt16(); for (int i = 0; i < (int)num2; i++) { byte newType = river.readByte(); Vector3 newPoint = river.readSingleVector3(); float newAngle = (float)(river.readByte() * 2); LevelVehicles.spawns.Add(new VehicleSpawnpoint(newType, newPoint, newAngle)); } river.closeRiver(); } } }
// Token: 0x06002560 RID: 9568 RVA: 0x000D90CC File Offset: 0x000D74CC public static void load() { LevelNodes._models = new GameObject().transform; LevelNodes.models.name = "Nodes"; LevelNodes.models.parent = Level.level; LevelNodes.models.tag = "Logic"; LevelNodes.models.gameObject.layer = LayerMasks.LOGIC; LevelNodes._nodes = new List <Node>(); if (ReadWrite.fileExists(Level.info.path + "/Environment/Nodes.dat", false, false)) { River river = new River(Level.info.path + "/Environment/Nodes.dat", false); byte b = river.readByte(); if (b > 0) { ushort num = (ushort)river.readByte(); for (ushort num2 = 0; num2 < num; num2 += 1) { Vector3 vector = river.readSingleVector3(); ENodeType enodeType = (ENodeType)river.readByte(); if (enodeType == ENodeType.LOCATION) { string newName = river.readString(); LevelNodes.nodes.Add(new LocationNode(vector, newName)); } else if (enodeType == ENodeType.SAFEZONE) { float newRadius = river.readSingle(); bool newHeight = false; if (b > 1) { newHeight = river.readBoolean(); } bool newNoWeapons = true; if (b > 4) { newNoWeapons = river.readBoolean(); } bool newNoBuildables = true; if (b > 4) { newNoBuildables = river.readBoolean(); } LevelNodes.nodes.Add(new SafezoneNode(vector, newRadius, newHeight, newNoWeapons, newNoBuildables)); } else if (enodeType == ENodeType.PURCHASE) { float newRadius2 = river.readSingle(); ushort newID = river.readUInt16(); uint newCost = river.readUInt32(); LevelNodes.nodes.Add(new PurchaseNode(vector, newRadius2, newID, newCost)); } else if (enodeType == ENodeType.ARENA) { float newRadius3 = river.readSingle(); LevelNodes.nodes.Add(new ArenaNode(vector, newRadius3)); } else if (enodeType == ENodeType.DEADZONE) { float newRadius4 = river.readSingle(); LevelNodes.nodes.Add(new DeadzoneNode(vector, newRadius4)); } else if (enodeType == ENodeType.AIRDROP) { ushort num3 = river.readUInt16(); byte b2; byte b3; if (SpawnTableTool.resolve(num3) == 0 && Regions.tryGetCoordinate(vector, out b2, out b3)) { Assets.errors.Add(string.Concat(new object[] { Level.info.name, " airdrop references invalid spawn table ", num3, " at (", b2, ", ", b3, ")!" })); } LevelNodes.nodes.Add(new AirdropNode(vector, num3)); } else if (enodeType == ENodeType.EFFECT) { byte newShape = 0; if (b > 2) { newShape = river.readByte(); } float newRadius5 = river.readSingle(); Vector3 newBounds = Vector3.one; if (b > 2) { newBounds = river.readSingleVector3(); } ushort newID2 = river.readUInt16(); bool newNoWater = river.readBoolean(); bool newNoLighting = false; if (b > 3) { newNoLighting = river.readBoolean(); } LevelNodes.nodes.Add(new EffectNode(vector, (ENodeShape)newShape, newRadius5, newBounds, newID2, newNoWater, newNoLighting)); } } } river.closeRiver(); } }