UInt32[] wmoLodLength; //Number of elements used from MLMD per lod

        public MLFD(WOTLK.Chunks.MDDF mddf, WOTLK.Chunks.MODF modf) : base("MLFD", 48, false)
        {
            m2LodOffset  = new UInt32[3];
            m2LodLength  = new UInt32[3];
            wmoLodOffset = new UInt32[3];
            wmoLodLength = new UInt32[3];


            m2LodOffset[0] = 0;
            m2LodOffset[1] = 0;
            m2LodOffset[2] = 0;

            m2LodLength[0] = (UInt32)mddf.DoodadDefs.Count;//
            m2LodLength[1] = 0;
            m2LodLength[2] = 0;


            wmoLodOffset[0] = 0;
            wmoLodOffset[1] = 0;
            wmoLodOffset[2] = 0;

            wmoLodLength[0] = 0;
            wmoLodLength[1] = 0;
            wmoLodLength[2] = (UInt32)modf.MapObjDefs.Count;//
        }
Exemple #2
0
        public MLMX(WOTLK.Chunks.MODF wotlk) : base(wotlk, "MLMX", false)
        {
            int boundingSize   = Program.config.BoundingSize;
            int boundingRadius = Program.config.BoundingRadius;

            if (Program.config.DynamicBoundingGeneration)
            {
                int count = wotlk.MapObjDefs.Count;
                if (wotlk.MapObjDefs.Count > 1000)
                {
                    boundingSize   = Convert.ToInt32(boundingSize - ((wotlk.MapObjDefs.Count - 1000) / 10));
                    boundingRadius = Convert.ToInt32(boundingRadius - ((wotlk.MapObjDefs.Count - 1000) / 10));
                    if (boundingSize < 10)
                    {
                        boundingSize = 10;
                        Logger.log("Bounding size was too small. Set to 10", Logger.Type.WARNING);
                    }
                    if (boundingRadius < 10)
                    {
                        boundingRadius = 10;
                        Logger.log("Bounding radius was too small. Set to 10", Logger.Type.WARNING);
                    }
                }
            }

            /*
             * objDef.Position.X = bounding.Y
             * objDef.Position.Y = bounding.Z
             * objDef.Position.Z = bounding.X
             */
            foreach (mapObjDef objDef in wotlk.MapObjDefs)
            {
                lod_extent extent   = new lod_extent();
                CAaBox     bounding = new CAaBox();
                Vector     min      = new Vector();
                Vector     max      = new Vector();

                min.X = ConvertClientCoordsToServerCoords(objDef.Position.Z) - boundingSize;
                min.Y = ConvertClientCoordsToServerCoords(objDef.Position.X) - boundingSize;
                min.Z = objDef.Position.Y - boundingSize;

                max.X = ConvertClientCoordsToServerCoords(objDef.Position.Z) + boundingSize;
                max.Y = ConvertClientCoordsToServerCoords(objDef.Position.X) + boundingSize;
                max.Z = objDef.Position.Y + boundingSize;

                bounding.Min    = min;
                bounding.Max    = max;
                extent.Bounding = bounding;
                extent.Radius   = boundingRadius;

                objectExtents.Add(extent);
            }

            Header.ChangeSize(RecalculateSize());
        }
        public MLMD(WOTLK.Chunks.MODF wotlk) : base(wotlk, "MLMD", false)
        {
            foreach (mapObjDef mapObj in wotlk.MapObjDefs)
            {
                lod_object_def lodObj = new lod_object_def();
                lodObj.NameID    = mapObj.NameID;
                lodObj.UniqueID  = mapObj.UniqueID;
                lodObj.Position  = mapObj.Position;
                lodObj.Rotation  = mapObj.Rotation;
                lodObj.Flags     = mapObj.Flags;
                lodObj.DoodadSet = mapObj.DoodadSet;
                lodObj.NameSet   = mapObj.NameSet;

                lodObj.Unk = 1024;

                lod_object_defs.Add(lodObj);
            }

            Header.ChangeSize(RecalculateSize());
        }
Exemple #4
0
 public MODF(WOTLK.Chunks.MODF wotlk) : base(wotlk, false)
 {
     mapObjDefs = wotlk.MapObjDefs;
 }