Exemple #1
0
        public void ImportMapFromImage(string path, int moveX = 0, int moveY = 0)
        {
            var heightMeta = RawImage.LoadRawMetadataFromJson(path);
            var heightData = RawImage.LoadGrayscale16(path, heightMeta);

            int cellNumberX = heightData.GetLength(1) / MW_CELL;
            int cellNumberY = heightData.GetLength(0) / MW_CELL;

            var landList = new List <Record>();

            for (int y = 0; y < cellNumberY; y++)
            {
                for (int x = 0; x < cellNumberX; x++)
                {
                    var landRecord = new LAND();
                    landRecord.INTV = new INTV
                    {
                        CellX = x + moveX,
                        CellY = y + moveY,
                    };
                    landRecord.DATA = new DATA();
                    landRecord.VHGT = CreateHeightMapSubrecord(x * 64, y * 64, heightData);

                    var cellRecord = new CELL
                    {
                        NAME = new TES3Lib.Subrecords.Shared.NAME
                        {
                            EditorId = ""
                        },
                        DATA = new TES3Lib.Subrecords.CELL.DATA
                        {
                            Flags = new HashSet <TES3Lib.Enums.Flags.CellFlag>(),
                            GridX = landRecord.INTV.CellX,
                            GridY = landRecord.INTV.CellY,
                        },
                    };

                    landList.Add(cellRecord);
                    landList.Add(landRecord);
                }
            }

            var example = new TES3();

            example.Records.Add(createTES3HEader());
            example.Records.AddRange(landList);
            example.TES3Save($"{path}.esp");
        }