diff --git a/SCsub b/SCsub
index 4cbd997..4e61af6 100644
--- a/SCsub
+++ b/SCsub
@@ -39,7 +39,6 @@ sources = [
"meshers/terrain_mesher.cpp",
"meshers/blocky/terrain_mesher_blocky.cpp",
- "meshers/blocky/terrain_mesher_liquid_blocky.cpp",
"meshers/default/terrain_mesher_default.cpp",
"world/terrain_world.cpp",
diff --git a/config.py b/config.py
index 777ae7e..eac7c09 100644
--- a/config.py
+++ b/config.py
@@ -48,7 +48,6 @@ def get_doc_classes():
"TerrainMesherBlocky",
"TerrainWorldBlocky",
"TerrainChunkBlocky",
- "TerrainMesherLiquidBlocky",
"TerrainWorldMarchingCubes",
"TerrainChunkMarchingCubes",
diff --git a/doc_classes/TerrainMesherLiquidBlocky.xml b/doc_classes/TerrainMesherLiquidBlocky.xml
deleted file mode 100644
index 5500a07..0000000
--- a/doc_classes/TerrainMesherLiquidBlocky.xml
+++ /dev/null
@@ -1,13 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/meshers/blocky/terrain_mesher_liquid_blocky.cpp b/meshers/blocky/terrain_mesher_liquid_blocky.cpp
deleted file mode 100644
index a381308..0000000
--- a/meshers/blocky/terrain_mesher_liquid_blocky.cpp
+++ /dev/null
@@ -1,484 +0,0 @@
-/*
-Copyright (c) 2019-2022 Péter Magyar
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-SOFTWARE.
-*/
-
-#include "terrain_mesher_liquid_blocky.h"
-
-#include "../../world/default/terrain_chunk_default.h"
-
-void TerrainMesherLiquidBlocky::_add_chunk(Ref p_chunk) {
- Ref chunk = p_chunk;
-
- ERR_FAIL_COND(!chunk.is_valid());
-
- //if ((get_build_flags() & TerrainChunkDefault::BUILD_FLAG_GENERATE_AO) != 0)
- // chunk->generate_ao();
-
- int x_size = chunk->get_size_x();
- int z_size = chunk->get_size_z();
-
- float voxel_scale = get_voxel_scale();
-
- uint8_t *channel_type = chunk->channel_get(TerrainChunkDefault::DEFAULT_CHANNEL_TYPE);
-
- if (!channel_type)
- return;
-
- uint8_t *channel_color_r = NULL;
- uint8_t *channel_color_g = NULL;
- uint8_t *channel_color_b = NULL;
- uint8_t *channel_ao = NULL;
- uint8_t *channel_rao = NULL;
-
- Color base_light(_base_light_value, _base_light_value, _base_light_value);
- Color light;
- bool use_lighting = (get_build_flags() & TerrainChunkDefault::BUILD_FLAG_USE_LIGHTING) != 0;
- bool use_ao = (get_build_flags() & TerrainChunkDefault::BUILD_FLAG_USE_AO) != 0;
- bool use_rao = (get_build_flags() & TerrainChunkDefault::BUILD_FLAG_USE_RAO) != 0;
-
- if (use_lighting) {
- channel_color_r = chunk->channel_get(TerrainChunkDefault::DEFAULT_CHANNEL_LIGHT_COLOR_R);
- channel_color_g = chunk->channel_get(TerrainChunkDefault::DEFAULT_CHANNEL_LIGHT_COLOR_G);
- channel_color_b = chunk->channel_get(TerrainChunkDefault::DEFAULT_CHANNEL_LIGHT_COLOR_B);
-
- if (use_ao)
- channel_ao = chunk->channel_get(TerrainChunkDefault::DEFAULT_CHANNEL_AO);
-
- if (use_rao)
- channel_rao = chunk->channel_get(TerrainChunkDefault::DEFAULT_CHANNEL_RANDOM_AO);
- }
-
- Vector liquids;
- for (int i = 0; i < _library->terra_surface_get_num(); ++i) {
- Ref surface = _library->terra_surface_get(i);
-
- if (!surface.is_valid())
- continue;
-
- if (surface->get_liquid())
- liquids.push_back(static_cast(i + 1));
- }
-
- for (int z = chunk->get_margin_start(); z < z_size + chunk->get_margin_start(); ++z) {
- for (int x = chunk->get_margin_start(); x < x_size + chunk->get_margin_start(); ++x) {
-
- int index = chunk->get_data_index(x, z);
- int indexxp = chunk->get_data_index(x + 1, z);
- int indexxn = chunk->get_data_index(x - 1, z);
- int indexzp = chunk->get_data_index(x, z + 1);
- int indexzn = chunk->get_data_index(x, z - 1);
-
- uint8_t type = channel_type[index];
-
- if (type == 0)
- continue;
-
- if (liquids.find(type) == -1)
- continue;
-
- Ref surface = _library->terra_surface_get(type - 1);
-
- if (!surface.is_valid())
- continue;
-
- uint8_t neighbours[] = {
- channel_type[indexxp],
- channel_type[indexxn],
- channel_type[indexzp],
- channel_type[indexzn],
- };
-
- //x + 1
- if (neighbours[0] == 0) {
- if (use_lighting) {
- light = Color(channel_color_r[indexxp] / 255.0,
- channel_color_g[indexxp] / 255.0,
- channel_color_b[indexxp] / 255.0);
-
- float ao = 0;
-
- if (use_ao)
- ao = channel_ao[indexxp] / 255.0;
-
- if (use_rao) {
- float rao = channel_rao[indexxp] / 255.0;
- ao += rao;
- }
-
- light += base_light;
-
- if (ao > 0)
- light -= Color(ao, ao, ao) * _ao_strength;
-
- light.r = CLAMP(light.r, 0, 1.0);
- light.g = CLAMP(light.g, 0, 1.0);
- light.b = CLAMP(light.b, 0, 1.0);
- }
-
- int vc = get_vertex_count();
- add_indices(vc + 2);
- add_indices(vc + 1);
- add_indices(vc + 0);
- add_indices(vc + 3);
- add_indices(vc + 2);
- add_indices(vc + 0);
-
- Vector2 uvs[] = {
- surface->transform_uv(TerrainSurface::TERRAIN_SIDE_SIDE, Vector2(0, 1)),
- surface->transform_uv(TerrainSurface::TERRAIN_SIDE_SIDE, Vector2(0, 0)),
- surface->transform_uv(TerrainSurface::TERRAIN_SIDE_SIDE, Vector2(1, 0)),
- surface->transform_uv(TerrainSurface::TERRAIN_SIDE_SIDE, Vector2(1, 1))
- };
-
- Vector3 verts[] = {
- Vector3(1, 0, 0) * voxel_scale + Vector3(x - 1, - 1, z - 1) * voxel_scale,
- Vector3(1, 1, 0) * voxel_scale + Vector3(x - 1, - 1, z - 1) * voxel_scale,
- Vector3(1, 1, 1) * voxel_scale + Vector3(x - 1, - 1, z - 1) * voxel_scale,
- Vector3(1, 0, 1) * voxel_scale + Vector3(x - 1, - 1, z - 1) * voxel_scale
- };
-
- for (int i = 0; i < 4; ++i) {
- add_normal(Vector3(1, 0, 0));
-
- if (use_lighting)
- add_color(light);
-
- add_uv(uvs[i]);
- add_vertex(verts[i]);
- }
- }
-
- //x - 1
- if (neighbours[1] == 0) {
- if (use_lighting) {
- light = Color(channel_color_r[indexxn] / 255.0,
- channel_color_g[indexxn] / 255.0,
- channel_color_b[indexxn] / 255.0);
-
- float ao = 0;
-
- if (use_ao)
- ao = channel_ao[indexxn] / 255.0;
-
- if (use_rao) {
- float rao = channel_rao[indexxn] / 255.0;
- ao += rao;
- }
-
- light += base_light;
-
- if (ao > 0)
- light -= Color(ao, ao, ao) * _ao_strength;
-
- light.r = CLAMP(light.r, 0, 1.0);
- light.g = CLAMP(light.g, 0, 1.0);
- light.b = CLAMP(light.b, 0, 1.0);
- }
-
- int vc = get_vertex_count();
- add_indices(vc + 0);
- add_indices(vc + 1);
- add_indices(vc + 2);
-
- add_indices(vc + 0);
- add_indices(vc + 2);
- add_indices(vc + 3);
-
- Vector2 uvs[] = {
- surface->transform_uv(TerrainSurface::TERRAIN_SIDE_SIDE, Vector2(0, 1)),
- surface->transform_uv(TerrainSurface::TERRAIN_SIDE_SIDE, Vector2(0, 0)),
- surface->transform_uv(TerrainSurface::TERRAIN_SIDE_SIDE, Vector2(1, 0)),
- surface->transform_uv(TerrainSurface::TERRAIN_SIDE_SIDE, Vector2(1, 1))
- };
-
- Vector3 verts[] = {
- Vector3(0, 0, 0) * voxel_scale + Vector3(x - 1, - 1, z - 1) * voxel_scale,
- Vector3(0, 1, 0) * voxel_scale + Vector3(x - 1, - 1, z - 1) * voxel_scale,
- Vector3(0, 1, 1) * voxel_scale + Vector3(x - 1, - 1, z - 1) * voxel_scale,
- Vector3(0, 0, 1) * voxel_scale + Vector3(x - 1, - 1, z - 1) * voxel_scale
- };
-
- for (int i = 0; i < 4; ++i) {
- add_normal(Vector3(-1, 0, 0));
-
- if (use_lighting)
- add_color(light);
-
- add_uv(uvs[i]);
- add_vertex(verts[i]);
- }
- }
-/*
- //y + 1
- if (neighbours[2] == 0) {
- if (use_lighting) {
- light = Color(channel_color_r[indexyp] / 255.0,
- channel_color_g[indexyp] / 255.0,
- channel_color_b[indexyp] / 255.0);
-
- float ao = 0;
-
- if (use_ao)
- ao = channel_ao[indexyp] / 255.0;
-
- if (use_rao) {
- float rao = channel_rao[indexyp] / 255.0;
- ao += rao;
- }
-
- light += base_light;
-
- if (ao > 0)
- light -= Color(ao, ao, ao) * _ao_strength;
- }
-
- light.r = CLAMP(light.r, 0, 1.0);
- light.g = CLAMP(light.g, 0, 1.0);
- light.b = CLAMP(light.b, 0, 1.0);
-
- int vc = get_vertex_count();
- add_indices(vc + 2);
- add_indices(vc + 1);
- add_indices(vc + 0);
- add_indices(vc + 3);
- add_indices(vc + 2);
- add_indices(vc + 0);
-
- Vector2 uvs[] = {
- surface->transform_uv(TerrainSurface::TERRAIN_SIDE_TOP, Vector2(0, 1)),
- surface->transform_uv(TerrainSurface::TERRAIN_SIDE_TOP, Vector2(0, 0)),
- surface->transform_uv(TerrainSurface::TERRAIN_SIDE_TOP, Vector2(1, 0)),
- surface->transform_uv(TerrainSurface::TERRAIN_SIDE_TOP, Vector2(1, 1))
- };
-
- Vector3 verts[] = {
- Vector3(1, 1, 0) * voxel_scale + Vector3(x - 1, y - 1, z - 1) * voxel_scale,
- Vector3(0, 1, 0) * voxel_scale + Vector3(x - 1, y - 1, z - 1) * voxel_scale,
- Vector3(0, 1, 1) * voxel_scale + Vector3(x - 1, y - 1, z - 1) * voxel_scale,
- Vector3(1, 1, 1) * voxel_scale + Vector3(x - 1, y - 1, z - 1) * voxel_scale
- };
-
- for (int i = 0; i < 4; ++i) {
- add_normal(Vector3(0, 1, 0));
-
- if (use_lighting)
- add_color(light);
-
- add_uv(uvs[i]);
- add_vertex(verts[i]);
- }
- }
-*/
-/*
- //y - 1
- if (neighbours[3] == 0) {
- if (use_lighting) {
- light = Color(channel_color_r[indexyn] / 255.0,
- channel_color_g[indexyn] / 255.0,
- channel_color_b[indexyn] / 255.0);
-
- float ao = 0;
-
- if (use_ao)
- ao = channel_ao[indexyn] / 255.0;
-
- if (use_rao) {
- float rao = channel_rao[indexyn] / 255.0;
- ao += rao;
- }
-
- light += base_light;
-
- if (ao > 0)
- light -= Color(ao, ao, ao) * _ao_strength;
- }
-
- light.r = CLAMP(light.r, 0, 1.0);
- light.g = CLAMP(light.g, 0, 1.0);
- light.b = CLAMP(light.b, 0, 1.0);
-
- int vc = get_vertex_count();
- add_indices(vc + 0);
- add_indices(vc + 1);
- add_indices(vc + 2);
-
- add_indices(vc + 0);
- add_indices(vc + 2);
- add_indices(vc + 3);
-
- Vector2 uvs[] = {
- surface->transform_uv(TerrainSurface::TERRAIN_SIDE_BOTTOM, Vector2(0, 1)),
- surface->transform_uv(TerrainSurface::TERRAIN_SIDE_BOTTOM, Vector2(0, 0)),
- surface->transform_uv(TerrainSurface::TERRAIN_SIDE_BOTTOM, Vector2(1, 0)),
- surface->transform_uv(TerrainSurface::TERRAIN_SIDE_BOTTOM, Vector2(1, 1))
- };
-
- Vector3 verts[] = {
- Vector3(1, 0, 0) * voxel_scale + Vector3(x - 1, y - 1, z - 1) * voxel_scale,
- Vector3(0, 0, 0) * voxel_scale + Vector3(x - 1, y - 1, z - 1) * voxel_scale,
- Vector3(0, 0, 1) * voxel_scale + Vector3(x - 1, y - 1, z - 1) * voxel_scale,
- Vector3(1, 0, 1) * voxel_scale + Vector3(x - 1, y - 1, z - 1) * voxel_scale
- };
-
- for (int i = 0; i < 4; ++i) {
- add_normal(Vector3(0, -1, 0));
-
- if (use_lighting)
- add_color(light);
-
- add_uv(uvs[i]);
- add_vertex(verts[i]);
- }
- }
-*/
- //z + 1
- if (neighbours[2] == 0) {
- if (use_lighting) {
- light = Color(channel_color_r[indexzp] / 255.0,
- channel_color_g[indexzp] / 255.0,
- channel_color_b[indexzp] / 255.0);
-
- float ao = 0;
-
- if (use_ao)
- ao = channel_ao[indexzp] / 255.0;
-
- if (use_rao) {
- float rao = channel_rao[indexzp] / 255.0;
- ao += rao;
- }
-
- light += base_light;
-
- if (ao > 0)
- light -= Color(ao, ao, ao) * _ao_strength;
-
- light.r = CLAMP(light.r, 0, 1.0);
- light.g = CLAMP(light.g, 0, 1.0);
- light.b = CLAMP(light.b, 0, 1.0);
- }
-
- int vc = get_vertex_count();
- add_indices(vc + 2);
- add_indices(vc + 1);
- add_indices(vc + 0);
- add_indices(vc + 3);
- add_indices(vc + 2);
- add_indices(vc + 0);
-
- Vector2 uvs[] = {
- surface->transform_uv(TerrainSurface::TERRAIN_SIDE_SIDE, Vector2(0, 1)),
- surface->transform_uv(TerrainSurface::TERRAIN_SIDE_SIDE, Vector2(0, 0)),
- surface->transform_uv(TerrainSurface::TERRAIN_SIDE_SIDE, Vector2(1, 0)),
- surface->transform_uv(TerrainSurface::TERRAIN_SIDE_SIDE, Vector2(1, 1))
- };
-
- Vector3 verts[] = {
- Vector3(1, 0, 1) * voxel_scale + Vector3(x - 1, - 1, z - 1) * voxel_scale,
- Vector3(1, 1, 1) * voxel_scale + Vector3(x - 1, - 1, z - 1) * voxel_scale,
- Vector3(0, 1, 1) * voxel_scale + Vector3(x - 1, - 1, z - 1) * voxel_scale,
- Vector3(0, 0, 1) * voxel_scale + Vector3(x - 1, - 1, z - 1) * voxel_scale
- };
-
- for (int i = 0; i < 4; ++i) {
- add_normal(Vector3(0, 0, 1));
-
- if (use_lighting)
- add_color(light);
-
- add_uv(uvs[i]);
- add_vertex(verts[i]);
- }
- }
-
- //z - 1
- if (neighbours[3] == 0) {
- if (use_lighting) {
- light = Color(channel_color_r[indexzn] / 255.0,
- channel_color_g[indexzn] / 255.0,
- channel_color_b[indexzn] / 255.0);
-
- float ao = 0;
-
- if (use_ao)
- ao = channel_ao[indexzn] / 255.0;
-
- if (use_rao) {
- float rao = channel_rao[indexzn] / 255.0;
- ao += rao;
- }
-
- light += base_light;
-
- if (ao > 0)
- light -= Color(ao, ao, ao) * _ao_strength;
-
- light.r = CLAMP(light.r, 0, 1.0);
- light.g = CLAMP(light.g, 0, 1.0);
- light.b = CLAMP(light.b, 0, 1.0);
- }
-
- int vc = get_vertex_count();
- add_indices(vc + 0);
- add_indices(vc + 1);
- add_indices(vc + 2);
-
- add_indices(vc + 0);
- add_indices(vc + 2);
- add_indices(vc + 3);
-
- Vector2 uvs[] = {
- surface->transform_uv(TerrainSurface::TERRAIN_SIDE_SIDE, Vector2(0, 1)),
- surface->transform_uv(TerrainSurface::TERRAIN_SIDE_SIDE, Vector2(0, 0)),
- surface->transform_uv(TerrainSurface::TERRAIN_SIDE_SIDE, Vector2(1, 0)),
- surface->transform_uv(TerrainSurface::TERRAIN_SIDE_SIDE, Vector2(1, 1))
- };
-
- Vector3 verts[] = {
- Vector3(1, 0, 0) * voxel_scale + Vector3(x - 1, - 1, z - 1) * voxel_scale,
- Vector3(1, 1, 0) * voxel_scale + Vector3(x - 1, - 1, z - 1) * voxel_scale,
- Vector3(0, 1, 0) * voxel_scale + Vector3(x - 1, - 1, z - 1) * voxel_scale,
- Vector3(0, 0, 0) * voxel_scale + Vector3(x - 1, - 1, z - 1) * voxel_scale
- };
-
- for (int i = 0; i < 4; ++i) {
- add_normal(Vector3(0, 0, -1));
-
- if (use_lighting)
- add_color(light);
-
- add_uv(uvs[i]);
- add_vertex(verts[i]);
- }
- }
- }
- }
-}
-
-TerrainMesherLiquidBlocky::TerrainMesherLiquidBlocky() {
-}
-
-TerrainMesherLiquidBlocky::~TerrainMesherLiquidBlocky() {
-}
-
-void TerrainMesherLiquidBlocky::_bind_methods() {
- ClassDB::bind_method(D_METHOD("_add_chunk", "buffer"), &TerrainMesherLiquidBlocky::_add_chunk);
-}
diff --git a/meshers/blocky/terrain_mesher_liquid_blocky.h b/meshers/blocky/terrain_mesher_liquid_blocky.h
deleted file mode 100644
index 8f8b4a6..0000000
--- a/meshers/blocky/terrain_mesher_liquid_blocky.h
+++ /dev/null
@@ -1,52 +0,0 @@
-/*
-Copyright (c) 2019-2022 Péter Magyar
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-SOFTWARE.
-*/
-
-#ifndef TERRAIN_MESHER_LIQUID_BLOCKY_H
-#define TERRAIN_MESHER_LIQUID_BLOCKY_H
-
-#include "core/version.h"
-
-#if VERSION_MAJOR > 3
-#include "core/math/color.h"
-#else
-#include "core/color.h"
-#endif
-
-#include "core/math/vector2.h"
-#include "core/math/vector3.h"
-
-#include "../default/terrain_mesher_default.h"
-
-class TerrainMesherLiquidBlocky : public TerrainMesherDefault {
- GDCLASS(TerrainMesherLiquidBlocky, TerrainMesherDefault);
-
-public:
- void _add_chunk(Ref p_chunk);
-
- TerrainMesherLiquidBlocky();
- ~TerrainMesherLiquidBlocky();
-
-protected:
- static void _bind_methods();
-};
-
-#endif
diff --git a/register_types.cpp b/register_types.cpp
index b9b0a9a..3343205 100644
--- a/register_types.cpp
+++ b/register_types.cpp
@@ -56,7 +56,6 @@ SOFTWARE.
#include "world/terrain_world_editor.h"
#include "meshers/blocky/terrain_mesher_blocky.h"
-#include "meshers/blocky/terrain_mesher_liquid_blocky.h"
#include "world/blocky/terrain_chunk_blocky.h"
#include "world/blocky/terrain_world_blocky.h"
@@ -103,7 +102,6 @@ void register_terraman_types() {
ClassDB::register_class();
ClassDB::register_class();
ClassDB::register_class();
- ClassDB::register_class();
ClassDB::register_class();
ClassDB::register_class();
diff --git a/world/blocky/terrain_world_blocky.cpp b/world/blocky/terrain_world_blocky.cpp
index 5bd1aa5..3839d4a 100644
--- a/world/blocky/terrain_world_blocky.cpp
+++ b/world/blocky/terrain_world_blocky.cpp
@@ -25,7 +25,6 @@ SOFTWARE.
#include "terrain_chunk_blocky.h"
#include "../../meshers/blocky/terrain_mesher_blocky.h"
-#include "../../meshers/blocky/terrain_mesher_liquid_blocky.h"
#include "../jobs/terrain_light_job.h"
#include "../jobs/terrain_prop_job.h"
#include "../jobs/terrain_terrain_job.h"
@@ -66,7 +65,12 @@ Ref TerrainWorldBlocky::_create_chunk(int x, int z, Refadd_jobs_step(s);
tj->set_mesher(Ref(memnew(TerrainMesherBlocky())));
- tj->set_liquid_mesher(Ref(memnew(TerrainMesherLiquidBlocky())));
+
+ Ref liquid_mesher;
+ liquid_mesher.instance();
+ liquid_mesher->set_channel_index_type(TerrainChunkDefault::DEFAULT_CHANNEL_LIQUID_TYPE);
+ liquid_mesher->set_channel_index_isolevel(TerrainChunkDefault::DEFAULT_CHANNEL_LIQUID_ISOLEVEL);
+ tj->set_liquid_mesher(liquid_mesher);
Ref pj;
pj.instance();