static RoomObjInst ReadRoomObjInst(GMFileContent content, IntPtr p) { var entry = (RoomObjInstEntry *)p; var oi = new RoomObjInst(); oi.Index = entry->Index; oi.Name = StringFromOffset(content, entry->Name); oi.Unk1 = entry->Unk1; oi.Depth = entry->Depth; oi.Unk3 = entry->Unk3; uint isn = entry->InstCount; if (isn > 0x8000) { isn = 0; // workaround for GM2 } oi.Instances = new uint[isn]; for (uint i = 0; i < isn; i++) { oi.Instances[i] = (&entry->Instances)[i]; } return(oi); }
static JsonData SerializeRoomObjInst(RoomObjInst oi) { var r = CreateObj(); r["name"] = oi.Name; r["index"] = oi.Index; r["unk1"] = oi.Unk1; r["depth"] = oi.Depth; r["unk3"] = oi.Unk3; r["instances"] = SerializeArray(oi.Instances, Utils.Identity); return(r); }
private static void WriteRoomObjInst(BBData data, RoomObjInst roi, StringsChunkBuilder strings) { data.Buffer.Write(new RoomObjInstEntry { Index = roi.Index, Unk1 = roi.Unk1, Depth = roi.Depth, Unk3 = roi.Unk3, InstCount = (uint)roi.Instances.Length, Name = strings.GetOffset(roi.Name) }); data.Buffer.Position -= 4; foreach (var id in roi.Instances) { data.Buffer.Write(id); } }