Example #1
0
        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();
        }
Example #2
0
        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();
        }
Example #3
0
        // 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();
        }
Example #4
0
		   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;
		   }
Example #5
0
            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);
                }
            }
Example #6
0
            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
                }
            }
Example #7
0
        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();
        }