public static void getMinMax(string worldName_, ref int x, ref int y) { string worldName = worldName_; if (!worldName_.Contains("cdr")) { worldName = worldName + "_map.cdr"; } AssetDatabase adb = AssetDatabaseInst.DB; System.Diagnostics.Stopwatch watch = new System.Diagnostics.Stopwatch(); watch.Start(); if (!adb.getManifest().containsHash(Util.hashFileName(worldName))) { throw new Exception("Unable to find world name:" + worldName); } byte[] data = adb.extractUsingFilename(worldName); //Debug.Log("extract in " + watch.ElapsedMilliseconds + " ms"); watch.Reset(); watch.Start(); CObject obj = Parser.processStreamObject(data); //Debug.Log("processStreamObject in " + watch.ElapsedMilliseconds + " ms"); watch.Reset(); watch.Start(); //Debug.Log("got world name:" + worldName); y = obj.getIntMember(3) * 256; if (obj.hasMember(2)) { x = obj.getIntMember(2) * 256; } else { x = y; } //Debug.Log("get min max in " + watch.ElapsedMilliseconds + " ms"); watch.Stop(); }
private string getLocalized(CObject obj, string defaultText) { if (obj == null) { return(defaultText); } if (obj.type != 7703) { throw new Exception("Not a localizable entry"); } int textID = obj.getIntMember(0); return(DBInst.lang_inst.getOrDefault(textID, defaultText)); }
private static List <string> getSky(long key) { List <string> ilist = new List <string>(); CObject entry = DBInst.inst.getObject(114, key); CObject skyInfo = DBInst.inst.getObject(111, entry.getIntMember(31)); CObject list = skyInfo.getMember(20); for (int i = 0; i < list.members.Count; i++) { int _7305 = list.getIntMember(i); ilist.Add(DBInst.inst.getObject(7305, _7305).getStringMember(2)); } return(ilist); }
private static List <Zone> getZones(string worldNameNoCDR) { List <Zone> zones = new List <Zone>(); try { string worldName = worldNameNoCDR + "_map.cdr"; AssetDatabase adb = AssetDatabaseInst.DB; if (!adb.getManifest().containsHash(Util.hashFileName(worldName))) { throw new Exception("Unable to find world name:" + worldName); } Debug.Log("loading world zones:" + worldName); byte[] data = adb.extractUsingFilename(worldName); CObject obj = Parser.processStreamObject(data); CObject zonesObj = obj.getMember(8); Debug.Log("found zones object with " + zonesObj.members.Count + " members"); for (int i = 0; i < zonesObj.members.Count; i++) { CObject zoneObj = zonesObj.get(i); long key = zoneObj.getIntMember(0); //Debug.Log("found zone with key:" + key); List <Vector3> points = getPoints(zoneObj.getMember(3)); Zone zone = new WorldStuff.Zone(); zone._113Key = key; zone.name = getZoneName(key); zone.points = points; //zone.sky = getSky(key); zones.Add(zone); } }catch (Exception ex) { Debug.LogWarning(ex); } return(zones); }
public ClothingItem(DB db, long id, long key) { this.key = key; this.id = id; try { CObject gearDef = db.toObj(id, key); if (id == 7629) { this.name = gearDef.getMember(0).convert() + ""; if (gearDef.hasMember(1)) { this.langKey = gearDef.getMember(1).getIntMember(0); } if (gearDef.hasMember(4)) { icon = db.toObj(6009, gearDef.getIntMember(4)).getStringMember(1); } if (gearDef.hasMember(5)) { CObject allowedSlotsArray = gearDef.getMember(5); foreach (CObject o in allowedSlotsArray.members) { int slot = int.Parse(o.convert() + ""); allowedSlots.Add(WardrobeStuff.getSlot(slot)); } } if (gearDef.hasMember(6)) { type = WardrobeStuff.getGearType(gearDef.getIntMember(6)); } if (gearDef.hasMember(7)) { hidden = gearDef.getBoolMember(7, false); } nifKey = gearDef.getIntMember(2); nifRef = new NIFReference(db, nifKey); } else if (id == 7305) { nifRef = new NIFReference(db, key); nifKey = key; if (gearDef.hasMember(2)) { string nifPath = gearDef.getMember(2).convert() + ""; this.name = System.IO.Path.GetFileName(nifPath); if (nifPath.Contains(@"\player\") && nifPath.Contains(@"\wings\")) { allowedSlots.Add(GearSlot.CAPE); } } if (gearDef.hasMember(15)) { CObject allowedSlotsArray = gearDef.getMember(15); foreach (CObject o in allowedSlotsArray.members) { int slot = int.Parse(o.convert() + ""); allowedSlots.Add(WardrobeStuff.getSlot(slot)); } } else { } } else { throw new Exception("Bad id:" + id); } } catch (Exception ex) { Debug.Log("Unable to process [" + this + "] nif reference:" + ex); } }