Skip to content

Commit

Permalink
Merge pull request #65 from jetelain/ocean
Browse files Browse the repository at this point in the history
Ocean support, and world wide support
  • Loading branch information
jetelain committed Aug 5, 2023
2 parents 9eb4478 + d990d5d commit 7710536
Show file tree
Hide file tree
Showing 25 changed files with 668 additions and 69 deletions.
2 changes: 2 additions & 0 deletions GameRealisticMap.Arma3/Assets/TerrainMaterialUsage.cs
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,8 @@ public enum TerrainMaterialUsage
Default,
DefaultUrban,
DefaultIndustrial,
Coastline,
OceanGround,
ForestGround,
Sand,
Grass,
Expand Down
35 changes: 25 additions & 10 deletions GameRealisticMap.Arma3/Builtin/CentralEurope.grma3a
Original file line number Diff line number Diff line change
Expand Up @@ -3248,24 +3248,36 @@
},
{
"Material": {
"NormalTexture": "z\\arm\\addons\\centraleurope\\data\\gdt\\arm_forest_centraleurope_nopx.paa",
"ColorTexture": "z\\arm\\addons\\centraleurope\\data\\gdt\\arm_forest_centraleurope_co.paa",
"Id": "008000FF",
"FakeSatPngImage": "iVBORw0KGgoAAAANSUhEUgAAAAgAAAAICAYAAADED76LAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAAa0lEQVR4nFWO0Q2AIAwFn9A2ruMIuv9ARqBqSzF4CeHjjhfo2LcbrcGPKpASnJz9kItSAOYuRhSPyKVhtwkLTQb0mxzYSoTUwnN4SYJzhP6HoNQ+q8uFGWLKLkvVHkKxvvMrSw8kAqb0RTMPfHcw1LwnidIAAAAASUVORK5CYII="
"NormalTexture": "z\\arm\\addons\\centraleurope\\data\\gdt\\arm_sand_centraleurope_nopx.paa",
"ColorTexture": "z\\arm\\addons\\centraleurope\\data\\gdt\\arm_sand_centraleurope_co.paa",
"Id": "F4A460FF",
"FakeSatPngImage": "iVBORw0KGgoAAAANSUhEUgAAAAgAAAAICAYAAADED76LAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAuIwAALiMBeKU/dgAAAIVJREFUeJw1j0kOAzEIBJvF38w51zx/IpbQTMYWsiwVTeGf96urCix3x30E3b1/FxGwzGwhVZsSROQNTUFFMc9AunB3bUpEEGjIdPBW5SZ8rwt+DsAEVd3IytpIdpufNVEbB1IZhceFIyvzVj0ygMjK9T+eCbSvIddhBu1sbvFsQmFCmYIfOrZUavcGk1cAAAAASUVORK5CYII="
},
"Usages": [
"ForestGround"
"Coastline",
"Sand"
]
},
{
"Material": {
"NormalTexture": "z\\arm\\addons\\centraleurope\\data\\gdt\\arm_sand_centraleurope_nopx.paa",
"ColorTexture": "z\\arm\\addons\\centraleurope\\data\\gdt\\arm_sand_centraleurope_co.paa",
"Id": "F4A460FF",
"FakeSatPngImage": "iVBORw0KGgoAAAANSUhEUgAAAAgAAAAICAYAAADED76LAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAuIwAALiMBeKU/dgAAAIVJREFUeJw1j0kOAzEIBJvF38w51zx/IpbQTMYWsiwVTeGf96urCix3x30E3b1/FxGwzGwhVZsSROQNTUFFMc9AunB3bUpEEGjIdPBW5SZ8rwt+DsAEVd3IytpIdpufNVEbB1IZhceFIyvzVj0ygMjK9T+eCbSvIddhBu1sbvFsQmFCmYIfOrZUavcGk1cAAAAASUVORK5CYII="
"NormalTexture": "a3\\map_data\\gdt_seabed_nopx.paa",
"ColorTexture": "a3\\map_data\\gdt_seabed_co.paa",
"Id": "0026FFFF",
"FakeSatPngImage": "iVBORw0KGgoAAAANSUhEUgAAAAgAAAAICAYAAADED76LAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAuIwAALiMBeKU/dgAAAMlJREFUeJwdjt1Og0AYRM/Cx58CLdVgou/iQ+j73xlqTCBtpbjdLrt+7d1czJk58vH5HrvHHcP4RVtviTHSVDXjcWKaR6QuK34Oe/7cL2aJ5FmBMS1912PdjGTyQJE7iIaiKLk4y7wcsVdHVdZILhlpKrRNR4gBv1pC8Cx2Ytv0yDAN91/nHQa4AS/dmw6mJEaQyEqSaEghrKsKbtTpWz0ih/MJ8VevVIokhVI3yZrARa+8Lp5VMhMtCKdl5Gnzei/P1iF6tWuf+QcZ7VctNm5rngAAAABJRU5ErkJggg=="
},
"Usages": [
"Sand"
"OceanGround"
]
},
{
"Material": {
"NormalTexture": "z\\arm\\addons\\centraleurope\\data\\gdt\\arm_forest_centraleurope_nopx.paa",
"ColorTexture": "z\\arm\\addons\\centraleurope\\data\\gdt\\arm_forest_centraleurope_co.paa",
"Id": "008000FF",
"FakeSatPngImage": "iVBORw0KGgoAAAANSUhEUgAAAAgAAAAICAYAAADED76LAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAAa0lEQVR4nFWO0Q2AIAwFn9A2ruMIuv9ARqBqSzF4CeHjjhfo2LcbrcGPKpASnJz9kItSAOYuRhSPyKVhtwkLTQb0mxzYSoTUwnN4SYJzhP6HoNQ+q8uFGWLKLkvVHkKxvvMrSw8kAqb0RTMPfHcw1LwnidIAAAAASUVORK5CYII="
},
"Usages": [
"ForestGround"
]
},
{
Expand Down Expand Up @@ -3824,6 +3836,7 @@
}
],
"Ends": [],
"Objects": [],
"Label": "",
"UseAnySize": false
}
Expand Down Expand Up @@ -3860,6 +3873,7 @@
"LeftCorners": [],
"RightCorners": [],
"Ends": [],
"Objects": [],
"Label": "",
"UseAnySize": false
}
Expand Down Expand Up @@ -3896,6 +3910,7 @@
"LeftCorners": [],
"RightCorners": [],
"Ends": [],
"Objects": [],
"Label": "",
"UseAnySize": false
}
Expand Down
62 changes: 49 additions & 13 deletions GameRealisticMap.Arma3/Builtin/Sahel.grma3a
Original file line number Diff line number Diff line change
Expand Up @@ -2738,24 +2738,36 @@
},
{
"Material": {
"NormalTexture": "z\\arm\\addons\\sahel\\data\\gdt\\arm_forest_sahel_nopx.paa",
"ColorTexture": "z\\arm\\addons\\sahel\\data\\gdt\\arm_forest_sahel_co.paa",
"Id": "008000FF",
"FakeSatPngImage": "iVBORw0KGgoAAAANSUhEUgAAAAgAAAAICAYAAADED76LAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAAaUlEQVR4nF2PgQ3AIAgEX6TTdIdO0f0XacTyCqb1EwwInK/e19lrqWi9wboBRTwq4DWlPNjkEGX4yO90bO2yZ5J8UcUTDjFk4W09Mwly/PGsSRkeuEWFKYSXXNKBS/eZR5MU3b+V5hDmX7OBNtHPTy7zAAAAAElFTkSuQmCC"
"NormalTexture": "z\\arm\\addons\\sahel\\data\\gdt\\arm_sand_sahel_nopx.paa",
"ColorTexture": "z\\arm\\addons\\sahel\\data\\gdt\\arm_sand_sahel_co.paa",
"Id": "F4A460FF",
"FakeSatPngImage": "iVBORw0KGgoAAAANSUhEUgAAAAgAAAAICAYAAADED76LAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAAFklEQVR4nGOpSHX/z4AHsDAQAMNDAQBBuwJEQhYxTgAAAABJRU5ErkJggg=="
},
"Usages": [
"ForestGround"
"Coastline",
"Sand"
]
},
{
"Material": {
"NormalTexture": "z\\arm\\addons\\sahel\\data\\gdt\\arm_sand_sahel_nopx.paa",
"ColorTexture": "z\\arm\\addons\\sahel\\data\\gdt\\arm_sand_sahel_co.paa",
"Id": "F4A460FF",
"FakeSatPngImage": "iVBORw0KGgoAAAANSUhEUgAAAAgAAAAICAYAAADED76LAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAAFklEQVR4nGOpSHX/z4AHsDAQAMNDAQBBuwJEQhYxTgAAAABJRU5ErkJggg=="
"NormalTexture": "a3\\map_data\\gdt_seabed_nopx.paa",
"ColorTexture": "a3\\map_data\\gdt_seabed_co.paa",
"Id": "0026FFFF",
"FakeSatPngImage": "iVBORw0KGgoAAAANSUhEUgAAAAgAAAAICAYAAADED76LAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAuIwAALiMBeKU/dgAAAMlJREFUeJwdjt1Og0AYRM/Cx58CLdVgou/iQ+j73xlqTCBtpbjdLrt+7d1czJk58vH5HrvHHcP4RVtviTHSVDXjcWKaR6QuK34Oe/7cL2aJ5FmBMS1912PdjGTyQJE7iIaiKLk4y7wcsVdHVdZILhlpKrRNR4gBv1pC8Cx2Ytv0yDAN91/nHQa4AS/dmw6mJEaQyEqSaEghrKsKbtTpWz0ih/MJ8VevVIokhVI3yZrARa+8Lp5VMhMtCKdl5Gnzei/P1iF6tWuf+QcZ7VctNm5rngAAAABJRU5ErkJggg=="
},
"Usages": [
"Sand"
"OceanGround"
]
},
{
"Material": {
"NormalTexture": "z\\arm\\addons\\sahel\\data\\gdt\\arm_forest_sahel_nopx.paa",
"ColorTexture": "z\\arm\\addons\\sahel\\data\\gdt\\arm_forest_sahel_co.paa",
"Id": "008000FF",
"FakeSatPngImage": "iVBORw0KGgoAAAANSUhEUgAAAAgAAAAICAYAAADED76LAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAAaUlEQVR4nF2PgQ3AIAgEX6TTdIdO0f0XacTyCqb1EwwInK/e19lrqWi9wboBRTwq4DWlPNjkEGX4yO90bO2yZ5J8UcUTDjFk4W09Mwly/PGsSRkeuEWFKYSXXNKBS/eZR5MU3b+V5hDmX7OBNtHPTy7zAAAAAElFTkSuQmCC"
},
"Usages": [
"ForestGround"
]
},
{
Expand Down Expand Up @@ -3304,6 +3316,7 @@
"Probability": 1,
"Straights": [
{
"Proportion": 1,
"Model": {
"Objects": [
{
Expand All @@ -3315,6 +3328,7 @@
"Size": 5
},
{
"Proportion": 1,
"Model": {
"Objects": [
{
Expand All @@ -3326,14 +3340,20 @@
"Size": 2.5
}
],
"Label": ""
"LeftCorners": [],
"RightCorners": [],
"Ends": [],
"Objects": [],
"Label": "",
"UseAnySize": false
}
],
"Fence": [
{
"Probability": 0.5,
"Straights": [
{
"Proportion": 1,
"Model": {
"Objects": [
{
Expand All @@ -3345,12 +3365,18 @@
"Size": 6.5
}
],
"Label": ""
"LeftCorners": [],
"RightCorners": [],
"Ends": [],
"Objects": [],
"Label": "",
"UseAnySize": false
},
{
"Probability": 0.5,
"Straights": [
{
"Proportion": 1,
"Model": {
"Objects": [
{
Expand All @@ -3362,6 +3388,7 @@
"Size": 9
},
{
"Proportion": 1,
"Model": {
"Objects": [
{
Expand All @@ -3373,10 +3400,19 @@
"Size": 9
}
],
"Label": ""
"LeftCorners": [],
"RightCorners": [],
"Ends": [],
"Objects": [],
"Label": "",
"UseAnySize": false
}
]
},
"Railways": {
"Straights": [],
"Crossings": []
},
"BaseWorldName": "arm_world_sahel",
"BaseDependency": "arm_sahel",
"Dependencies": [
Expand Down
8 changes: 5 additions & 3 deletions GameRealisticMap.Arma3/GameEngine/GameConfigGenerator.cs
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
using GameRealisticMap.Arma3.Assets;
using GameRealisticMap.Arma3.IO;
using GameRealisticMap.ManMade.Places;
using GameRealisticMap.Nature.Ocean;

namespace GameRealisticMap.Arma3.GameEngine
{
Expand All @@ -27,17 +28,18 @@ public void Generate(IArma3MapConfig config, IContext context, ITerrainArea area
gameFileSystemWriter.WriteTextFile(configCpp, GenerateConfigCpp(config, context.GetData<CitiesData>()));
}

gameFileSystemWriter.WriteTextFile($"{config.PboPrefix}\\mapinfos.hpp", GenerateMapInfos(config, area));
gameFileSystemWriter.WriteTextFile($"{config.PboPrefix}\\mapinfos.hpp", GenerateMapInfos(config, area, context.GetData<OceanData>().IsIsland));

gameFileSystemWriter.WriteTextFile($"{config.PboPrefix}\\names.hpp", GenerateNames(context.GetData<CitiesData>()));
}

private string GenerateMapInfos(IArma3MapConfig config, ITerrainArea area)

private string GenerateMapInfos(IArma3MapConfig config, ITerrainArea area, bool isIsland)
{
var center = area.TerrainPointToLatLng(new Geometries.TerrainPoint(config.SizeInMeters / 2, config.SizeInMeters / 2));
var southWest = area.TerrainPointToLatLng(new Geometries.TerrainPoint(0, 0));
var northEast = area.TerrainPointToLatLng(new Geometries.TerrainPoint(config.SizeInMeters, config.SizeInMeters));
var material = assets.Materials.GetMaterialByUsage(TerrainMaterialUsage.Default);
var material = assets.Materials.GetMaterialByUsage(isIsland ? TerrainMaterialUsage.OceanGround : TerrainMaterialUsage.Default);

var centerUTM = new CoordinateSharp.Coordinate(center.Y, center.X).UTM;

Expand Down
4 changes: 3 additions & 1 deletion GameRealisticMap.Arma3/Imagery/FakeSatRender.cs
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
using GameRealisticMap.Arma3.Assets;
using GameRealisticMap.Arma3.IO;
using GameRealisticMap.Geometries;
using GameRealisticMap.Nature.Ocean;
using GameRealisticMap.Reporting;
using HugeImages;
using HugeImages.Processing;
Expand Down Expand Up @@ -33,10 +34,11 @@ public override HugeImage<Rgba32> Render(IArma3MapConfig config, IContext contex

public Image<Rgba32> RenderSatOut(IArma3MapConfig config, IContext context, int size)
{
var isIsland = context.GetData<OceanData>().IsIsland;
var image = new Image<Rgba32>(size, size);
image.Mutate(d =>
{
d.Fill(GetBrush(materialLibrary.GetMaterialByUsage(TerrainMaterialUsage.Default)));
d.Fill(GetBrush(materialLibrary.GetMaterialByUsage(isIsland ? TerrainMaterialUsage.OceanGround : TerrainMaterialUsage.Default)));
d.GaussianBlur(1.5f);
});
return image;
Expand Down
5 changes: 5 additions & 0 deletions GameRealisticMap.Arma3/Imagery/IdMapRenderBase.cs
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
using GameRealisticMap.ManMade.Buildings;
using GameRealisticMap.ManMade.Farmlands;
using GameRealisticMap.Nature.Forests;
using GameRealisticMap.Nature.Ocean;
using GameRealisticMap.Nature.RockAreas;
using GameRealisticMap.Nature.Surfaces;
using GameRealisticMap.Nature.Watercourses;
Expand Down Expand Up @@ -50,6 +51,10 @@ public virtual HugeImage<TPixel> Render(IArma3MapConfig config, IContext context
DrawPolygons(config, d, TerrainMaterialUsage.DefaultIndustrial,
categories.Areas.Where(c => c.BuildingType == BuildingTypeId.Industrial).SelectMany(c => c.PolyList));
DrawPolygons(config, d, TerrainMaterialUsage.OceanGround, context.GetData<OceanData>().Polygons);
DrawPolygonsWithCrown(config, d, TerrainMaterialUsage.Coastline, 2.5f, context.GetData<CoastlineData>().Polygons);
DrawPolygonsWithCrown(config, d, TerrainMaterialUsage.ForestGround, 2.5f, context.GetData<ForestData>().Polygons);
DrawPolygons(config, d, TerrainMaterialUsage.Meadow, context.GetData<MeadowsData>().Polygons);
Expand Down
23 changes: 9 additions & 14 deletions GameRealisticMap.CommandLine/Program.cs
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
using SixLabors.ImageSharp.PixelFormats;
using SixLabors.ImageSharp;
using MapToolkit.DataCells;
using GameRealisticMap.Nature.Ocean;

namespace GameRealisticMap.CommandLine
{
Expand All @@ -17,23 +18,17 @@ static async Task Main(string[] args)
{
var progress = new ConsoleProgressSystem();

var area = TerrainAreaUTM.CreateFromSouthWest("47.6856, 6.8270", 2.5f, 1024/*8*/);

var area = TerrainAreaUTM.CreateFromCenter("43.805011792296725, -1.4100638139572768", 3.25f, 256);
var render = new PreviewRender(area, new ImageryOptions());
await render.RenderHtml(progress, Path.GetFullPath("preview2.html"));

await render.RenderHtml(progress, Path.GetFullPath("preview.html"), true);

//var x = JsonSerializer.Serialize(ImageTiler.DefaultToWebp(context.GetData<RawSatelliteImageData>().Image, "rawsat"));

// new HillshaderFast(new MapToolkit.Vector(2.5, 2.5)).GetPixelsAlphaBelowFlat(context.GetData<ElevationData>().Elevation.ToDataCell()).SaveAsPng("elevation.png");

//var catalog = new BuildersCatalog(progress, new DefaultRoadTypeLibrary(), true);
//var loader = new OsmDataOverPassLoader(progress);
//var osmSource = await loader.Load(area);
//var context = new BuildContext(catalog, progress, area, osmSource, new ImageryOptions());
//var elevation = context.GetData<ElevationData>();
area = TerrainAreaUTM.CreateFromCenter("46.71532290005527, -2.3412981298116162", 4.5f, 2048);
render = new PreviewRender(area, new ImageryOptions());
await render.RenderHtml(progress, Path.GetFullPath("preview.html"));

//elevation.Elevation.ToDataCell().SaveImagePreview(Path.GetFullPath("preview.png"));
area = TerrainAreaUTM.CreateFromSouthWest("47.6856, 6.8270", 2.5f, 1024);
render = new PreviewRender(area, new ImageryOptions());
await render.RenderHtml(progress, Path.GetFullPath("preview3.html"));
}

}
Expand Down
18 changes: 18 additions & 0 deletions GameRealisticMap.Studio/Labels.Designer.cs

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

6 changes: 6 additions & 0 deletions GameRealisticMap.Studio/Labels.fr.resx
Original file line number Diff line number Diff line change
Expand Up @@ -957,4 +957,10 @@ Vous pouvez éventuellement activer d'autres mods.</value>
<data name="ViewImportInstructions" xml:space="preserve">
<value>Voir les instructions d'import (Anglais uniquement)</value>
</data>
<data name="AssetOceanGround" xml:space="preserve">
<value>Fond de l'océan</value>
</data>
<data name="AssetCoastline" xml:space="preserve">
<value>Par défaut - Littoral</value>
</data>
</root>
6 changes: 6 additions & 0 deletions GameRealisticMap.Studio/Labels.resx
Original file line number Diff line number Diff line change
Expand Up @@ -957,4 +957,10 @@ You may eventually enable other mods.</value>
<data name="ViewImportInstructions" xml:space="preserve">
<value>View import instructions</value>
</data>
<data name="AssetOceanGround" xml:space="preserve">
<value>Ocean ground</value>
</data>
<data name="AssetCoastline" xml:space="preserve">
<value>Default ground - Coastline</value>
</data>
</root>
3 changes: 3 additions & 0 deletions GameRealisticMap/BuildersCatalog.cs
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
using GameRealisticMap.ManMade.Roads.Libraries;
using GameRealisticMap.Nature.Forests;
using GameRealisticMap.Nature.Lakes;
using GameRealisticMap.Nature.Ocean;
using GameRealisticMap.Nature.RockAreas;
using GameRealisticMap.Nature.Scrubs;
using GameRealisticMap.Nature.Surfaces;
Expand All @@ -26,6 +27,8 @@ public class BuildersCatalog : IBuidersCatalog

public BuildersCatalog(IProgressSystem progress, IRoadTypeLibrary<IRoadTypeInfos> library, IRailwayCrossingResolver? crossingResolver = null, bool useFullGeoJson = false)
{
Register(new OceanBuilder(progress));
Register(new CoastlineBuilder(progress));
Register(new RawSatelliteImageBuilder(progress));
Register(new RawElevationBuilder(progress));
Register(new CategoryAreaBuilder(progress));
Expand Down
Loading

0 comments on commit 7710536

Please sign in to comment.