From cc1f7ecd76c6c314df865c08947a4e4aaebba656 Mon Sep 17 00:00:00 2001 From: Garux Date: Fri, 12 Jun 2020 20:41:27 +0300 Subject: [PATCH] * new filter: Point Entities (nongroup entities besides misc_models and lights) --- include/ifilter.h | 5 +++-- plugins/entity/entity.cpp | 13 +++++++++++++ radiant/filterbar.cpp | 1 + radiant/filters.cpp | 2 ++ 4 files changed, 19 insertions(+), 2 deletions(-) diff --git a/include/ifilter.h b/include/ifilter.h index f75a217a..c5e2715d 100644 --- a/include/ifilter.h +++ b/include/ifilter.h @@ -40,14 +40,15 @@ enum EXCLUDE_MODELS = 0x00000800, EXCLUDE_AREAPORTALS = 0x00001000, EXCLUDE_TRIGGERS = 0x00002000, - EXCLUDE_CLUSTERPORTALS = 0x00004000, + EXCLUDE_CLUSTERPORTALS = 0x00004000, EXCLUDE_TERRAIN = 0x00008000, EXCLUDE_LIGHTGRID = 0x00010000, EXCLUDE_STRUCTURAL = 0x00020000, EXCLUDE_BOTCLIP = 0x00040000, EXCLUDE_VISPORTALS = 0x00080000, EXCLUDE_DECALS = 0x00100000, - EXCLUDE_FUNC_GROUPS = 0x00200000, + EXCLUDE_FUNC_GROUPS = 0x00200000, + EXCLUDE_POINT_ENT = 0x00400000, }; class Filter diff --git a/plugins/entity/entity.cpp b/plugins/entity/entity.cpp index c2352266..60adceff 100644 --- a/plugins/entity/entity.cpp +++ b/plugins/entity/entity.cpp @@ -396,6 +396,18 @@ bool filter( const Entity& entity ) const { filter_entity_world g_filter_entity_world; +class filter_entity_point : public EntityFilter +{ +public: +bool filter( const Entity& entity ) const { + return !entity.isContainer() + && !entity.getEntityClass().miscmodel_is + && !string_equal_prefix( entity.getEntityClass().name(), "light" ); +} +}; + +filter_entity_point g_filter_entity_point; + #include "qerplugin.h" void Entity_InitFilters(){ @@ -406,6 +418,7 @@ void Entity_InitFilters(){ add_entity_filter( g_filter_entity_not_func_detail, EXCLUDE_STRUCTURAL ); } add_entity_filter( g_filter_entity_world, EXCLUDE_ENT, true ); + add_entity_filter( g_filter_entity_point, EXCLUDE_POINT_ENT ); add_entity_filter( g_filter_entity_trigger, EXCLUDE_TRIGGERS ); add_entity_filter( g_filter_entity_misc_model, EXCLUDE_MODELS ); add_entity_filter( g_filter_entity_doom3model, EXCLUDE_MODELS ); diff --git a/radiant/filterbar.cpp b/radiant/filterbar.cpp index 632e7d6f..b78ee78e 100644 --- a/radiant/filterbar.cpp +++ b/radiant/filterbar.cpp @@ -152,6 +152,7 @@ GtkToolbar* create_filter_toolbar(){ //toolbar_append_toggle_button( toolbar, "Paths (ALT + 8)", "texture_lock.png", "FilterPaths" ); toolbar_append_space( toolbar ); toolbar_append_toggle_button( toolbar, "Entities (ALT + 2)", "f-entities.png", "FilterEntities" ); + toolbar_append_toggle_button( toolbar, "Point Entities", "status_entiy.png", "FilterPointEntities" ); toolbar_append_toggle_button( toolbar, "Lights (ALT + 0)", "f-lights.png", "FilterLights" ); toolbar_append_toggle_button( toolbar, "Models (SHIFT + M)", "f-models.png", "FilterModels" ); diff --git a/radiant/filters.cpp b/radiant/filters.cpp index 840e5515..bf34d89c 100644 --- a/radiant/filters.cpp +++ b/radiant/filters.cpp @@ -206,6 +206,7 @@ void Filters_constructMenu( GtkMenu* menu_in_menu ){ create_check_menu_item_with_mnemonic( menu_in_menu, "Decals", "FilterDecals" ); } create_check_menu_item_with_mnemonic( menu_in_menu, "FuncGroups", "FilterFuncGroups" ); + create_check_menu_item_with_mnemonic( menu_in_menu, "Point Entities", "FilterPointEntities" ); // filter manipulation menu_separator( menu_in_menu ); create_menu_item_with_mnemonic( menu_in_menu, "Invert filters", "InvertFilters" ); @@ -254,6 +255,7 @@ void ConstructFilters(){ add_filter_command( EXCLUDE_DECALS, "FilterDecals", Accelerator( 'D', GDK_SHIFT_MASK ) ); } add_filter_command( EXCLUDE_FUNC_GROUPS, "FilterFuncGroups", accelerator_null() ); + add_filter_command( EXCLUDE_POINT_ENT, "FilterPointEntities", accelerator_null() ); PerformFiltering(); }