// Token: 0x060028EC RID: 10476 RVA: 0x000F99C8 File Offset: 0x000F7DC8 private static void loadRegion(River river, List <LevelObject> objects) { for (;;) { ushort num = river.readUInt16(); if (num == 65535) { break; } ushort num2 = river.readUInt16(); byte[] array = river.readBytes(); if ((int)num >= objects.Count) { return; } LevelObject levelObject = objects[(int)num]; if (num2 == levelObject.id) { levelObject.state = array; if (!(levelObject.transform == null) && levelObject.asset != null) { if (levelObject.interactable != null) { if (levelObject.interactable is InteractableObjectBinaryState) { if (levelObject.asset.interactabilityReset >= 1f) { array[0] = 0; } } else if (levelObject.interactable is InteractableObjectResource) { if (levelObject.asset.rubble == EObjectRubble.DESTROY) { if (array.Length < 3) { array = levelObject.asset.getState(); levelObject.state = array; } } else if (array.Length < 2) { array = levelObject.asset.getState(); levelObject.state = array; } } levelObject.interactable.updateState(levelObject.asset, array); } if (levelObject.rubble != null) { array[array.Length - 1] = byte.MaxValue; levelObject.rubble.updateState(levelObject.asset, array); } } } } }
// Token: 0x06002FAF RID: 12207 RVA: 0x0013B9AC File Offset: 0x00139DAC public static void load() { SteamBlacklist._list = new List <SteamBlacklistID>(); if (ServerSavedata.fileExists("/Server/Blacklist.dat")) { River river = ServerSavedata.openRiver("/Server/Blacklist.dat", true); byte b = river.readByte(); if (b > 1) { ushort num = river.readUInt16(); for (ushort num2 = 0; num2 < num; num2 += 1) { CSteamID newPlayerID = river.readSteamID(); uint newIP; if (b > 2) { newIP = river.readUInt32(); } else { newIP = 0u; } CSteamID newJudgeID = river.readSteamID(); string newReason = river.readString(); uint newDuration = river.readUInt32(); uint newBanned = river.readUInt32(); SteamBlacklistID steamBlacklistID = new SteamBlacklistID(newPlayerID, newIP, newJudgeID, newReason, newDuration, newBanned); if (!steamBlacklistID.isExpired) { SteamBlacklist.list.Add(steamBlacklistID); } } } } }
// Token: 0x060030A6 RID: 12454 RVA: 0x0013F1D4 File Offset: 0x0013D5D4 public static void load() { SteamWhitelist._list = new List <SteamWhitelistID>(); if (ServerSavedata.fileExists("/Server/Whitelist.dat")) { River river = ServerSavedata.openRiver("/Server/Whitelist.dat", true); byte b = river.readByte(); if (b > 1) { ushort num = river.readUInt16(); for (ushort num2 = 0; num2 < num; num2 += 1) { CSteamID newSteamID = river.readSteamID(); string newTag = river.readString(); CSteamID newJudgeID = river.readSteamID(); SteamWhitelistID item = new SteamWhitelistID(newSteamID, newTag, newJudgeID); SteamWhitelist.list.Add(item); } } } }
// Token: 0x06002FA5 RID: 12197 RVA: 0x0013B6E0 File Offset: 0x00139AE0 public static void load() { SteamAdminlist._list = new List <SteamAdminID>(); SteamAdminlist.ownerID = CSteamID.Nil; if (ServerSavedata.fileExists("/Server/Adminlist.dat")) { River river = ServerSavedata.openRiver("/Server/Adminlist.dat", true); byte b = river.readByte(); if (b > 1) { ushort num = river.readUInt16(); for (ushort num2 = 0; num2 < num; num2 += 1) { CSteamID newPlayerID = river.readSteamID(); CSteamID newJudgeID = river.readSteamID(); SteamAdminID item = new SteamAdminID(newPlayerID, newJudgeID); SteamAdminlist.list.Add(item); } } } }
private static RecastGraph buildGraph(River river) { RecastGraph recastGraph = LevelNavigation.addGraph(); int graphIndex = AstarPath.active.astarData.GetGraphIndex(recastGraph); TriangleMeshNode.SetNavmeshHolder(graphIndex, recastGraph); recastGraph.forcedBoundsCenter = river.readSingleVector3(); recastGraph.forcedBoundsSize = river.readSingleVector3(); recastGraph.tileXCount = (int)river.readByte(); recastGraph.tileZCount = (int)river.readByte(); RecastGraph.NavmeshTile[] array = new RecastGraph.NavmeshTile[recastGraph.tileXCount * recastGraph.tileZCount]; recastGraph.SetTiles(array); for (int i = 0; i < recastGraph.tileZCount; i++) { for (int j = 0; j < recastGraph.tileXCount; j++) { RecastGraph.NavmeshTile navmeshTile = new RecastGraph.NavmeshTile(); navmeshTile.x = j; navmeshTile.z = i; navmeshTile.w = 1; navmeshTile.d = 1; navmeshTile.bbTree = new BBTree(navmeshTile); int num = j + i * recastGraph.tileXCount; array[num] = navmeshTile; navmeshTile.tris = new int[(int)river.readUInt16()]; for (int k = 0; k < navmeshTile.tris.Length; k++) { navmeshTile.tris[k] = (int)river.readUInt16(); } navmeshTile.verts = new Int3[(int)river.readUInt16()]; for (int l = 0; l < navmeshTile.verts.Length; l++) { navmeshTile.verts[l] = new Int3(river.readInt32(), river.readInt32(), river.readInt32()); } navmeshTile.nodes = new TriangleMeshNode[navmeshTile.tris.Length / 3]; num <<= 12; for (int m = 0; m < navmeshTile.nodes.Length; m++) { navmeshTile.nodes[m] = new TriangleMeshNode(AstarPath.active); TriangleMeshNode triangleMeshNode = navmeshTile.nodes[m]; triangleMeshNode.GraphIndex = (uint)graphIndex; triangleMeshNode.Penalty = 0u; triangleMeshNode.Walkable = true; triangleMeshNode.v0 = (navmeshTile.tris[m * 3] | num); triangleMeshNode.v1 = (navmeshTile.tris[m * 3 + 1] | num); triangleMeshNode.v2 = (navmeshTile.tris[m * 3 + 2] | num); triangleMeshNode.UpdatePositionFromVertices(); navmeshTile.bbTree.Insert(triangleMeshNode); } recastGraph.CreateNodeConnections(navmeshTile.nodes); } } for (int n = 0; n < recastGraph.tileZCount; n++) { for (int num2 = 0; num2 < recastGraph.tileXCount; num2++) { RecastGraph.NavmeshTile tile = array[num2 + n * recastGraph.tileXCount]; recastGraph.ConnectTileWithNeighbours(tile); } } return(recastGraph); }
public static void load() { LevelZombies._models = new GameObject().transform; LevelZombies.models.name = "Zombies"; LevelZombies.models.parent = Level.spawns; LevelZombies.models.tag = "Logic"; LevelZombies.models.gameObject.layer = LayerMasks.LOGIC; LevelZombies.tables = new List <ZombieTable>(); if (ReadWrite.fileExists(Level.info.path + "/Spawns/Zombies.dat", false, false)) { Block block = ReadWrite.readBlock(Level.info.path + "/Spawns/Zombies.dat", false, false, 0); byte b = block.readByte(); if (b > 3 && b < 5) { block.readSteamID(); } if (b > 2) { byte b2 = block.readByte(); for (byte b3 = 0; b3 < b2; b3 += 1) { Color newColor = block.readColor(); string newName = block.readString(); bool flag = block.readBoolean(); ushort newHealth = block.readUInt16(); byte newDamage = block.readByte(); byte newLootIndex = block.readByte(); ushort newLootID; if (b > 6) { newLootID = block.readUInt16(); } else { newLootID = 0; } uint newXP; if (b > 7) { newXP = block.readUInt32(); } else if (flag) { newXP = 40u; } else { newXP = 3u; } float newRegen = 10f; if (b > 5) { newRegen = block.readSingle(); } string newDifficultyGUID = string.Empty; if (b > 8) { newDifficultyGUID = block.readString(); } ZombieSlot[] array = new ZombieSlot[4]; byte b4 = block.readByte(); for (byte b5 = 0; b5 < b4; b5 += 1) { List <ZombieCloth> list = new List <ZombieCloth>(); float newChance = block.readSingle(); byte b6 = block.readByte(); for (byte b7 = 0; b7 < b6; b7 += 1) { ushort num = block.readUInt16(); if ((ItemAsset)Assets.find(EAssetType.ITEM, num) != null) { list.Add(new ZombieCloth(num)); } } array[(int)b5] = new ZombieSlot(newChance, list); } LevelZombies.tables.Add(new ZombieTable(array, newColor, newName, flag, newHealth, newDamage, newLootIndex, newLootID, newXP, newRegen, newDifficultyGUID)); } } else { byte b8 = block.readByte(); for (byte b9 = 0; b9 < b8; b9 += 1) { Color newColor2 = block.readColor(); string newName2 = block.readString(); byte newLootIndex2 = block.readByte(); ZombieSlot[] array2 = new ZombieSlot[4]; byte b10 = block.readByte(); for (byte b11 = 0; b11 < b10; b11 += 1) { List <ZombieCloth> list2 = new List <ZombieCloth>(); float newChance2 = block.readSingle(); byte b12 = block.readByte(); for (byte b13 = 0; b13 < b12; b13 += 1) { ushort num2 = block.readUInt16(); if ((ItemAsset)Assets.find(EAssetType.ITEM, num2) != null) { list2.Add(new ZombieCloth(num2)); } } array2[(int)b11] = new ZombieSlot(newChance2, list2); } LevelZombies.tables.Add(new ZombieTable(array2, newColor2, newName2, false, 100, 15, newLootIndex2, 0, 5u, 10f, string.Empty)); } } } LevelZombies._spawns = new List <ZombieSpawnpoint> [(int)Regions.WORLD_SIZE, (int)Regions.WORLD_SIZE]; for (byte b14 = 0; b14 < Regions.WORLD_SIZE; b14 += 1) { for (byte b15 = 0; b15 < Regions.WORLD_SIZE; b15 += 1) { LevelZombies.spawns[(int)b14, (int)b15] = new List <ZombieSpawnpoint>(); } } if (Level.isEditor) { if (ReadWrite.fileExists(Level.info.path + "/Spawns/Animals.dat", false, false)) { River river = new River(Level.info.path + "/Spawns/Animals.dat", false); byte b16 = river.readByte(); if (b16 > 0) { for (byte b17 = 0; b17 < Regions.WORLD_SIZE; b17 += 1) { for (byte b18 = 0; b18 < Regions.WORLD_SIZE; b18 += 1) { ushort num3 = river.readUInt16(); for (ushort num4 = 0; num4 < num3; num4 += 1) { byte newType = river.readByte(); Vector3 newPoint = river.readSingleVector3(); LevelZombies.spawns[(int)b17, (int)b18].Add(new ZombieSpawnpoint(newType, newPoint)); } } } } river.closeRiver(); } else { for (byte b19 = 0; b19 < Regions.WORLD_SIZE; b19 += 1) { for (byte b20 = 0; b20 < Regions.WORLD_SIZE; b20 += 1) { LevelZombies.spawns[(int)b19, (int)b20] = new List <ZombieSpawnpoint>(); if (ReadWrite.fileExists(string.Concat(new object[] { Level.info.path, "/Spawns/Animals_", b19, "_", b20, ".dat" }), false, false)) { River river2 = new River(string.Concat(new object[] { Level.info.path, "/Spawns/Animals_", b19, "_", b20, ".dat" }), false); byte b21 = river2.readByte(); if (b21 > 0) { ushort num5 = river2.readUInt16(); for (ushort num6 = 0; num6 < num5; num6 += 1) { byte newType2 = river2.readByte(); Vector3 newPoint2 = river2.readSingleVector3(); LevelZombies.spawns[(int)b19, (int)b20].Add(new ZombieSpawnpoint(newType2, newPoint2)); } river2.closeRiver(); } } } } } } else if (Provider.isServer) { LevelZombies._zombies = new List <ZombieSpawnpoint> [LevelNavigation.bounds.Count]; for (int i = 0; i < LevelZombies.zombies.Length; i++) { LevelZombies.zombies[i] = new List <ZombieSpawnpoint>(); } if (ReadWrite.fileExists(Level.info.path + "/Spawns/Animals.dat", false, false)) { River river3 = new River(Level.info.path + "/Spawns/Animals.dat", false); byte b22 = river3.readByte(); if (b22 > 0) { for (byte b23 = 0; b23 < Regions.WORLD_SIZE; b23 += 1) { for (byte b24 = 0; b24 < Regions.WORLD_SIZE; b24 += 1) { ushort num7 = river3.readUInt16(); for (ushort num8 = 0; num8 < num7; num8 += 1) { byte newType3 = river3.readByte(); Vector3 vector = river3.readSingleVector3(); byte b25; if (LevelNavigation.tryGetBounds(vector, out b25) && LevelNavigation.checkNavigation(vector)) { LevelZombies.zombies[(int)b25].Add(new ZombieSpawnpoint(newType3, vector)); } } } } } river3.closeRiver(); } else { for (byte b26 = 0; b26 < Regions.WORLD_SIZE; b26 += 1) { for (byte b27 = 0; b27 < Regions.WORLD_SIZE; b27 += 1) { if (ReadWrite.fileExists(string.Concat(new object[] { Level.info.path, "/Spawns/Animals_", b26, "_", b27, ".dat" }), false, false)) { River river4 = new River(string.Concat(new object[] { Level.info.path, "/Spawns/Animals_", b26, "_", b27, ".dat" }), false); byte b28 = river4.readByte(); if (b28 > 0) { ushort num9 = river4.readUInt16(); for (ushort num10 = 0; num10 < num9; num10 += 1) { byte newType4 = river4.readByte(); Vector3 vector2 = river4.readSingleVector3(); byte b29; if (LevelNavigation.tryGetBounds(vector2, out b29) && LevelNavigation.checkNavigation(vector2)) { LevelZombies.zombies[(int)b29].Add(new ZombieSpawnpoint(newType4, vector2)); } } river4.closeRiver(); } } } } } } }
// Token: 0x060024E6 RID: 9446 RVA: 0x000D33D8 File Offset: 0x000D17D8 public static void load() { LevelItems._models = new GameObject().transform; LevelItems.models.name = "Items"; LevelItems.models.parent = Level.spawns; LevelItems.models.tag = "Logic"; LevelItems.models.gameObject.layer = LayerMasks.LOGIC; if (Level.isEditor || Provider.isServer) { LevelItems._tables = new List <ItemTable>(); LevelItems._spawns = new List <ItemSpawnpoint> [(int)Regions.WORLD_SIZE, (int)Regions.WORLD_SIZE]; if (ReadWrite.fileExists(Level.info.path + "/Spawns/Items.dat", false, false)) { Block block = ReadWrite.readBlock(Level.info.path + "/Spawns/Items.dat", false, false, 0); byte b = block.readByte(); if (b > 1 && b < 3) { block.readSteamID(); } byte b2 = block.readByte(); for (byte b3 = 0; b3 < b2; b3 += 1) { Color newColor = block.readColor(); string text = block.readString(); ushort num; if (b > 3) { num = block.readUInt16(); if (num != 0 && SpawnTableTool.resolve(num) == 0) { Assets.errors.Add(string.Concat(new object[] { Level.info.name, " item table \"", text, "\" references invalid spawn table ", num, "!" })); } } else { num = 0; } List <ItemTier> list = new List <ItemTier>(); byte b4 = block.readByte(); for (byte b5 = 0; b5 < b4; b5 += 1) { string newName = block.readString(); float newChance = block.readSingle(); List <ItemSpawn> list2 = new List <ItemSpawn>(); byte b6 = block.readByte(); for (byte b7 = 0; b7 < b6; b7 += 1) { ushort num2 = block.readUInt16(); ItemAsset itemAsset = (ItemAsset)Assets.find(EAssetType.ITEM, num2); if (itemAsset != null && !itemAsset.isPro) { list2.Add(new ItemSpawn(num2)); } } if (list2.Count > 0) { list.Add(new ItemTier(list2, newName, newChance)); } } LevelItems.tables.Add(new ItemTable(list, newColor, text, num)); if (!Level.isEditor) { LevelItems.tables[(int)b3].buildTable(); } } } for (byte b8 = 0; b8 < Regions.WORLD_SIZE; b8 += 1) { for (byte b9 = 0; b9 < Regions.WORLD_SIZE; b9 += 1) { LevelItems.spawns[(int)b8, (int)b9] = new List <ItemSpawnpoint>(); } } if (ReadWrite.fileExists(Level.info.path + "/Spawns/Jars.dat", false, false)) { River river = new River(Level.info.path + "/Spawns/Jars.dat", false); byte b10 = river.readByte(); if (b10 > 0) { for (byte b11 = 0; b11 < Regions.WORLD_SIZE; b11 += 1) { for (byte b12 = 0; b12 < Regions.WORLD_SIZE; b12 += 1) { ushort num3 = river.readUInt16(); for (ushort num4 = 0; num4 < num3; num4 += 1) { byte newType = river.readByte(); Vector3 newPoint = river.readSingleVector3(); LevelItems.spawns[(int)b11, (int)b12].Add(new ItemSpawnpoint(newType, newPoint)); } } } } river.closeRiver(); } else { for (byte b13 = 0; b13 < Regions.WORLD_SIZE; b13 += 1) { for (byte b14 = 0; b14 < Regions.WORLD_SIZE; b14 += 1) { LevelItems.spawns[(int)b13, (int)b14] = new List <ItemSpawnpoint>(); if (ReadWrite.fileExists(string.Concat(new object[] { Level.info.path, "/Spawns/Items_", b13, "_", b14, ".dat" }), false, false)) { River river2 = new River(string.Concat(new object[] { Level.info.path, "/Spawns/Items_", b13, "_", b14, ".dat" }), false); byte b15 = river2.readByte(); if (b15 > 0) { ushort num5 = river2.readUInt16(); for (ushort num6 = 0; num6 < num5; num6 += 1) { byte newType2 = river2.readByte(); Vector3 newPoint2 = river2.readSingleVector3(); LevelItems.spawns[(int)b13, (int)b14].Add(new ItemSpawnpoint(newType2, newPoint2)); } } river2.closeRiver(); } } } } } }
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(); } } }
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; } }
// 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(); } }
private static void loadRegion(byte version, River river, StructureRegion region) { ushort num = river.readUInt16(); for (ushort num2 = 0; num2 < num; num2 += 1) { ushort num3 = river.readUInt16(); ushort num4 = river.readUInt16(); Vector3 vector = river.readSingleVector3(); byte b = 0; if (version > 4) { b = river.readByte(); } byte b2 = river.readByte(); byte b3 = 0; if (version > 4) { b3 = river.readByte(); } ulong num5 = 0UL; ulong num6 = 0UL; if (version > 2) { num5 = river.readUInt64(); num6 = river.readUInt64(); } uint newObjActiveDate; if (version > 3) { newObjActiveDate = river.readUInt32(); if (Provider.time - StructureManager.serverActiveDate > Provider.modeConfigData.Structures.Decay_Time / 2u) { newObjActiveDate = Provider.time; } } else { newObjActiveDate = Provider.time; } ItemStructureAsset itemStructureAsset; try { itemStructureAsset = (ItemStructureAsset)Assets.find(EAssetType.ITEM, num3); } catch { itemStructureAsset = null; } if (itemStructureAsset != null) { if (version < 5) { Vector3 eulerAngles = Quaternion.Euler(-90f, (float)(b2 * 2), 0f).eulerAngles; b = MeasurementTool.angleToByte((float)(Mathf.RoundToInt(eulerAngles.x / 2f) * 2)); b2 = MeasurementTool.angleToByte((float)(Mathf.RoundToInt(eulerAngles.y / 2f) * 2)); b3 = MeasurementTool.angleToByte((float)(Mathf.RoundToInt(eulerAngles.z / 2f) * 2)); } region.structures.Add(new StructureData(new Structure(num3, num4, itemStructureAsset), vector, b, b2, b3, num5, num6, newObjActiveDate)); StructureManager.manager.spawnStructure(region, num3, vector, b, b2, b3, (byte)Mathf.RoundToInt((float)num4 / (float)itemStructureAsset.health * 100f), num5, num6, StructureManager.instanceCount += 1u); } } }
public static void load() { LevelObjects._models = new GameObject().transform; LevelObjects.models.name = "Objects"; LevelObjects.models.parent = Level.level; LevelObjects.models.tag = "Logic"; LevelObjects.models.gameObject.layer = LayerMasks.LOGIC; LevelObjects._objects = new List <LevelObject> [(int)Regions.WORLD_SIZE, (int)Regions.WORLD_SIZE]; LevelObjects._buildables = new List <LevelBuildableObject> [(int)Regions.WORLD_SIZE, (int)Regions.WORLD_SIZE]; LevelObjects._total = 0; LevelObjects._regions = new bool[(int)Regions.WORLD_SIZE, (int)Regions.WORLD_SIZE]; LevelObjects._loads = new int[(int)Regions.WORLD_SIZE, (int)Regions.WORLD_SIZE]; LevelObjects.shouldInstantlyLoad = true; LevelObjects.isHierarchyReady = false; for (byte b = 0; b < Regions.WORLD_SIZE; b += 1) { for (byte b2 = 0; b2 < Regions.WORLD_SIZE; b2 += 1) { LevelObjects.loads[(int)b, (int)b2] = -1; } } for (byte b3 = 0; b3 < Regions.WORLD_SIZE; b3 += 1) { for (byte b4 = 0; b4 < Regions.WORLD_SIZE; b4 += 1) { LevelObjects.objects[(int)b3, (int)b4] = new List <LevelObject>(); LevelObjects.buildables[(int)b3, (int)b4] = new List <LevelBuildableObject>(); } } if (Level.info.configData.Use_Legacy_Objects) { if (ReadWrite.fileExists(Level.info.path + "/Level/Objects.dat", false, false)) { River river = new River(Level.info.path + "/Level/Objects.dat", false); byte b5 = river.readByte(); bool flag = true; if (b5 > 0) { if (b5 > 1 && b5 < 3) { river.readSteamID(); } if (b5 > 8) { LevelObjects.availableInstanceID = river.readUInt32(); } else { LevelObjects.availableInstanceID = 1u; } for (byte b6 = 0; b6 < Regions.WORLD_SIZE; b6 += 1) { for (byte b7 = 0; b7 < Regions.WORLD_SIZE; b7 += 1) { ushort num = river.readUInt16(); for (ushort num2 = 0; num2 < num; num2 += 1) { Vector3 vector = river.readSingleVector3(); Quaternion newRotation = river.readSingleQuaternion(); Vector3 newScale; if (b5 > 3) { newScale = river.readSingleVector3(); } else { newScale = Vector3.one; } ushort num3 = river.readUInt16(); string newName = string.Empty; if (b5 > 5) { newName = river.readString(); } Guid newGUID = Guid.Empty; if (b5 > 7) { newGUID = river.readGUID(); } ELevelObjectPlacementOrigin newPlacementOrigin = ELevelObjectPlacementOrigin.MANUAL; if (b5 > 6) { newPlacementOrigin = (ELevelObjectPlacementOrigin)river.readByte(); } uint newInstanceID; if (b5 > 8) { newInstanceID = river.readUInt32(); } else { newInstanceID = LevelObjects.generateUniqueInstanceID(); } if (num3 != 0) { LevelObject levelObject = new LevelObject(vector, newRotation, newScale, num3, newName, newGUID, newPlacementOrigin, newInstanceID); if (levelObject.asset == null) { flag = false; } if (Level.isEditor) { byte b8; byte b9; Regions.tryGetCoordinate(vector, out b8, out b9); if (b8 != b6 || b9 != b7) { Debug.LogError(string.Concat(new object[] { num3, " should be in ", b8, ", ", b9, " but was in ", b6, ", ", b7, "!" })); } LevelObjects.objects[(int)b8, (int)b9].Add(levelObject); } else { LevelObjects.objects[(int)b6, (int)b7].Add(levelObject); } LevelObjects._total++; } } } } } if (flag) { LevelObjects._hash = river.getHash(); } else { LevelObjects._hash = new byte[20]; } river.closeRiver(); } else { for (byte b10 = 0; b10 < Regions.WORLD_SIZE; b10 += 1) { for (byte b11 = 0; b11 < Regions.WORLD_SIZE; b11 += 1) { if (ReadWrite.fileExists(string.Concat(new object[] { Level.info.path, "/Objects/Objects_", b10, "_", b11, ".dat" }), false, false)) { River river2 = new River(string.Concat(new object[] { Level.info.path, "/Objects/Objects_", b10, "_", b11, ".dat" }), false); byte b12 = river2.readByte(); if (b12 > 0) { ushort num4 = river2.readUInt16(); for (ushort num5 = 0; num5 < num4; num5 += 1) { Vector3 position = river2.readSingleVector3(); Quaternion rotation = river2.readSingleQuaternion(); ushort num6 = river2.readUInt16(); string empty = string.Empty; Guid empty2 = Guid.Empty; ELevelObjectPlacementOrigin placementOrigin = ELevelObjectPlacementOrigin.MANUAL; if (num6 != 0) { LevelObjects.addObject(position, rotation, Vector3.one, num6, empty, empty2, placementOrigin); } } } river2.closeRiver(); } } } LevelObjects._hash = new byte[20]; } } else { LevelObjects._hash = new byte[20]; } if ((Provider.isServer || Level.isEditor) && ReadWrite.fileExists(Level.info.path + "/Level/Buildables.dat", false, false)) { River river3 = new River(Level.info.path + "/Level/Buildables.dat", false); river3.readByte(); for (byte b13 = 0; b13 < Regions.WORLD_SIZE; b13 += 1) { for (byte b14 = 0; b14 < Regions.WORLD_SIZE; b14 += 1) { ushort num7 = river3.readUInt16(); for (ushort num8 = 0; num8 < num7; num8 += 1) { Vector3 vector2 = river3.readSingleVector3(); Quaternion newRotation2 = river3.readSingleQuaternion(); ushort num9 = river3.readUInt16(); if (num9 != 0) { LevelBuildableObject item = new LevelBuildableObject(vector2, newRotation2, num9); if (Level.isEditor) { byte b15; byte b16; Regions.tryGetCoordinate(vector2, out b15, out b16); if (b15 != b13 || b16 != b14) { Debug.LogError(string.Concat(new object[] { num9, " should be in ", b15, ", ", b16, " but was in ", b13, ", ", b14, "!" })); } LevelObjects.buildables[(int)b15, (int)b16].Add(item); } else { LevelObjects.buildables[(int)b13, (int)b14].Add(item); } LevelObjects._total++; } } } } river3.closeRiver(); } if (Level.info.configData.Use_Legacy_Objects && !Dedicator.isDedicated && !Level.isEditor) { for (byte b17 = 0; b17 < Regions.WORLD_SIZE; b17 += 1) { for (byte b18 = 0; b18 < Regions.WORLD_SIZE; b18 += 1) { for (int i = 0; i < LevelObjects.objects[(int)b17, (int)b18].Count; i++) { LevelObject levelObject2 = LevelObjects.objects[(int)b17, (int)b18][i]; if (levelObject2.asset != null && !(levelObject2.transform == null)) { if (levelObject2.asset.lod != EObjectLOD.NONE) { ObjectsLOD objectsLOD = levelObject2.transform.gameObject.AddComponent <ObjectsLOD>(); objectsLOD.lod = levelObject2.asset.lod; objectsLOD.bias = levelObject2.asset.lodBias; objectsLOD.center = levelObject2.asset.lodCenter; objectsLOD.size = levelObject2.asset.lodSize; objectsLOD.calculateBounds(); } } } } } } if (Level.isEditor) { LevelObjects.reun = new IReun[256]; LevelObjects.step = 0; LevelObjects.frame = 0; } }