Better road processing; flatter ground for towns

This commit is contained in:
Segey Lapin
2021-10-26 22:13:04 +03:00
parent 302719dd19
commit f2ef003610
5 changed files with 10 additions and 7 deletions

View File

@@ -2,7 +2,8 @@
all: godot-editor-main
godot-editor-main:
cd godot; \
scons platform=x11 target=release_debug tools=yes custom_modules=../modules -j6; \
scons platform=x11 target=release tools=no custom_modules=../modules -j6
scons platform=x11 target=release_debug tools=yes custom_modules=../modules -j6
# scons platform=x11 target=release tools=no custom_modules=../modules -j6;
# scons platform=server target=release_debug tools=yes custom_modules=../modules -j6
# scons platform=windows target=release tools=yes custom_modules=../modules -j6
# scons platform=javascript target=release tools=yes custom_modules=../modules -j6

View File

@@ -886,6 +886,8 @@ void Characters_::load_body_parts(const String &path)
if (FileAccess::exists(fn2f))
female_faces.push_back(fn2f);
}
for (i = 0; i < male_hairs.size(); i++)
printf("hair %d: %ls\n", i, male_hairs[i].c_str());
assert(male_hairs.size() > 0 && female_hairs.size() > 0);
assert(male_faces.size() > 0 && female_faces.size() > 0);
assert(hair_materials.size() > 0);

View File

@@ -10,6 +10,7 @@
#include "world_height_map.h"
#include "road_grid.h"
#include "roads.h"
#include "spawner.h"
void register_world_types()
{
@@ -19,6 +20,8 @@ void register_world_types()
Engine::get_singleton()->add_singleton(Engine::Singleton("WorldMapData", WorldMapData::get_singleton()));
RoadsData::create_singleton();
Engine::get_singleton()->add_singleton(Engine::Singleton("RoadsData", RoadsData::get_singleton()));
Spawner::create_singleton();
Engine::get_singleton()->add_singleton(Engine::Singleton("Spawner", Spawner::get_singleton()));
ClassDB::register_class<WorldGenerator>();
ClassDB::register_class<WorldHeightMap>();
ClassDB::register_class<DensityMap>();

View File

@@ -209,10 +209,7 @@ protected:
}
inline void insert_hedge_to_grid_cell(int x, int y, struct half_edge *hedge)
{
static int count = 0;
count++;
set(x, y, hedge);
printf("count: %d\n", count);
}
};
class hg hedge_grid;

View File

@@ -226,7 +226,7 @@ Array Roads::curve_mesh(const PoolVector<Vector3> &points,
Vector3 base = verts[k];
float point = t + 2.0 + base.z;
float right = verts[k].x + tx;
if (t <= l - 2.0) {
if (t < l - 2.0) {
offt1 = curve3->interpolate_baked(point, true);
offt2 = curve3->interpolate_baked(point + 2.0, true);
assert(offt1.distance_squared_to(offt2) > 0.0f);
@@ -606,7 +606,7 @@ float RoadsData::get_sdf(int x, int y, int z)
int site = rg->get_site_from_point(x, z);
// printf("in site %d %d %d\n", site, rg->site_is_town(site), rg->site_is_farm(site));
if (site >= 0 && (rg->site_is_town(site) || rg->site_is_farm(site))) {
ret = y - rg->get_site_avg_height(site) - CLAMP(n * 0.1f, -0.5f, 0.5f);
ret = y - rg->get_site_avg_height(site) - CLAMP(n * 0.1f, -0.05f, 0.05f);
goto out;
}
}