private void updateAnimDropbox() { animationSetDropdown.ClearOptions(); List <DOption> options = new List <DOption>(); options.Add(new DOption("unarmed", null)); HashSet <string> done = new HashSet <string>(); foreach (entry e in db.getEntriesForID(230)) { CObject _250 = db.toObj(e.id, e.key); if (_250.hasMember(7)) { string animation = _250.getStringMember(7); if (!done.Contains(animation) && !animation.Contains("crossbow") && !animation.Contains("shared")) { DOption option = new DOption(animation, e); options.Add(option); done.Add(animation); } } } options.Sort((a, b) => string.Compare(a.text, b.text)); animationSetDropdown.AddOptions(options.Cast <Dropdown.OptionData>().ToList()); }
public static List <WorldSpawn> getSpawns(AssetDatabase adb, DB db, string world) { List <WorldSpawn> worlds = new List <WorldSpawn>(); IEnumerable <entry> keys = db.getEntriesForID(4479); foreach (entry e in keys) { byte[] data = e.decompressedData; using (MemoryStream ms = new MemoryStream(data)) { CObject obj = Parser.processStreamObject(ms); string worldName = obj.getStringMember(0); string imagePath = obj.getStringMember(5); string internalSpawnName = obj.getStringMember(1); string spawnName = getLocalized(obj.getMember(10), internalSpawnName); if (world != null) { if (!worldName.Equals(world)) { continue; } } try { Vector3 pos = obj.getVector3Member(2); float angle = angle = obj.getFloatMember(3, 0); pos.y += 2; if (adb.filenameExists(worldName + "_map.cdr")) { WorldSpawn ws = new WorldSpawn(worldName, spawnName, pos, angle); ws.imagePath = imagePath; worlds.Add(ws); } } catch (Exception ex) { Debug.Log("Unable to get position for spawn [" + e.id + "][" + e.key + "]" + ex); } } } return(worlds); }