public MarkerSet(MpqFile file) { var stream = file.Open(); Header = new Header(stream); SNO = stream.ReadInt32(); unknown0 = stream.ReadInt32(); unknown1 = stream.ReadInt32(); serMarkers = new SerializeData(stream); long x = stream.Position; Markers = new Marker[serMarkers.Size / 208]; stream.Position = serMarkers.Offset + 16; for (int i = 0; i < serMarkers.Size / 208; i++) { Markers[i] = new Marker(stream); } stream.Position = x; stream.Position += (15 * 4); // pad 15 serNoSpawns = new SerializeData(stream); stream.Position += (14 * 4); aabb = new AABB_(stream); i0 = stream.ReadInt32(); byte[] buf = new byte[256]; stream.Read(buf, 0, 256); filename = Encoding.ASCII.GetString(buf); nLabel = stream.ReadInt32(); nSpecialIndexCount = stream.ReadInt32(); serSpecialIndexList = new SerializeData(stream); stream.Close(); }
public Scene(MpqFile file) { var stream = file.Open(); long pos = 0; // x DEADBEEF = stream.ReadInt32(); snoType = stream.ReadInt32(); unknown1 = stream.ReadInt32(); unknown2 = stream.ReadInt32(); SceneSNO = stream.ReadInt32(); unknown3 = stream.ReadInt32(); unknown4 = stream.ReadInt32(); i0 = stream.ReadInt32(); aabbBounds = new AABB_(stream); aabbMarkerSetBounds = new AABB_(stream); //load NavMeshDef NavMesh = new NavMeshDef(stream); // end navmeshdef var serExclusions = new SerializeData(stream); stream.Position += 56; var serInclusions = new SerializeData(stream); stream.Position += 56; //MarkerSet Time var serMarkerSets = new SerializeData(stream); pos = stream.Position; stream.Position = serMarkerSets.Offset + 16; MarkerSets = new int[serMarkerSets.Size/4]; for (int i = 0; i < serMarkerSets.Size/4; i++) { MarkerSets[i] = stream.ReadInt32(); } stream.Position = pos + 56; //TODO - parse LookLink /dark LookLink = new char[64]; for (int i = 0; i < 64; i++) { LookLink[i] = (char) stream.ReadByte(); } var sermsgTriggeredEvents = new SerializeData(stream); int i1 = stream.ReadInt32(); stream.Position += 12; //navzonedef NavZone = new NavZoneDef(stream); stream.Close(); }
// Updated based on BoyC's 010editoer template, looks like some data at the end still isnt parsed - Darklotus public Actor(MpqFile file) { var stream = file.Open(); Header = new Header(stream); this.ActorSNO = stream.ReadInt32(); stream.Position += 8; // pad 2; this.i0 = stream.ReadInt32(); this.type = stream.ReadInt32(); this.ApperanceSNO = stream.ReadInt32(); this.snoPhysMesh = stream.ReadInt32(); this.Cyl = new AxialCylinder(stream); this.s = new Sphere(stream); this.aabbBounds = new AABB_(stream); this.serTagMap = new SerializeData(stream); stream.Position += 8; // pad 2 this.AnimSetSNO = stream.ReadInt32(); this.MonsterSNO = stream.ReadInt32(); this.serMsgTriggeredEvents = new SerializeData(stream); this.i1 = stream.ReadInt32(); stream.Position += 12; // pad 3 int - DarkLotus this.v0 = new Vector3D(stream.ReadFloat(), stream.ReadFloat(), stream.ReadFloat()); this.Looks = new WeightedLook[8]; for (int i = 0; i < 8; i++) { this.Looks[i] = new WeightedLook(stream); } this.PhysicsSNO = stream.ReadInt32(); this.i2 = stream.ReadInt32(); this.i3 = stream.ReadInt32(); this.f0 = stream.ReadFloat(); this.f1 = stream.ReadFloat(); this.f2 = stream.ReadFloat(); this.padActorCollisionData = new int[17]; // Was 68/4 - Darklotus for (int i = 0; i < 17; i++) { this.padActorCollisionData[i] = stream.ReadInt32(); } this.padInventoryImages = new int[10]; //Was 5*8/4 - Darklotus for (int i = 0; i < 10; i++) { this.padInventoryImages[i] = stream.ReadInt32(); } stream.Close(); }
public Marker(MpqFileStream stream) { byte[] buf = new byte[128]; stream.Read(buf, 0, 128); Name = Encoding.ASCII.GetString(buf); i0 = stream.ReadInt32(); PRTransform = new PRTransform(stream); SNOName = new SNOName(stream); serTagMap = new SerializeData(stream); TagMap = stream.ReadInt32(); i1 = stream.ReadInt32(); i2 = stream.ReadInt32(); serMarkerLinks = new SerializeData(stream); stream.Position += (3 * 4); long x = stream.Position; if (serTagMap.Size > 0) { stream.Position = serTagMap.Offset + 16; TM = new TagMap(stream); } stream.Position = x; }
public NavZoneDef(MpqFileStream stream) { long x; int NavCellCount = stream.ReadInt32(); stream.Position += 12; var serNavCells = new SerializeData(stream); x = stream.Position; stream.Position = serNavCells.Offset + 16; //Navcells NavCells = new NavCell[NavCellCount]; for (int i = 0; i < NavCellCount; i++) { NavCells[i] = new NavCell(stream); } stream.Position = x; //NavCellLookups int NeighbourCount = stream.ReadInt32(); stream.Position += 12; var serNavCellNeighbours = new SerializeData(stream); x = stream.Position; stream.Position = serNavCellNeighbours.Offset + 16; NavCellNeighbours = new NavCellLookup[NeighbourCount]; for (int i = 0; i < NeighbourCount; i++) { NavCellNeighbours[i] = new NavCellLookup(stream); } stream.Position = x; //NavGridSquares float f0 = stream.ReadFloat(); float f1 = stream.ReadFloat(); int i2 = stream.ReadInt32(); var v0 = new Vector2D(stream); stream.Position += 12; var serGridSquares = new SerializeData(stream); x = stream.Position; stream.Position = serGridSquares.Offset + 16; GridSquares = new NavGridSquare[serGridSquares.Size/6]; for (int i = 0; i < serGridSquares.Size/6; i++) { GridSquares[i] = new NavGridSquare(stream); } stream.Position = x; //cell lookups int i3 = stream.ReadInt32(); stream.Position += 12; var serCellLookups = new SerializeData(stream); x = stream.Position; stream.Position = serCellLookups.Offset + 16; CellLookups = new NavCellLookup[serCellLookups.Size/4]; for (int i = 0; i < serCellLookups.Size/4; i++) { CellLookups[i] = new NavCellLookup(stream); } stream.Position = x; //borderdata int i4 = stream.ReadInt32(); stream.Position += 12; var serBorderData = new SerializeData(stream); x = stream.Position; stream.Position = serBorderData.Offset + 16; BorderData = new NavCellBorderData[serBorderData.Size/4]; for (int i = 0; i < serBorderData.Size/4; i++) { BorderData[i] = new NavCellBorderData(stream); } }
public NavMeshDef(MpqFileStream stream) { SquaresCountX = stream.ReadInt32(); SquaresCoountY = stream.ReadInt32(); i0 = stream.ReadInt32(); NavMeshSquareCount = stream.ReadInt32(); f0 = stream.ReadFloat(); serNavMeshArraySquares = new SerializeData(stream); long x = stream.Position; stream.Position = serNavMeshArraySquares.Offset + 16; NavMeshArraySquares = new NavMeshSquare[NavMeshSquareCount]; for (int i = 0; i < NavMeshSquareCount; i++) { NavMeshArraySquares[i] = new NavMeshSquare(stream); } stream.Position = x; stream.Position += 12; filename = new char[256]; for (int i = 0; i < 256; i++) { filename[i] = (char) stream.ReadByte(); // fix me / dark } }
public World(MpqFile file) { var stream = file.Open(); Header = new Header(stream); SNO = stream.ReadInt32(); serDRLGParams = new SerializeData(stream); long x = stream.Position; if (serDRLGParams.Size > 0) { Param = new DRLGParams[serDRLGParams.Size / 120]; stream.Position = serDRLGParams.Offset + 16; for (int i = 0; i < serDRLGParams.Size/120; i++) { Param[i] = new DRLGParams(stream); } } stream.Position = x; stream.Position += (5 * 4); // This was 3 ints padding in the struct, was 8 bytes behind though so i changed it - DarkLotus serSceneParams = new SerializeData(stream); x = stream.Position; if (serSceneParams.Size > 0) { stream.Position = serSceneParams.Offset + 16; Scene = new SceneParams(stream); ; } stream.Position = x; stream.Position += (2 * 4); serMarkerSets = new SerializeData(stream); x = stream.Position; if (serMarkerSets.Size > 0) { MarkerSets = new int[serMarkerSets.Size / 4]; stream.Position = serMarkerSets.Offset + 16; for (int i = 0; i < serMarkerSets.Size / 4; i++) { MarkerSets[i] = stream.ReadInt32(); } } stream.Position = x; stream.Position += (14 * 4); Environment = new DataTypes.Environment(stream); stream.Position += 4; LabelRuleSet = new DataTypes.LabelRuleSet(stream); i0 = stream.ReadInt32(); stream.Position += 4; SceneClusterSet5 = new SceneClusterSet(stream); arNavMeshFuncs = new int[4]; for (int i = 0; i < arNavMeshFuncs.Length; i++) { arNavMeshFuncs[i] = stream.ReadInt32(); } stream.Position += 4; f0 = stream.ReadFloat(); i1 = stream.ReadInt32(); snoScript = stream.ReadInt32(); i2 = stream.ReadInt32(); stream.Close(); }