From 9ecd8c05025e5e63fc6fc2c967a4554bfe3c7dc7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=81lex=20Rom=C3=A1n=20N=C3=BA=C3=B1ez?= Date: Thu, 29 Sep 2022 05:16:25 +0200 Subject: [PATCH] Add ability to set a visual layer mask for level geometry --- src/builder.cpp | 2 ++ src/tb_loader.cpp | 13 +++++++++++++ src/tb_loader.h | 3 +++ 3 files changed, 18 insertions(+) diff --git a/src/builder.cpp b/src/builder.cpp index 7e2c933..12cb3a3 100644 --- a/src/builder.cpp +++ b/src/builder.cpp @@ -430,6 +430,8 @@ MeshInstance3D* Builder::build_entity_mesh(int idx, LMEntity& ent, Node3D* paren parent->add_child(mesh_instance); + // Set the layers that the mesh instance will be rendered in + mesh_instance->set_layer_mask(m_loader->get_visual_layer_mask()); mesh_instance->set_owner(m_loader->get_owner()); mesh_instance->set_name(instance_name); diff --git a/src/tb_loader.cpp b/src/tb_loader.cpp index f19987a..1770ffc 100644 --- a/src/tb_loader.cpp +++ b/src/tb_loader.cpp @@ -25,6 +25,8 @@ void TBLoader::_bind_methods() ClassDB::bind_method(D_METHOD("get_clip_texture_name"), &TBLoader::get_clip_texture_name); ClassDB::bind_method(D_METHOD("set_skip_texture_name", "option_skip_texture_name"), &TBLoader::set_skip_texture_name); ClassDB::bind_method(D_METHOD("get_skip_texture_name"), &TBLoader::get_skip_texture_name); + ClassDB::bind_method(D_METHOD("set_visual_layer_mask", "option_visual_layer_mask"), &TBLoader::set_visual_layer_mask); + ClassDB::bind_method(D_METHOD("get_visual_layer_mask"), &TBLoader::get_visual_layer_mask); ClassDB::bind_method(D_METHOD("set_entity_common", "entity_common"), &TBLoader::set_entity_common); ClassDB::bind_method(D_METHOD("get_entity_common"), &TBLoader::get_entity_common); @@ -47,6 +49,7 @@ void TBLoader::_bind_methods() ADD_PROPERTY(PropertyInfo(Variant::BOOL, "option_filter_nearest", PROPERTY_HINT_NONE, "Texture Filter Nearest"), "set_filter_nearest", "get_filter_nearest"); ADD_PROPERTY(PropertyInfo(Variant::STRING, "option_clip_texture_name", PROPERTY_HINT_NONE, "Clip Texture"), "set_clip_texture_name", "get_clip_texture_name"); ADD_PROPERTY(PropertyInfo(Variant::STRING, "option_skip_texture_name", PROPERTY_HINT_NONE, "skip Texture"), "set_skip_texture_name", "get_skip_texture_name"); + ADD_PROPERTY(PropertyInfo(Variant::INT, "option_visual_layer_mask", PROPERTY_HINT_LAYERS_3D_RENDER), "set_visual_layer_mask", "get_visual_layer_mask"); ADD_GROUP("Entities", "entity_"); ADD_PROPERTY(PropertyInfo(Variant::BOOL, "entity_common", PROPERTY_HINT_NONE, "Common Entities"), "set_entity_common", "get_entity_common"); @@ -141,6 +144,16 @@ String TBLoader::get_skip_texture_name() return m_skip_texture_name; } +uint32_t TBLoader::get_visual_layer_mask() +{ + return m_visual_layer_mask; +} + +void TBLoader::set_visual_layer_mask(uint32_t visual_layer_mask) +{ + m_visual_layer_mask = visual_layer_mask; +} + void TBLoader::set_entity_common(bool enabled) { m_entity_common = enabled; diff --git a/src/tb_loader.h b/src/tb_loader.h index 5b4f592..cef83d3 100644 --- a/src/tb_loader.h +++ b/src/tb_loader.h @@ -28,6 +28,7 @@ class TBLoader : public Node3D String m_entity_path = "res://entities"; String m_clip_texture_name = ""; String m_skip_texture_name = ""; + uint32_t m_visual_layer_mask = 1; protected: static void _bind_methods(); @@ -57,6 +58,8 @@ class TBLoader : public Node3D String get_clip_texture_name(); void set_skip_texture_name(const String& skip_texture); String get_skip_texture_name(); + uint32_t get_visual_layer_mask(); + void set_visual_layer_mask(uint32_t visual_layer_mask); // Entities void set_entity_common(bool enabled);